您的位置:首页 > 数据库 > MySQL

一主多从快速变级联进行主从切换

2016-07-22 10:52 513 查看
背景需求模型

业务需求和性能影响,需将主库切换到新的服务器,并进行架构调整。

切换模型大概为:


       切换到


                          图1-1 一主多重模型 图1-2 切换前模型

最后再将主库254切换为40.完成切换。

简化模型:

我们需要做的是把一主多从逐步变为级联:



  图1-3 切换模型

操作步骤

1、在B机器上授权C机器的复制权限

<pre name="code" class="sql">mysql><span style="font-family: Arial, Helvetica, sans-serif;">GRANT REPLICATION SLAVE ON *.* TO rep@'C_IP' IDENTIFIED BY '$password';</span>


2、确认C机器已同步的位置

查看C机器的slave复制状态:

mysql>stop slave;
mysql>show slave status \G

记录此时C机器复制A主库的  Master_Log_File和 Exec_Master_Log_Pos: 位置;

3、记录B机器的位置

在从库B上执行show slave status \G;查看从库B上的Exec_Master_Log_Pos是否已经大于从库C上的Exec_Master_Log_Pos,如果大于,则执行stop slave停掉从库B的复制,这时需要记下从库B上的  Relay_Master_Log_File(B),Exec_Master_Log_Pos(B)两个值,在从库B上执行show
master status,记下BINLOG文件名字File(B)以及位置Position(B),然后start slave开启复制。

mysql>show slave status \G
mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.xxxxx | xxxxxx | | | |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)

确认B机器的的Exec_Master_Log_Pos,这里记得在B机器要先stop slave ,记录下  Relay_Master_Log_File(B),Exec_Master_Log_Pos(B),以及B机器的masterbinlog状态。然后再开启。

4、C机器追赶到B机器位置

通过前面三步骤,我们已经有了这些基本信息,那么就先在C机器执行命令追赶到B机器复制的位置,在C机器上操作:

mysql>start slave UNTIL MASTER_LOG_FILE ='B-Relay_Master_Log_File', MASTER_LOG_POS =B-Exec_Master_Log_Pos;

等待复制到我们设置的值,然后在C执行:
mysql>stop slave;


5、C复制指向B

前面步骤都确认没有问题后,我们开启C复制指向B的复制,这个时候就要利用之前我们记录C的masterbinlog位置信息了。简单的主从创建关系:

change master to master_host='B-IP',master_port=B-port,master_user='复制账号',master_password='复制密码',master_log_file='B-master-binlog',master_log_pos=b-masterpostion;


然后start slave开启复制!

6、重复执行以上步骤

达到1-2模型后,将254的读写请求切到40即完成了本次所有迁移操作。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息