面试题答案
一键面试验证数据一致性
- 对比工具:
- 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
导入数据,最后对比主从库数据。
- pt-table-checksum:
- 手动查询对比:
- 主键和唯一索引对比:
- 介绍:在主从库上对具有主键或唯一索引的表,查询相同主键或唯一索引值对应的记录,对比记录的各个字段值是否一致。
- 使用方法:例如在主库和从库上对
users
表,查询id = 1
的记录,SELECT * FROM users WHERE id = 1
,然后人工对比查询结果。
- 统计信息对比:
- 介绍:对主从库上的表统计行数、特定字段的总和、平均值等信息,对比统计结果是否一致。
- 使用方法:比如统计
orders
表的订单总数,在主从库分别执行SELECT COUNT(*) FROM orders
;统计订单总金额,执行SELECT SUM(amount) FROM orders
,对比主从库的统计结果。
- 主键和唯一索引对比:
验证主从切换是否正常工作
- 模拟主库故障:
- 方法:通过停止主库的MySQL服务(例如在Linux系统下使用
systemctl stop mysqld
)来模拟主库故障。然后观察从库是否能够正确切换为新的主库(如果是双活或多活架构,还需观察其他从库是否能正常切换同步源)。 - 检查内容:
- 查看从库的日志(例如
show slave status \G
命令查看从库状态,在故障切换后,查看其是否已经停止从库复制状态并开始作为主库接受新的写入)。 - 在新的主库上进行数据写入操作,然后检查其他从库是否能够正确同步新写入的数据。
- 查看从库的日志(例如
- 方法:通过停止主库的MySQL服务(例如在Linux系统下使用
- 使用工具:
- 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节点的复制状态来验证主从切换是否正常工作。
- Orchestrator: