MySQL进阶运维与架构从主从复制到链式复制

举报
Ustinian_2022 发表于 2022/07/27 18:03:48 2022/07/27
【摘要】 31.4 切换主从复制到链式复制MySQL中的链式复制模式是指多个MySQL数据库实例之间呈现链状结构,即A数据库是B数据库的主库,B数据库又是C数据库的主库,此时,B数据库又叫作中继从库。31.4.1 服务器规划将MySQL主从复制模式切换到链式复制模式后的服务器规划如表31-4所示。表31-4 MySQL链式复制模式的服务器规划链式复制模式示意图如图31-4所示。图31-4 链式复制模式...

31.4 切换主从复制到链式复制

MySQL中的链式复制模式是指多个MySQL数据库实例之间呈现链状结构,即A数据库是B数据库的主库,B数据库又是C数据库的主库,此时,B数据库又叫作中继从库。


31.4.1 服务器规划

将MySQL主从复制模式切换到链式复制模式后的服务器规划如表31-4所示。

表31-4 MySQL链式复制模式的服务器规划

链式复制模式示意图如图31-4所示。

图31-4 链式复制模式示意图


31.4.2 切换复制模式

(1)在binghe153服务器上停止MySQL从库的运行,并查看Relay_Master_Log_File和Exec_Master_Log_Pos的值。


mysql> STOP SLAVE;
Query OK, 0 rows affected (0.00 sec)
mysql> SHOW SLAVE STATUS \G     
*************************** 1. row ***************************
               Slave_IO_State: 
                  Master_Host: 192.168.175.151
                  Master_User: binghe153
                  Master_Port: 3306
              Relay_Master_Log_File: mysql-bin.000007
          Exec_Master_Log_Pos: 6299
#################省略部分输出结果########################

结果显示,在binghe153服务器上的Relay_Master_Log_File为mysql-bin.000007,Exec_Master_Log_Pos的值为6299。

(2)在binghe152服务器上停止MySQL从库的运行,并查看Relay_Master_Log_File和Exec_Master_Log_Pos的值。


mysql> STOP SLAVE;
Query OK, 0 rows affected (0.00 sec)
mysql> SHOW SLAVE STATUS \G
*************************** 1. row ***************************
               Slave_IO_State: 
                  Master_Host: 192.168.175.151
                  Master_User: binghe152
                  Master_Port: 3306
        Relay_Master_Log_File: mysql-bin.000007
          Exec_Master_Log_Pos: 6638

结果显示,binghe152服务器上的Relay_Master_Log_File为mysql-bin.000007,Exec_Master_Log_Pos的值为6638。由此说明binghe152服务器上的MySQL数据库的数据与binghe153服务器上的MySQL数据库中的数据不一致。也就是说,在停止binghe153服务器上的MySQL从库后,binghe152服务器上的MySQL从库又同步了MySQL主库的数据。此时,需要将两个从库的数据进行同步。

注意:如果两个从库的Relay_Master_Log_File和Exec_Master_Log_Pos的值均相同,则说明两个从库中的数据是同步的,不需要进行从库的数据同步操作,可以省略下面的第(3)步和第(4)步。

(3)在binghe153服务器上,同步binghe152服务器上的MySQL数据。


mysql> START SLAVE UNTIL MASTER_LOG_FILE='mysql-bin.000007',
    -> Master_Log_Pos=6638;
Query OK, 0 rows affected, 1 warning (0.00 sec)

其中,参数Master_Log_Pos的值与binghe152服务器上的Exec_Master_Log_Pos的值相同。

(4)再次查看binghe153服务器上的从数据库运行状态。


mysql> SHOW SLAVE STATUS \G
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 192.168.175.151
                  Master_User: binghe153
                  Master_Port: 3306
        Relay_Master_Log_File: mysql-bin.000007 
          Exec_Master_Log_Pos: 6638
Until_Log_Pos: 6638
Seconds_Behind_Master: NULL
##################省略部分输出结果信息#####################

binghe153服务器上的Relay_Master_Log_File的值为mysql-bin.000007,Exec_Master_Log_Pos的值为6638,Until_Log_Pos的值为6638,Seconds_Behind_Master的值为NULL,说明binghe153服务器上的MySQL数据已经和binghe152服务器上的MySQL数据同步。

(5)在binghe152服务器上创建从数据库同步的账户信息。


mysql> CREATE USER 'binghe153'@'192.168.175.153' IDENTIFIED BY 'binghe153';   
Query OK, 0 rows affected (0.11 sec)
mysql> ALTER USER 'binghe153'@'192.168.175.153' IDENTIFIED WITH mysql_native_password BY 'binghe153';  
Query OK, 0 rows affected (0.00 sec)
mysql> GRANT REPLICATION SLAVE ON *.* TO 'binghe153'@'192.168.175.153'; 
Query OK, 0 rows affected (0.00 sec)
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

(6)在binghe152服务器上,查看主库的状态。


mysql> SHOW MASTER STATUS;
+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000008 |     6578 |              |                  |                   |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)

结果显示,当前的二进制日志文件为mysql-bin.000008,位置坐标为6578。

(7)启动binghe152服务器上的从数据库,并确保从数据库的运行状态正常。


mysql> START SLAVE;
Query OK, 0 rows affected (0.04 sec)
mysql> SHOW SLAVE STATUS \G
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 192.168.175.151
                  Master_User: binghe152
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000007
          Read_Master_Log_Pos: 6638
               Relay_Log_File: relay-bin.000006
                Relay_Log_Pos: 322
        Relay_Master_Log_File: mysql-bin.000007
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes

(8)在binghe153服务器上,停止从数据库的运行,并将其主数据库指向binghe152服务器上的数据库。


mysql> STOP SLAVE;
Query OK, 0 rows affected (0.13 sec)
mysql> CHANGE MASTER TO MASTER_HOST='192.168.175.152', 
    -> MASTER_PORT=3306,
    -> MASTER_USER='binghe153',
    -> MASTER_PASSWORD='binghe153',
    -> MASTER_LOG_FILE='mysql-bin.000008',
    -> MASTER_LOG_POS=6578;
Query OK, 0 rows affected, 2 warnings (0.01 sec)

(9)在binghe153服务器上,启动从库的运行,并验证从库的运行状态。


mysql> START SLAVE;
Query OK, 0 rows affected (0.01 sec)
mysql> SHOW SLAVE STATUS \G
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 192.168.175.152
                  Master_User: binghe153
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000008
          Read_Master_Log_Pos: 6578
               Relay_Log_File: relay-bin.000002
                Relay_Log_Pos: 322
        Relay_Master_Log_File: mysql-bin.000008
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes

由输出结果可知,binghe153服务器上的MySQL从库的运行状态正常。

此时,binghe153服务器上的MySQL的主库为binghe152服务器上的MySQL数据库,说明MySQL的复制模式已经成功从主从模式切换为链式模式。

说明:链式复制模式的测试方式与31.3.3节中的测试方式相同,不再赘述。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。