MySQL三层主从复制切换

一、升级前准备工作:
1.确认配置文件是否为read_only
grep 'read_only' /etc/mysql/my.cnf

2.复制有没有不一致的情况
mysql -udbadmin -pconnect_vobile -e "show slave status \G" | grep "Replicate_Do_DB: \| Replicate_Ignore_DB: \| Replicate_Do_Table: \| Replicate_Ignore_Table: \| Replicate_Wild_Do_Table: \| Replicate_Wild_Ignore_Table:"

3.确认binlog是否正常开启
grep "log-bin \| log-slave-updates" /etc/mysql/my.cnf

4.关闭slave 自动启动
grep "skip-slave-start"  /etc/mysql/my.cnf

5.master的master是否对新master授权
show grants for repl

二、切换步骤:
1.在原master上操作
-- 停止从center vddb同步数据:
stop slave;
-- 记录最后从center vddb复制数据的位置,给后面新的master用:
show slave status \G

-- 将数据库置位只读,防止新数据写入:
set global read_only=1;


2.在原slave上操作:
-- 确认slave没有延时:
show slave status \G;
-- 确认read only是否开启:
show global variables like 'read_only';
-- 停止slave:
stop slave;
-- 将新master(原slave)指向master:
CHANGE MASTER TO MASTER_HOST='XXXX', MASTER_USER='XXXX', MASTER_PASSWORD='XXXX', MASTER_LOG_FILE='XXXX', MASTER_LOG_POS=XXXX;
-- 修改配置文件conf,确保只复制mddb,usermanager,mediaDNA表(此步骤需要根据实际情况)
vim /etc/mysql/my.cnf
-- 显示新master的日志点,给后面新slave(原master)用:
show master status;


3.通知sa切换域名。

4.在新master(原slave)上操作:
-- 关闭只读,允许应用程序写入数据:
set global read_only=off;
-- 开启复制,开始从center vddb同步数据
start slave;


5.在新master上(原slave)上执行
-- 修改复制源和位置:
CHANGE MASTER TO MASTER_HOST='XXXX', MASTER_USER='XXXX', MASTER_PASSWORD='XXXX', MASTER_LOG_FILE='XXXX', MASTER_LOG_POS=XXXX;
-- 修改mysql参数文件,保证复制、忽略的表正确,数据库被置为只读:
vim /etc/mysql/my.cnf
-- 开启复制:
start slave;


你可能感兴趣的:(mysql,主从切换,三层复制)