我在 MySQL 5.1.52 上运行传统的主/从复制,我的主服务器设置为基于语句的复制。一些表在从站上缺少行(不同的行数),这些表仅使用“加载数据 infile ...”插入主站,并带有自动增量 Pks。奇怪的是,从站上丢失的行在行应该存在的 PK 值中存在差距。从站被标记为只读,因此不会被意外删除。
传统的方法是使用pt-table-checksum和pt-table-sync
我喜欢做一些不同的事情。我马上跑pt-table-sync
与--sync-to-master --print
选择。
这是 --sync-to-master 选项
--同步到主
将 DSN 视为从站并将其同步到其主站。
将您指定的服务器视为从服务器。检查 SHOW SLAVE STATUS,连接到服务器的 master,并将 master 视为源,将 slave 视为目标。导致在主服务器上进行更改。默认情况下将 --wait 设置为 60,默认情况下将 --lock 设置为 1,并默认禁用 --[no]transaction。另请参阅--replicate,它会更改此选项的行为。
这是 --print 选项
- 打印
打印将解决差异的查询。
如果你不信任 pt-table-sync,或者只是想看看它会做什么,这是一个安全的好方法。这些查询是有效的 SQL,如果您想手动同步表,您可以自己运行它们。
这,如果你做这样的事情:
echo "SET SQL_LOG_BIN=0;" > /root/SQLChanges.sql
pt-table-sync --print --sync-to-master h=10.1.2.30,u=username,p=password >> /root/SQLChanges.sql
Run Code Online (Sandbox Code Playgroud)
该文件/root/SQLChanges.sql
将包含您需要在 Slave 上执行的所有更改。一旦您对其内容感到满意,只需在 Slave 上执行脚本即可。
关于在复制中使用 LOAD DATA INFILE,@DTest 回答了这个问题。我进一步解释了 mysql 如何复制 LOAD DATA INFILE。
归档时间: |
|
查看次数: |
4140 次 |
最近记录: |