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