Mysql主从复制手动切换步骤

本文介绍了MySQL主从复制的计划性切换和故障切换步骤,包括关闭前端业务、执行FTWRL、从库确认复制延迟、执行切换、恢复新主和新从的复制同步。在切换过程中,涉及了清理连接线程、设置主库只读、检查主从数据一致性、重置从库信息等关键操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

与Oracle DataGuard切换原理类似,主、从复制也分为计划性切换和故障切换两种方式。其中,计划性切换的关键步骤如下列所示,而故障切换则更为简单,只需要单独执行下列的步骤4)即可实现。

1.关闭前端业务

为了尽量规避切换失败的风险,用户必须合理管控切换流程。在切换之前建议先停止前端应用,待程序停止完毕,再检查MySQL数据库中是否仍有残留的外部会话连接。确认清楚后再参考以下命令清理相关线程。

强制断开与MySQL实例交互的所有连接线程,注意其中不包括当前线程:

shell> mysqladmin -uroot -p processlist|awk -F "|" '{print $2}'|sed '/^$/d'| \

       sed '1d;$d'|tr "\n" ","|sed 's/[[:space:]]//g;s/,$/\n/'|xargs \

       mysqladmin -uroot -p kill

如果出于某些原因不能杀掉全部连接,那么可以根据数据库用户或访问终端进行精确匹配,并将指定的线程断开:

shell> mysqladmin -uroot -p processlist|awk -F "|" '{if($3~/user1|user2/) print $2}'\

       |tr "\n" ","|sed 's/[[:space:]]//g;s/,$/\n/'|xargs mysqladmin -uroot -p kill

或者

shell> mysqladmin -uroot -p processlist|awk -F "|" '{if($4~/host1|host2/) print $2}'\

       |tr "\n" ","|sed 's/[[:space:]]//g;s/,$/\n/'|xargs mysqladmin -uroot -p kill

说明:进行精确匹配的数据库用户和访问终端可以是一个也可以是多个。

在某些极端情况下,主、从节点可能会因为I/O线程出现瓶颈而导致复制延时。在该场景下,暴力断开连接时需要保留主库上的Binlog Dump线程,可参考下列命令进行规避:

shell> mysqladmin -uroot -p processlist|awk -F "|" '{if($6!~/Binlog Dump/) \

       print $2}'|sed '/^$/d'| sed '1d;$d'|tr "\n" ","|sed 's/[[:space:]]//g;\

       s/,$/\n/'|xargs mysqladmin -uroot -p kill

2.主库执行FTWRL以禁止数据写入

在主节点执行全局读锁FTWRL,可以禁止任何数据写入。如果是在非GTID模式下,则需要记录当前二进制日志文件名和位置;如果是在GTID模式下,则需要记录当前已经执行过的GTID。若担心当前持锁线程异常退出,则建议将主库设置为只读模式,之后可选择释放FTW

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值