mysql 复制架构变更方法
2021/12/31 2:08:54
本文主要是介绍mysql 复制架构变更方法,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
mysql 复制架构变更方法
DB角色:
主 库:A 从库1:B 从库2:C
一主两从变成级联复制
架构:
具体过程如下:
原架构: A 主库 B 从库1 C 从库2 修改为: A 主库 B 从库1(是C的Master) C 从库2 #1. 先停掉C的复制,stop slave;并查看c的复制进度。 # 过段时间查看B的复制进度,超过C的复制进度就可以停B库的复制进度。 #2.停掉B库的复制进度后,查看b库的show master status;并查看他对于A库的复制进度 #之后,就可以重新启动B库的复制了,这个时候, #3.在C库上操作,他现在主库是A库,从新开启A库的复制进程,应用binlog到B库停止时候的复制进度为止, #语句是:start slave until master_log_file='tex-bin.003882',master_log_pos=322474479; mysql> start slave until master_log_file='mysql-bin.000047',master_log_pos=12856918; Query OK, 0 rows affected (17.10 sec) #这样B库和C库在B库停止那个时间点,数据是一致的。 #4.在C库上重新变更主库 #io线程还在工作,sql线程已经停止,所有都停止下复制进程。 mysql> stop slave; #之后停止复制,之后 mysql> reset slave #5.change到B库上,因为b库在停止时候查看了2个进度一个是对于A库的复制进度,还有一个是本身的master状态,这个时候正好给C库用上, #之后就可以正常进行级联复制了。 CHANGE MASTER TO MASTER_HOST='10.204.11.203', #B库的ip MASTER_USER='repl', MASTER_PASSWORD='******', MASTER_PORT=3994, MASTER_LOG_FILE='mysql-bin.000005', #b库上显示的show master status文件号 MASTER_LOG_POS=154; #b库上显示的show master status pos号。 #对比语句 #C库 [root@d11092377 ~]# goto3991 -e"show slave status\G" 2>/dev/null|grep "Master_Log_" Master_Log_File: mysql-bin.000003 #寻找的C库现在进度 Read_Master_Log_Pos: 154 Relay_Master_Log_File: mysql-bin.000003 Exec_Master_Log_Pos: 154 #C库现在进度 #b库 [root@d16090074 mysql]# goto3991 -e"show slave status\G" 2>/dev/null|grep "Master_Log_" Master_Log_File: mysql-bin.000003 Read_Master_Log_Pos: 154 Relay_Master_Log_File: mysql-bin.000003 Exec_Master_Log_Pos: 154 这这个时候,两个库的复制进度一样,也就是进度一致,省的执行C库追赶操作。 直接查看B库现在的master status。 [root@d16090074 mysql]# goto3991 -e"show master status;" 2>/dev/null +------------------+----------+--------------+------------------+-------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set | +------------------+----------+--------------+------------------+-------------------+ | mysql-bin.000003 | 154 | | | | +------------------+----------+--------------+------------------+-------------------+ 在C库直接reset slave;之后change 到b库就可以了。
级联复制变成一主两从
#1.在B库上执行 goto3994 -e" stop slave SQL_THREAD;" Query OK, 0 rows affected (0.01 sec) goto3994 -e"show slave status\G" 2>/dev/null|grep "Master_Log_" #获取停止应用SQL时候A库的复制进度。 goto3994 -e"show slave status\G" 2>/dev/null |grep "_Running:" #确认复制进程关闭了SQL进程。 #2.在C库上执行 goto3994 -e"show slave status\G" 2>/dev/null |grep "_Running:" goto3994 -e"show slave status\G" 2>/dev/null|grep "Master_Log_" [root@d11092377 ~]# goto3994 -e"show slave status\G" 2>/dev/null|grep "Master_Log_" Master_Log_File: mysql-bin.000005 #获取进度 Read_Master_Log_Pos: 980 Relay_Master_Log_File: mysql-bin.000005 Exec_Master_Log_Pos: 980 #获取pos号 #3.查看B库和C库的复制进度一样的时候,进行change修改。 #4.在B库上执行再次确认复制进度 goto3994 -e"show slave status\G" 2>/dev/null|grep "Master_Log_" #获取停止应用SQL时候A库的复制进度。 goto3994 -e"show slave status\G" 2>/dev/null |grep "_Running:" #确认复制进程关闭了SQL进程。 #5.开始进程切换 #在C库上执行 goto3994 -e"show master status;" 2>/dev/null #确认复制进度赶上B库的进度。因为此时B库是静止的,所以应该很好追赶。 goto3994 -e"stop slave;" goto3994 -e"reset slave;" goto3994 mysql> CHANGE MASTER TO MASTER_HOST='10.204.11.203', #A库的ip MASTER_USER='repl', MASTER_PASSWORD='******', MASTER_PORT=3994, MASTER_LOG_FILE='mysql-bin.000005', #b库上显示的A库的复制进度 文件号 MASTER_LOG_POS=154; #b库上显示的A库的复制进度 pos号 start slave; select sleep(1); show slave status\G #进行检查完成。
这篇关于mysql 复制架构变更方法的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-10-23BinLog入门:新手必读的MySQL二进制日志指南
- 2024-10-23Binlog入门:MySQL数据库的日志管理指南
- 2024-10-22MySQL数据库入门教程:从安装到基本操作
- 2024-10-22MySQL读写分离入门教程:轻松实现数据库性能提升
- 2024-10-22MySQL分库分表入门教程
- 2024-10-22MySQL慢查询的诊断与优化指南
- 2024-10-22MySQL索引入门教程:快速理解与应用指南
- 2024-10-22MySQL基础入门教程:从安装到基本操作
- 2024-10-22MySQL数据库中的Binlog详解与操作教程
- 2024-10-12部署MySQL集群项目实战:新手入门教程