testingMySQL数据库复制/同步

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

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

我search了监视工具,但一直没能find合适的东西。

另外,testing从站之间同步的“最佳实践”方法是什么? 有没有像unit testing数据库复制?

我很抱歉,如果我对这个问题的无知冒犯了任何人。

复制的大问题是检查

  1. 那个节点都全起来了,
  2. 所有的节点都在沟通(不是脑裂)
  3. 并处理复制日志
  4. 和复制滞后

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

使用多主复制(例如钨 , Percona )可以节省很多痛苦,但需要额外的努力/软件来设置。

如果ndoes之间的networking出现故障,那么这些进程都可以正常运行 – 但是将无法传输数据 – 您需要监视每个节点,以检查它是否可以联系上游节点。

一个MySQL Master数据库,它复制到几个Slave数据库

最好的做法是将其中一个从设备指定为主设备 – 双向复制。 通过这种方式,您可以轻松地在发生停机事件时进行切换,或者执行重build索引,备份,模式更改等维护任务。

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

在pipe理升级,调度脚本以收集数据等方面,有很多工具可以做到这一点 – 我使用nagios,所以做很多其他人。

我的问题是监视和/或testing从属数据库是否是最新的最佳实践是什么,

要进行简单的testing,请在主设备上插入/更新数据,并确保将其复制到从设备。

但是为了一致性检查, 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

并且在出现导致复制停止的错误时提醒pipe理员。

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

如果你有任何不一致的话,不要错过pt表同步 :

 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 

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

在奴隶做

 SHOW SLAVE STATUS\G; 

如果你得到这些:

  Slave_IO_Running: Yes Slave_SQL_Running: Yes 

这意味着你几乎在那里,要testing它尝试在MASTER上进行任何写入事务,并确保它们在从站上自动复制

我search了监视工具,但一直没能find合适的东西。

您可以使用Percona MySQL Monitoring Template [s]用于Cacti 。 查看MySQL复制模板(使用pt-heartbeat工具)。

干杯