ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

mysql 复制架构变更方法

2021-12-30 16:34:53  阅读:121  来源: 互联网

标签:status slave Log 复制 Master mysql 架构


mysql 复制架构变更方法

DB角色:

主 库:A

从库1:B

从库2:C

一主两从变成级联复制

架构:

image-20210429141013150

具体过程如下:

原架构:
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库就可以了。

级联复制变成一主两从

image-20210429134752614

#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 #进行检查完成。

标签:status,slave,Log,复制,Master,mysql,架构
来源: https://www.cnblogs.com/zengqingwei/p/15749402.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有