Mysql主从切换
一、主从切换
n 1 环境准备
[root@mysqlserver ~]# cat /etc/redhat-release
CentOS release 6.6 (Final)
实验拓扑如下:
n 2 过程模拟实现
n 2.1 主库锁表(GTID中主库设置全局只读)
mysql> set @@global.read_only=ON;
n 2.2 从库停止slave模式,创建授权用户,此时从库已经变为主库。
注意:如果几个从库的server-id一样,当其中一个从库切换为主库时,其余从库的server-id应该修改为主库不一样即可,否则同步失败。
mysql> set global validate_password_policy=0;
mysql> grant replication slave on *.* toli@'192.168.200.%' identified by 'abc123ABC';
n 2.3 “主库”解除锁表。
mysql> set @@global.read_only=OFF;
n 2.4 “主库”(实际上是从库)用change master to连接”从库”(实际上是主库)
mysql> change master tomaster_host='192.168.200.136',master_user='li',master_password='abc123ABC',master_auto_position=1;
mysql> show slave status\G;
如果之前是从库,而现在仍然是从库,需要先关闭从库,最好重置下。
mysql> resetslave;
mysql> changemaster tomaster_host='192.168.200.136',master_user='li',master_password='abc123ABC',master_auto_position=1;
mysql> startslave;
mysql> showslave status\G;
二、主宕从换为主
如果主库宕掉,从库可以直接切换为主库,实现方法和上述类似。
n 1 “从库”(需要马上切换为主库的从库)创建授权用户
mysql> stop slave;
mysql> set global validate_password_policy=0;
mysql> grant replication slave on *.* toli@'192.168.200.%' identified by 'abc123ABC';
n 2 从库使用change master to连接主库
mysql> stop slave;
mysql> reset slave;
mysql> change master tomaster_host='192.168.200.136',master_user='li',master_password='abc123ABC',master_auto_position=1;
mysql> start slave;
mysql> show slave status\G;
如果从库的server-id都一样,则需要更改server-id,使得主从的server-id必须不一致。一样则不需要更改。