--从节点停止同步
[root@localhost ~]# mysql -uroot -p密码
mysql> stop slave;
mysql> reset slave all;
mysql> show slave status \G
mysql>
确定主从复制关系清理完成。
--主节点发起新的备份:
[root@localhost ~]# mysql -uroot -p密码
mysql> show processlist;
mysql> select * from information_schema.innodb_trx \G
[root@localhost ~]# mysqldump -A -E -R --triggers --default-character-set=utf8 -uroot -p'密码' --max_allowed_packet=2048M --single-transaction --master-data=2 --hex-blob > /data/mysqlbackup/日期.sql
参数说明:
--all-databases等价于-A
--events等价于-E,在输出中包含所转储数据库的事件调度器
--routines等价于-R,在输出中包含所转储数据库的存储过程(procedures和functions)
--triggers,包含每一个转储表的触发器
备份历时:根据数据量约1个小时左右
--验证备份完成
[root@localhost ~]# cd /data/mysqlbackup/
[root@localhost mysqlbackup]# tail -n 10 /data/mysqlbackup/日期.sql
--传输到从节点路径下
[root@localhost mysqlbackup]# scp -P <SSH端口号> 日期.sql <从节点IP>:/data/mysqlbak
传输历时:根据备份大小约10几分钟
--从节点执行备份恢复:
mysql -uroot -p密码
--设置为允许特权账号读写:
mysql> show variables like 'super_read_only';
mysql> set global super_read_only=0;
mysql> show variables like 'super_read_only';
--执行备份恢复:
[root@localhost ~]# mysql -uroot -p < /data/mysqlbak/日期.sql
密码
备份恢复历时:根据数据量约几个小时
--观察恢复状态:
mysql> show processlist;
mysql> select * from information_schema.innodb_trx \G
--从节点重新设置为只读:
mysql> set global super_read_only=1;
mysql> show variables like 'super_read_only';
[root@localhost ~]# more /data/mysqlbak/日期.sql中的前面几行获取以下内容:
-- CHANGE MASTER TO MASTER_LOG_FILE='<mysqlbin文件名>', MASTER_LOG_POS=<位置编码>;
记录:
MASTER_LOG_FILE:
MASTER_LOG_POS:
--从节点中设置主节点信息:
mysql> CHANGE MASTER TO
MASTER_HOST= '<主节点IP地址>', --修改
MASTER_PORT= <主节点端口>, --修改
MASTER_LOG_FILE= '<MASTER_LOG_FILE>', --修改
MASTER_USER= '<主从同步账号>', --修改
MASTER_PASSWORD= '<密码>', --修改
MASTER_LOG_POS= <MASTER_LOG_POS>; --修改
--启动从节点同步:
mysql> start slave;
mysql> show slave status \G
--主节点查看状态:
(root@localhost)[(none)]-->show master status;
需要保障:
SLAVE_SQL_running和slave_io_running状态为yes
主节点File = 从节点Master_Log_File = 从节点Relay_Master_Log_File
主节点Position = 从节点Read_Master_Log_Pos = 从节点Exec_Master_Log_Pos
从节点Seconds_Behind_Master理想状态值为0
--主从节点分别执行表对比:
mysql> select count(*) from 数据库.表名称;
mysql> select * from 数据库.表名称 \G
验证完成,同步恢复完成。