mysql主从切换的那些事(手动)

1.主从切换

因为数据库迁移、升级、主库停机维护等原因,需要将从库升为主,主要步骤如下:

1).主库
锁库,禁止写入
mysql> flush table with read lock;
确认Executed_Gtid_Set不再变化,并记录

mysql> show master status\G
*************************** 1. row ***************************
             File: mysql-bin.000008
         Position: 911270242
     Binlog_Do_DB: 
 Binlog_Ignore_DB: 
Executed_Gtid_Set: 46fd58fe-f74a-11e7-a4ba-005056b75d21:1-19772125

2).从库
确认主从Executed_Gtid_Set的最后事务一致

mysql> show slave status\G
            Executed_Gtid_Set: 46fd58fe-f74a-11e7-a4ba-005056b75d21:3118-19772125

3).主库
关闭mysql

4).从库

mysql> stop slave;
mysql> reset slave all;
mysql> reset master;
修改参数/etc/my.cnf
event_scheduler=1
read_only=0

启动从库


5).浮动IP

主:
ip addr del ${VIP}/24 dev ${DEV}
从:
ip addr add ${VIP}/24 dev ${DEV}
# 发送广播更新二层网络vip与mac对应关系
arping -I ${DEV} -c 1 ${VIP}
# 更新网关服务器上vip与mac对应关系缓存
arping -I ${DEV} -c 1 -s ${VIP} ${GATEWAY}

6).主库启动后,如果想变成从库,启动前必须修改参数再change master
event_scheduler=0
read_only=1

 

2.从库换主


一主多从的环境下,主切换到一个从后,其他从需要重新指向新的主

stop slave;

show slave status;
记录(一定要确保记录好)
Retrieved_Gtid_Set: 1a875f74-3be9-11e8-a430-0050568b4912:1528798611-1530719123
Executed_Gtid_Set: 1a875f74-3be9-11e8-a430-0050568b4912:1-1530719123,34e4af8d-ebc0-11e7-997b-0050568b382d:1-1566707

reset slave;

reset master;

将gtid_purged设置为Executed_Gtid_Set
某些情况下,Executed_Gtid_Set的gtid从n开始(n>1),gtid_purged需要调整为从1开始,避免该节点会从主节点寻找以前不需要、且已经被purge的binlog
set global gtid_purged='1a875f74-3be9-11e8-a430-0050568b4912:1-1530719123,34e4af8d-ebc0-11e7-997b-0050568b382d:1-1566707';

change master to master_host='new_master_ip',master_port=3306,master_user='username',master_password='password',master_auto_position=1;

 

你可能感兴趣的:(数据库)