您需要确保从站没有落后于主站太远。“太远”取决于您的应用程序可以容忍的内容以及您在主服务器上保留多少二进制日志。因为从属服务器上的复制是单线程的,所以从属服务器很容易落后。 SHOW SLAVE STATUS有Seconds_Behind_Master值,但不是实际滞后的可靠指标,经常会跳来跳去。为了准确测量复制延迟,您需要一个外部应用程序定期将时间戳插入表中。然后,您可以从从站测量该值并将其与当前时间进行比较以获得实际的复制延迟。 pt-heartbeat是一个守护进程,它会将心跳插入服务器上的表中。然后,您可以使用pmp-check-mysql-replication-delay以确保它在您指定的参数范围内。
复制可以以各种有趣和令人兴奋的方式破坏或行为不端。您需要监控三件事:
1. 复制正在运行,并没有因为错误而停止
要监视复制是否正在运行,只需以编程方式检查和查看和
SHOW SLAVE STATUS
的值即可。两者都应该是“是”。 Percona Monitoring Plugins for Nagios的 pmp-check-mysql-replication-running是为此任务编写的。Slave_IO_Running
Slave_SQL_Running
2. Replication 表现良好(slave 落后于 master 在可接受的范围内)
您需要确保从站没有落后于主站太远。“太远”取决于您的应用程序可以容忍的内容以及您在主服务器上保留多少二进制日志。因为从属服务器上的复制是单线程的,所以从属服务器很容易落后。
SHOW SLAVE STATUS
有Seconds_Behind_Master
值,但不是实际滞后的可靠指标,经常会跳来跳去。为了准确测量复制延迟,您需要一个外部应用程序定期将时间戳插入表中。然后,您可以从从站测量该值并将其与当前时间进行比较以获得实际的复制延迟。 pt-heartbeat是一个守护进程,它会将心跳插入服务器上的表中。然后,您可以使用pmp-check-mysql-replication-delay以确保它在您指定的参数范围内。3.服务器上的数据是同步的。
主从不同步的方式有很多种,从而导致数据不同。您需要检测这些差异并定期更正它们,因为随着时间的推移,微小的差异会变成非常大的差异,尤其是基于语句的复制。这是一项不小的任务,pt-table-checksum就是为了计算这些差异而设计的。每周运行。 pmp-check-pt-table-checksum是一个 Nagios 插件,用于在从站与主站存在数据差异时发出警报。要真正解决这些差异,请使用pt-table-sync。
pt-table-checksum 最近被重写并且非常容易使用。pt-table-sync 有很多选项,可能会令人困惑。 彻底阅读这些文档,因为如果你不小心的话,你真的会在脚下开枪。这是关于这些工具的网络研讨会。
没有什么可以阻止您修改(或补充)从站上的数据,尽管通常我会建议您不要这样做。最佳做法是让奴隶成为
read_only=1
. 然而,现实生活往往胜过最佳实践,并且经常使用从属服务器作为报告服务器。我的建议是为使用从属设备进行数据修改的用户提供非常明确的访问权限,并将所有附加表放在单独的模式中。复制可能由于多种原因而“下降”,主要原因是从服务器在执行主服务器上执行的命令之一时会出现 sql 错误(例如,更新主服务器上存在但从服务器上不存在的行),另一个问题可能是主从之间的不同变量设置,例如
max_allowed_packet
. 总而言之,复制是一个可靠的功能。我使用Server Density来监控复制(以及服务器上的其他参数),它们可以监控复制是否正在运行、从属服务器落后的秒数以及服务器上的许多其他参数(cpu、内存)。他们有一个非常清晰的 web 应用程序,iphone 应用程序,并且可以在事情向南时发送推送通知,最好的事情是与他们的集成需要 5 分钟。
至于单独的数据库,我不明白你想在那里实现什么
希望这可以帮助,
R