MST

星途 面试题库

面试题:MySQL 故障转移与故障恢复流程 - 中等难度

在 MySQL 主从复制架构下,如果主库发生故障,简述手动故障转移的一般步骤,并说明如何确保数据的一致性?
19.2万 热度难度
数据库MySQL

知识考点

AI 面试

面试题答案

一键面试
  1. 手动故障转移一般步骤
    • 确认主库故障:通过监控工具、应用报错等多种方式,确认主库确实无法正常工作。
    • 选择新主库:从多个从库中挑选一个作为新的主库,一般选择延迟较小、数据相对完整且性能较好的从库。
    • 停止从库复制:登录到要提升为主库的从库,执行 STOP SLAVE; 命令,停止复制进程。
    • 重置主库配置:在新主库上执行 RESET MASTER; 命令,重置二进制日志,生成新的日志文件和日志位置。
    • 配置其他从库
      • 登录到其他从库,执行 STOP SLAVE; 停止复制。
      • 使用 CHANGE MASTER TO 命令重新配置主库连接信息,将主库地址指向新提升的主库,并指定正确的二进制日志文件名和位置。
      • 执行 START SLAVE; 启动从库复制。
    • 更新应用配置:修改应用程序连接的数据库地址,指向新的主库。
  2. 确保数据一致性的方法
    • 数据校验:在故障转移前,使用工具(如 pt-table-checksum)对主从库数据进行校验,确保数据一致性。在故障转移后,再次进行数据校验。
    • 设置合适的复制模式:采用 ROW 模式复制,相比 STATEMENT 模式,ROW 模式可以更精确地记录数据变更,减少数据不一致的风险。
    • 等待复制延迟消除:在提升新主库前,确认从库的复制延迟为 0,确保从库的数据与原主库最新数据一致。
    • 半同步复制:在故障转移后,尽快在新主从架构中启用半同步复制,确保至少有一个从库接收到并写入主库发送的二进制日志事件,才返回给主库确认信息,从而保证数据不会丢失。