MST

星途 面试题库

面试题:MySQL 中复制数据依赖性可能导致哪些常见问题及如何排查

在 MySQL 复制环境下,数据依赖性会产生一些问题影响数据一致性和复制性能。请阐述可能出现的常见问题,并说明你会通过哪些方法进行排查。
21.7万 热度难度
数据库MySQL

知识考点

AI 面试

面试题答案

一键面试

常见问题

  1. 主从数据不一致
    • 原因:网络延迟、复制线程异常、主库故障恢复后数据未同步等。例如主库在高并发写入时,从库可能因为网络不稳定无法及时获取二进制日志并应用,导致主从数据差异。
    • 影响:业务系统读取从库数据时可能获取到旧数据,影响业务逻辑,如电商库存显示不准确等。
  2. 复制延迟
    • 原因:从库硬件性能不足(如 CPU、磁盘 I/O 瓶颈)、主库负载过高产生大量二进制日志、复杂查询导致从库应用日志慢等。例如从库磁盘写入速度慢,不能及时将接收到的日志写入中继日志并应用。
    • 影响:数据不能及时在从库反映,实时性要求高的业务(如实时监控)无法从从库获取最新数据。
  3. 数据丢失
    • 原因:主库崩溃且二进制日志未完全同步到从库,或者在半同步复制环境下,部分确认机制未正确设置。例如主库崩溃时,一些已提交事务的二进制日志还在内存中未刷盘,且此时从库未收到这些日志。
    • 影响:业务数据永久性丢失,影响业务完整性,如订单数据丢失。

排查方法

  1. 主从数据不一致排查
    • 对比工具:使用 pt - table - checksum 工具,它会在主库和从库上分别计算表的校验和,然后对比是否一致。如果不一致,可进一步使用 pt - table - sync 工具进行修复。
    • 手工对比:对于关键表,可在主从库分别执行 SELECT COUNT(*) 查看记录数是否一致,再通过 SELECT * FROM table WHERE primary_key = 'xxx' 等方式对比特定记录。
  2. 复制延迟排查
    • SHOW STATUS 命令:在从库执行 SHOW STATUS LIKE 'Seconds_Behind_Master',该值表示从库落后主库的秒数。若数值较大,说明存在延迟。
    • 分析从库性能:通过系统工具(如 top 查看 CPU 使用率、iostat 查看磁盘 I/O 等)确定从库硬件是否存在瓶颈。同时查看从库 SHOW PROCESSLIST,检查是否有长时间运行的查询导致应用日志延迟。
    • 主库负载分析:在主库执行 SHOW GLOBAL STATUS LIKE 'Threads_running' 等命令查看主库负载情况,若主库负载过高,产生大量二进制日志,也可能导致从库延迟。
  3. 数据丢失排查
    • 二进制日志分析:在主库查看二进制日志文件,确定崩溃前已提交事务的日志记录是否完整。使用 mysqlbinlog 工具查看二进制日志内容。
    • 半同步复制检查:在主从库查看 rpl_semi_sync_master_enabledrpl_semi_sync_slave_enabled 变量是否正确设置,以及 rpl_semi_sync_master_wait_no_slave 等相关参数是否合理,确保半同步复制机制正常工作。