225_mysql_复制技术_复制拓扑调整_一主二从_级联复制
【摘要】 复制拓扑调整
1 传统模式下
1.1 传统复制下 并行复制 改 串行复制
Master1 – slave1; master-slave2 à master1-slave1-slave2
1 查看slave 状态
slave1&2 show slave status\G
2 从库创建工具表(用SUPER权限用户操作)
slave1 & 2
set @@global.super_read_only="OFF"
SET sql_log_bin=0; create database test1;
3 主库创建工具表待slave报错
master: create database test1;
slave1&2: show slave status \G; #LAST_ERROR & LAST_SQL_ERROR
Select * from perfomance_schema.replication_applier_status_by_worker where LAST_ERROR_MESSAGE != ""\G;
4 准备切slave2的主为slave1
slave1: show slave status \G; # FILE & POSITION & EXECUTED_GTID_SET
Slave2: stop slave ;
reset slave all;
change master to master_host = slave1, master_user="repl", master_password="xxx", master_port="3306",master_log_file="file",master_log_pos="position"
start slave
show slave status \G
slave1&slave2 : set sql_log_bin=0; drop database test1;
5 重启slave1 SQL线程, 删除master工具库
slave1 : start slave sql_thread;
show slave status \G;
master: drop database test1;
show create database test1\G;
6 pt_table_checksum 检验主从数据一致性;业务低峰期
pt_table_checksum h="localhost" , u="admin", p="password", P=3306, --database="db_name" --nocheck-replication-filters --replicate=test.checksums --no-check-binlog-format
1.2串行复制改为并行复制
Master1-slave1-slave2 à master1-slave1; master1-slave2
1 查看slave1&2 状态
slave1&2 show slave status\G # 确保主备复制状态正常
slave1 : stop slave sql_thread;
# relay_master_log_file: 相对master1来说 slave1应用到哪个binlog文件 (file_master)
# exec_master_log_pos: 相对master1来说,slave1应用到哪个binlog文件的哪个position (file_master_position)
2 操作slave2 变更主为 slave1
slave2: show slave status\G
# 要确保 relay_master_log_file = master_log_file 说明SQL重放文件与 IO接到的文件相同
# 要确保 exec_master_log_pos = read_master_log_pos 说明SQL重放文件的位置与IO接到文件位置相同
stop slave
reset slave all;
change master to master_host = master1, master_user="repl", master_password="xxx", master_port="3306",master_log_file="file_master",master_log_pos="file_master_position"
start slave;
show slave status \G;
3 重启slave1
slave1: start slave sql_thread;
show slave status \G;
4 pt_table_checksum 检验主从数据一致性;业务低峰期
pt_table_checksum h="localhost" , u="admin", p="password", P=3306, --database="db_name" --nocheck-replication-filters --replicate=test.checksums --no-check-binlog-format
2 GTID 复制模式下
2.1 并行复制 改为 串行复制
Master1 – slave1; master-slave2 à master1-slave1-slave2
1 查看slave1&2 状态
slave1&2 show slave status\G # 确保主备复制状态正常
slave1 : show slave status\G
# retrieved_gtid_set: slave1 IO线程从master1收到的GTID_SET信息 (I/0-server_uuid: transaction_id)
# executed_gtid_set: slave1 SQL线程应用到基于某个binlog的 GTID_SET (SQL-server_uuid: transaction_id)
# Auto_position: 1 # 表示开启自动定位功能
2 操作slave2 变更主为 slave1
slave2: show slave status\G # 确保SQL/IO线程正常 Yes
stop slave
reset slave all;
# 指向slave1
change master to master_host = slave1, master_user="repl", master_password="xxx", master_port="3306", master_auto_position;
start slave;
show slave status \G; #待slave 追上 master1
2.2 串行复制 改为并行复制
Master1-slave1-slave2 à master1-slave1; master1-slave2
1 查看slave1&2 状态
slave1&2 show slave status\G # 确保主备复制状态正常
slave1 : show slave status\G
# retrieved_gtid_set: slave1 IO线程从master1收到的GTID_SET信息 (I/0-server_uuid: transaction_id)
# executed_gtid_set: slave1 SQL线程应用到基于某个binlog的 GTID_SET (SQL-server_uuid: transaction_id)
# Auto_position: 1 # 表示开启自动定位功能
2 操作slave2 变更主为 master1
slave2: show slave status\G # 确保SQL/IO线程正常 Yes
stop slave
reset slave all;
# 指向master1
change master to master_host = master1, master_user="repl", master_password="xxx", master_port="3306", master_auto_position;
start slave;
show slave status \G; #待slave 追上 master1
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)