测试 MySQL 数据库复制/同步

pja*_*ama 6 mysql mysql-replication replication database-administration

我正在设置一个 MySQL 主数据库,它复制到几个从数据库。

我的问题是监视和/或测试从属数据库是否是最新的最佳实践是什么,并且在出现导致复制停止的错误时会提醒管理员。

我已经搜索了监控工具,但找不到任何合适的工具。

此外,测试从站之间同步的“最佳实践”方法是什么。有没有类似 db 复制的单元测试?

如果我对此事的无知冒犯了任何人,我深表歉意。

qua*_*nta 5

我的问题是监控和/或测试从属数据库是最新的最佳实践是什么,

对于简单的测试,在主服务器上插入/更新数据并确保它被复制到从服务器。

但是对于一致性检查,pt-table-checksum是您正在寻找的。

例如:

pt-table-checksum localhost --empty-replicate-table --databases db --nocheck-replication-filters --replicate percona.checksums > /var/log/pt-table-checksum.log 2>&1

这会在出现导致复制停止的错误时提醒管理员。

如果您使用 Nagios,check_mysql_health插件可以帮助监控从站状态(运行与否)。但是要监控一致性,请查看pmp-check-pt-table-checksum插件。

如果您有任何不一致的情况,请不要错过pt-table-sync

pt-table-sync -v --print --sync-to-master h=localhost,D=db,t=table
pt-table-sync -v --execute --sync-to-master h=localhost,D=db,t=table
Run Code Online (Sandbox Code Playgroud)

请记住,您可能应该--print首先使用该选项。


sym*_*ean 4

复制的最大问题是检查

  1. 节点全部启动,
  2. 所有节点都在通信(不是裂脑)
  3. 并处理复制日志
  4. 和复制滞后

1、3 和 4 可以在相关节点上使用 SHOW MASTER STATUS / SHOW SLAVE STATUS 来捕获,尽管复制延迟只有 1 秒的精度并且仅跨每一跳。Percona 工具包具有用于获取更准确的复制滞后的脚本。

使用多主复制(例如tungstenPercona)可以节省很多麻烦,但需要额外的工作/软件来设置。

如果ndo之间的网络出现故障,那么进程可以全部运行良好 - 但将无法传输数据 - 您需要监视每个节点以检查它是否可以联系上游节点。

一个 MySQL 主数据库,复制到几个从数据库

最佳实践是将其中一个从服务器也指定为主服务器 - 双向复制。这样,您可以在发生中断时轻松切换,或者执行重建索引、备份、架构更改等维护任务。

根据从属节点的数量,您可能还需要指定一个扇出节点来传播更改。

在管理升级、安排脚本来收集数据等方面,有很多可用的工具可以做到这一点 - 我使用 nagios,很多其他人也使用。