出现异常
收到告警,某个一主一从的库发生了主从异常,登录监控发现主从发生了切换,切换前B是主库,A是从库。现在状态是A主,B从。
登录库检查发现主从实际上是挂了,B实际并没有作为从库挂到A上,此时两个库都是read_only=on的状态。
排查原因
检查日志,发现网络波动,主从断开。
B库日志,B上接收不到从库返回,因此停止了binlog_dump进程
A库上IO线程和SQL线程异常
思考为什么新的主从没有搭建成功
检查两个库的GTID信息
发现原主B上 server_UUID 为
db**********************B 比A上的大,
且A上 server_UUID为dba*********************A 已经有新的gtid,且该UUID在B上并没有
说明断开后两个数据库都写入了新数据,此时数据不一致,A切换为新主后,
B上由于本身的GTID(server_UUID 为
db**********************B)比A大因此成为不了A的从库。
处理步骤
(1)先修复A上缺失的数据,
在A上执行
stop slave;CHANGE MASTER TOMASTER_HOST='B的host',MASTER_USER='B的同步用户',MASTER_PASSWORD='B的同步用户密码',MASTER_PORT=端口,MASTER_AUTO_POSITION=1;start slave ;
此时A上 db********************B 的GTID已经和B一致。
但是主从依然报错,因为server_UUID为dba**************A 的GTID B上还没有
(2)将主切换到A上,修复B缺失GTID
CHANGE MASTER TOMASTER_HOST='A的host',MASTER_USER='A的同步用户',MASTER_PASSWORD='A的同步用户密码',MASTER_PORT=端口,MASTER_AUTO_POSITION=1;start slave ;
(3)
此时主从报错1236
该拉取的GTID的binlog文件已经不存在了
(4)
核实缺失的binlog是否会导致业务数据丢失,如果不影响,执行下一步
(5)
跳过事务
在B上跳过事务
stop slave;
set sql_log_bin=off;
set gtid_next='';
BEGIN;
COMMIT;
SET GTID_NEXT='AUTOMATIC';
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
文章被以下合辑收录
评论
相关阅读
2025年4月中国数据库流行度排行榜:OB高分复登顶,崖山稳驭撼十强
墨天轮编辑部
1309次阅读
2025-04-09 15:33:27
【DBA坦白局】第一期:在小城市和一线城市做DBA,是“躺”还是“卷”?
墨天轮编辑部
1142次阅读
2025-04-10 14:17:22
Oracle Concepts(Oracle 19c):07 SQL
Ryan Bai
957次阅读
2025-04-09 10:57:11
2025年3月国产数据库大事记
墨天轮编辑部
736次阅读
2025-04-03 15:21:16
Oracle数据库常用的78个脚本,速来下载!
陈举超
593次阅读
2025-03-27 12:27:50
2025年3月国产数据库中标情况一览:TDSQL大单622万、GaussDB大单581万……
通讯员
532次阅读
2025-04-10 15:35:48
东方通 TongWeb 中间件入门指南: 轻松掌握从部署到认证
shunwah
496次阅读
2025-03-19 15:09:52
Oracle DBA 高效运维指南:高频实用 SQL 大全
Lucifer三思而后行
486次阅读
2025-03-28 21:52:03
如何利用Deepseek自动优化SQL并推送
潇湘秦
469次阅读
2025-03-28 10:02:33
征文大赛 |「码」上数据库—— KWDB 2025 创作者计划启动
KaiwuDB
458次阅读
2025-04-01 20:42:12