我一直在寻找一个工具来同步来自两个不同数据库的表,并找到了pt-table-sync。我阅读了这些文档并感到困惑:它们大多使用引用复制环境的示例,但我认为复制的全部目的是为您处理数据的同步问题,因此我提出了以下问题:
pt-table-sync有什么意义呢?pt-table-sync (在与彼此无关的2+主机之间,这是给出的pt-table-sync --execute host1 host2 host3示例的作用)?pt-table-sync,那么是否可以不使用master上的bin-logs (有一个例子讨论了解决pt-table-checksum发现的差异,因此想知道bin-logs是否是绝对必要的)?发布于 2012-11-19 18:56:02
MySQL复制存在两个主要问题
Seconds_Behind_Master中看到。Data Drift。这是一种间歇性的情况,因为MySQL复制领域之外的因素,主和从都是不同步的。例如,请注意一种更好地同步复制的方法:使用选项sync-binlog。当您将sync-binlog设置为1时,mysqld将对您在二进制日志中记录的每个条目执行当前二进制日志的刷新。会让大师的速度慢下来。默认情况下,sync-binlog为0。sync-binlog=0,谁负责将二进制日志刷新到磁盘?这里的直接回答是否定的,因为pt-table-sync被设计为通过--sync-to-master选项来检测从服务器的I/O线程。
这里的直接答案是否定的,因为MySQL复制需要知道
Master_Log_File,来自SHOW SLAVE STATUS\G)Read_Master_Log_Pos,来自SHOW SLAVE STATUS\G)如果您只是希望您的二进制日志不碍事,您可以做两件事之一。
expire-logs-days设置为3以保存最后3天的二进制日志expire-logs-days=3SET GLOBAL expire_logs_days = 3;SHOW SLAVE STATUS\G。以Relay_Master_Log_File的值为例。并使用它清除母版上的二进制日志,以提升该日志文件。SHOW SLAVE STATUS\GRelay_Master_Log_File: mysql-bin.000035PURGE BINARY LOGS TO 'mysql-bin.000035';如果您希望对pt-table-sync有更多的信心,请尝试使用--print选项并将其重定向到文本文件而不是--execute选项。这将生成通常在Master上执行的SQL。之后,您可以直接在该从服务器上运行SQL。把它想象成--execute的彩排。
发布于 2012-11-19 19:41:29
但我认为复制的全部目的是为您处理数据的同步问题。
是的,MySQL复制确实试图同步复制的数据库。但是,MySQL复制很棘手,复制可能由于各种原因而失败。在我的经验中,复制错误是罕见的,但它们确实发生在意外的服务器崩溃中,当用户在主服务器上的一个大插入过程中按下“Control”时,等等。MySQL.com没有提供很好的工具来处理其中的许多问题。幸运的是,一些工程师,如Baron ( Percona (以前称为Maatkit)的原作者),开发了一些工具来简化MySQL管理。
例如,我目前有一个有5000万行的表。由于几周前服务器崩溃,有少数行不同步。我需要发现哪些行不同步,但是手动执行会很痛苦。我使用pt-table-checksum检查副本上的复制错误,使用pt-table-sync查找副本上缺少的行。
如果您正在考虑MySQL复制,我强烈建议您研究并使用Percona。如果我们从Percona开始,我们的MySQL数据库的管理就会简单得多。
我读了这些文档后感到困惑:
Percona的文档编写得像一本技术手册。不幸的是,它并没有很好地描述如何使用这些工具,它们如何帮助您等等。http://www.mysqlperformanceblog.com有一些这样的信息,但是它主要关注于MySQL的Percona分支(这是他们的谋生方式),这需要读者做一些翻译。
发布于 2015-06-16 08:21:16
pt-table-sync (togerther with pt-table-checksum)可用于纠正复制错误,如数据损坏、直接修改从服务器上的数据、服务器崩溃、模式错误更改等。
但是,如果数据变化不太大,pt-table-sync也可以用于在几乎实时的情况下保持表的同步。
当然,您也可以在非复制环境中使用它,手册也提到了它。我使用它从cron保持3 mysql服务器“同步”每5分钟。它们具有相同的数据副本,这些副本有时只会更改(在第一台服务器上),因此为此目的的复制将是过度的。
您可以指定要同步的单个数据库或表。您可以有多个目标服务器。pt-table-sync使用几种有效的算法来检测数据库表中的更改,并且只复制更改(它将更改分类为4组:删除、替换、插入、更新)。
https://serverfault.com/questions/450118
复制相似问题