如何管理开启了双向同步(M-M)的服务器集群_冲突排查与连接

阿宇同学_9660

阿宇同学_9660

2026-04-28

1016人浏览

原创

主主同步中断后应先确认server_id,再比对双方MASTER STATUS与SLAVE STATUS的File/Position及Exec_Master_Log_Pos,结合Relay_Log_Space增长、pt-heartbeat延迟和GTID位点综合判断数据丢失方。

MySQL 主主同步断开后怎么快速判断哪边丢了数据

主主同步(m-m)一旦中断,不能默认两边数据一致。最直接的办法是比对 show master status 和 show slave status 里的位点,但要注意:这些值只反映复制线程的「当前位置」,不等于「实际已执行的数据变更」。

  • 先在两台服务器上分别执行 SELECT @@server_id,确认身份,避免看反
  • 在 A 机上查 SHOW MASTER STATUS 得到 File 和 Position;再查 SHOW SLAVE STATUS\G,重点看 Master_Host 是否指向 B,以及 Read_Master_Log_Pos 和 Exec_Master_Log_Pos 是否停滞
  • 在 B 机上做同样操作,但方向反过来。如果 A 的 Exec_Master_Log_Pos 停在某个位置,而 B 的 Master_Position 已经更靠后,说明 A 落后了
  • 别信 Seconds_Behind_Master:它在 IO 线程卡住或 relay log 损坏时会显示 NULL 或 0,完全不可靠

INSERT 冲突导致同步中断,错误日志里看到 “Duplicate entry” 怎么修

这是 M-M 最典型的死锁场景:两边同时插入相同主键,其中一个被拒绝,SQL 线程报错停摆。关键不是“怎么跳过”,而是“为什么能插出重复”。

  • 检查是否用了自增主键:auto_increment_increment 和 auto_increment_offset 必须配对设置,比如 A 设为 increment=2, offset=1,B 就得是 increment=2, offset=2,否则必然撞
  • 不要手动改 auto_increment 值,尤其不要用 ALTER TABLE ... AUTO_INCREMENT=xxx,它不跨实例同步,下次插入就可能重复
  • 修复时别用 SET GLOBAL sql_slave_skip_counter=1 —— 它跳的是 event,不是语句,容易跳过不该跳的更新。优先用 STOP SLAVE; SET GTID_NEXT='...'; BEGIN; COMMIT; SET GTID_NEXT='AUTOMATIC'; START SLAVE;(如果是 GTID 模式)
  • 如果非 GTID,且冲突简单,可用 INSERT ... ON DUPLICATE KEY UPDATE 改写业务逻辑,把“必须插入”变成“有则更新”,从源头避开

连接反复断开,Lost connection to MySQL server during query 是网络问题还是配置问题

这个错误看着像网络抖动,但在 M-M 架构里,大概率是 max_allowed_packet 或 wait_timeout 不一致导致的假性断连。

  • 两台服务器的 max_allowed_packet 必须完全相等,否则大事务在 A 上能提交,在 B 上解析失败,IO 线程直接断开,日志里只写 “error reading packet”
  • wait_timeout 和 interactive_timeout 不影响复制本身,但会影响监控脚本、备份工具等间接连接。如果它们连着主库查状态,超时后重连可能触发复制线程误判
  • 检查 slave_net_timeout:默认 3600 秒太长,建议调成 60。它控制的是 SQL 线程多久没收到新 event 就主动断开重连,设太大会掩盖真实延迟
  • 抓包看 TCP 层:如果 tcpdump 显示 FIN 包来自 MySQL 进程(不是中间设备),基本可锁定是服务端主动断开,不是网络问题

如何验证当前同步是否真正在跑,而不是“看起来在跑”

