MST

星途 面试题库

面试题:MySQL高可用性测试之主从复制验证

在MySQL主从复制架构下,阐述如何验证主从复制的高可用性,比如如何检查数据一致性以及主从切换是否正常工作,需要列举出常用的测试方法和工具。
49.3万 热度难度
数据库MySQL

知识考点

AI 面试

面试题答案

一键面试

验证数据一致性

  1. 对比工具
    • pt-table-checksum
      • 介绍:是Percona Toolkit中的一个工具,它通过在主库上生成并执行一系列的校验和查询,然后在从库上执行相同的查询并对比结果,来检测主从数据是否一致。
      • 使用方法:例如,先在主库和从库上确保安装了Percona Toolkit,然后在主库上运行 pt-table-checksum --nocheck-replication-filters --databases your_database,该命令会输出主从库数据不一致的相关信息,如果有不一致,会显示具体的表以及差异的大概情况。
    • mydumper/myloader
      • 介绍:mydumper可以快速导出MySQL数据,myloader用于导入数据。可以通过在主库导出数据,在从库导入数据,然后对比导入前后的数据。如果数据一致,说明主从数据大概率是一致的。
      • 使用方法:在主库使用 mydumper -u root -p your_password -B your_database -o /tmp/dump 导出数据,然后在从库先清空相关数据库数据,再使用 myloader -u root -p your_password -d /tmp/dump 导入数据,最后对比主从库数据。
  2. 手动查询对比
    • 主键和唯一索引对比
      • 介绍:在主从库上对具有主键或唯一索引的表,查询相同主键或唯一索引值对应的记录,对比记录的各个字段值是否一致。
      • 使用方法:例如在主库和从库上对 users 表,查询 id = 1 的记录,SELECT * FROM users WHERE id = 1,然后人工对比查询结果。
    • 统计信息对比
      • 介绍:对主从库上的表统计行数、特定字段的总和、平均值等信息,对比统计结果是否一致。
      • 使用方法:比如统计 orders 表的订单总数,在主从库分别执行 SELECT COUNT(*) FROM orders;统计订单总金额,执行 SELECT SUM(amount) FROM orders,对比主从库的统计结果。

验证主从切换是否正常工作

  1. 模拟主库故障
    • 方法:通过停止主库的MySQL服务(例如在Linux系统下使用 systemctl stop mysqld)来模拟主库故障。然后观察从库是否能够正确切换为新的主库(如果是双活或多活架构,还需观察其他从库是否能正常切换同步源)。
    • 检查内容
      • 查看从库的日志(例如 show slave status \G 命令查看从库状态,在故障切换后,查看其是否已经停止从库复制状态并开始作为主库接受新的写入)。
      • 在新的主库上进行数据写入操作,然后检查其他从库是否能够正确同步新写入的数据。
  2. 使用工具
    • Orchestrator
      • 介绍:是一款开源的MySQL复制拓扑管理和故障恢复工具。它可以监控MySQL复制拓扑,自动检测主库故障并执行主从切换操作。
      • 使用方法:首先安装Orchestrator,配置好连接到MySQL主从节点的相关参数。当主库发生故障时,Orchestrator会自动选择一个合适的从库提升为新的主库,并重新配置其他从库指向新主库。可以通过其Web界面或命令行工具来验证主从切换是否成功。
    • MHA(Master High Availability)
      • 介绍:是一套优秀的MySQL高可用方案,由MHA Manager和MHA Node组成。MHA Manager负责监控主从节点状态并在主库故障时执行主从切换,MHA Node部署在各个MySQL节点上协助Manager进行故障检测和切换。
      • 使用方法:安装并配置好MHA Manager和MHA Node,在主库故障时,MHA Manager会自动检测并选择合适的从库提升为新主库。可以通过查看MHA Manager的日志文件以及检查MySQL节点的复制状态来验证主从切换是否正常工作。