如何确保MySQL复制SLAVE与复制MASTER完全同步?

时间:2012-02-11 07:34:43

标签: mysql replication

使用一个MASTER和一个SLAVE的简单复制设置,如何确保SLAVE和MASTER完全同步?

现在是的,他们都是从完全相同的图像开始,复制工作并报告一切正常但是: *碰巧停止复制时出现错误,然后必须停止复制并稍后恢复。 *也许在SLAVE上意外发生了变化,然后它与MASTER不再相同。 *其他可能会破坏同步的场景。

虽然可以对两个数据库进行大型mysqldump并比较文件,但我会感兴趣的是一种可以更容易实现的方法,并且可以自动检查以确保所有文件都同步。

由于

3 个答案:

答案 0 :(得分:8)

您是否尝试过Percona Toolkit(以前称为Maatkit)?您可以使用他们的pt-table-checksum工具之一来处理您的情况。您也可以在他们的网站上查看其他工具。

  

pt-table-checksum 执行在线复制一致性检查   在master上执行校验和查询,产生不同的查询   与主服务器不一致的副本的结果。该   可选DSN指定主主机。该工具的退出状态是   如果发现任何差异,或者有任何警告或错误,则为非零   发生。

     

以下命令将连接到复制主服务器   localhost,校验和每个表,并在每个表上报告结果   检测到副本:

答案 1 :(得分:3)

如果您有MySQL服务器版本5.6.14或更高版本,则可以使用 MySQL复制同步检查器。它包含在MySql服务器包中。旨在专门用于支持全局事务标识符(GTID)的服务器,并且gtid_mode = ON。

  

此实用程序允许您检查复制服务器以进行同步。它检查主站和从站之间或两个从站之间的数据一致性。该实用程序报告丢失的对象以及丢失的数据。   该实用程序可以在活动复制拓扑上运行,应用同步过程来检查数据。仍然可以检查那些未处于活动状态的服务器,但会跳过同步过程。在这种情况下,由用户手动同步服务器。

See MySQL Documentation for more information

答案 2 :(得分:3)

你是否对看似健康的主/从复制设置持怀疑态度!当突然我们从check_mk收到关于我们的主站上存在的数据库的警报时,我们运行正常,这些数据库在我们的从站上不存在...但是主站和从站状态输出都很好!这有多令人不安?证明流程完整性的方法是使用校验和来验证数据。

我在互联网上看到很多喋喋不休的推荐pt-table-checksum。然而,事实证明它limitations过于繁重,我们无法忍受。最重要的是,它需要甚至设置基于语句的复制(请参阅pt-table-checksum链接)。正如它在mysql 5.6 online documentation中所述,(对于基于行的复制......)“可以复制所有更改。这是最安全的复制形式。”基于语句的复制还有其他缺点,使我们的开发人员感到紧张,因为某些功能无法正常复制;请参阅文档以获取列表。

我们已经遇到过使用基于语句的复制的主服务器和从服务器的问题,因此我们特别试图避免它。

我们将尝试mysqlrplsync,它特别提到它"works independently of the binary log format (row, statement, or mixed)"。然而,它还提到gtid-mode必须打开并且它需要MySQL 5.6.14及更高版本...这意味着,我相信,至少RHEL7 / CentOS 7提供的MySQL已经出局了。您需要获取MySQL社区版,该版本留给读者but you can go here for the packageshere for the repos, including RHEL derivatives and Debian