很多运维看到 Slave_IO_Running: Yes 和 Slave_SQL_Running: Yes 就以为没问题,其实这两项只代表线程活着,不代表数据在流动。

  • 对比 Relay_Log_Space:持续增长说明 IO 线程在收日志;长时间不变,说明上游没新日志,或者网络/权限阻塞了拉取
  • 看 Seconds_Behind_Master 的变化趋势,不是单次值。如果它缓慢爬升又突然归零,可能是 SQL 线程在重放一个大事务,期间不更新该字段
  • 用 pt-heartbeat 工具打时间戳表,比原生指标靠谱得多。它每秒写一条带当前时间的记录,从从库读出来算差值,结果是真实延迟
  • 注意 binlog 格式:如果用了 MIXED 或 STATEMENT,某些函数(如 NOW()、UUID())在从库执行结果不同,表面同步成功,实际数据已偏移

双向同步的脆弱性不在配置多难,而在所有环节都要求“两边绝对对称”。少改一个参数、漏查一次位点、忽略一行日志里的 warning,都可能让问题拖到故障爆发才暴露。

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
服务器是什么
服务器是什么

服务器是一种计算机硬件设备或软件程序,它具有强大的计算和存储能力,用请求、存储数据和提供服务。它在互联网中着关重要的作用,为用户提供各种服务和资源。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.15

437

5

连接apple id服务器时出错
连接apple id服务器时出错

连接apple id服务器时出错的原因包括网络连接问题、服务器问题、Apple ID账户问题、设备问题、防火墙或安全软件问题、时间和日期设置问题、Apple服务器维护等。本专题为大家提供apple id相关的文章、下载、课程内容,供大家免费下载体验。

2023.09.08

900

5

搭建互联网服务器
搭建互联网服务器

搭建互联网服务器需要:1、选择合适的硬件和操作系统,第一步是选择合适的硬件和操作系统;2、安装和配置操作系统,是搭建互联网服务器的关键步骤;3、安装和配置服务器软件,是搭建互联网服务器的下一步,常见的服务器软件包括Apache、Nginx、Tomcat等;4、配置防火墙和安全性,是搭建互联网服务器的重要步骤;5、域名解析和配置,是搭建互联网服务器的最后一步。

2023.09.19

2772

5

如何查看服务器状态
如何查看服务器状态

查看服务器状态的方法有使用命令行工具、图形界面工具、监控工具、日志文件和远程管理工具等。本专题为大家提供服务器状态相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.09

936

5

服务器域名转接慢怎么解决
服务器域名转接慢怎么解决

服务器域名转接慢的解决办法有DNS优化、服务器优化、CDN加速、前端优化和网络优化等。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.17

829

5

服务器评测软件
服务器评测软件

服务器评测软件有PassMark Software、CPU-Z、GPU-Z、CrystalDiskMark、IOmeter、JMeter、LoadRunner、Apache Bench等等。详细介绍:1、PassMark Software是一款综合性的服务器性能测试软件,可以评估服务器在各种负载条件下的性能;2、CPU-Z是一款可以提供服务器CPU详细信息的软件等等。

2023.10.17

414

3

如何开启TFTP服务器
如何开启TFTP服务器

开启TFTP服务器的步骤包括选择TFTP服务器软件、下载和安装软件、配置TFTP服务器以及启动和测试服务器等。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.18

2496

4

服务器负载不兼容怎么解决
服务器负载不兼容怎么解决

解决方法:1、增加服务器资源;2、负载均衡;3、优化应用程序;4、增加缓存机制;5、分布式架构;6、限流和熔断;7、自动化扩容。想知道更详细服务器负载不兼容的解决方法,可以访问本专题下面的文章。

2023.10.20

4632

4

宽带如何接入服务器
宽带如何接入服务器

宽带接入服务器的方法有ADSL宽带接入服务器、光纤接入服务器、无线接入服务器和以太网接入服务器等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.20

747

5

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
phpStudy极速入门视频教程
phpStudy极速入门视频教程

共6课时 | 54.6万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时 | 133.4万人学习