maakit:索引的 mk-table-sync 问题

maakit:索引的 mk-table-sync 问题

尝试重新同步从属服务器时,我遇到了一些麻烦,我的一些表没有自动增量主索引,但是有主唯一 ID(不是自动增量)。

我运行重新同步

mk-table-sync --execute --sync-to-master localhost --databases gman --table "list,of,my,problem,tables" --wait 60

这适用于所有具有自动增加主 ID 的表,对于其他表,它表示:

无法在主服务器上进行更改,因为在 /usr/bin/mk-table-sync 第 7733 行不存在唯一索引。在 localhost 上执行 db123.problem 时

如何以其他方式修复此问题?我只希望从服务器与主服务器的正确数据同步。如果可能的话,我更愿意使用 mk-table-sync 来执行此操作,而不是使用 LOCK、dump、将转储插入从服务器,因为后者确实过时且用例不太有用。

谢谢您对 maakit 的提示。

答案1

如果相关索引列有索引但未定义为 UNIQUE INDEX,则 mk-table-sync 将不知道它是 UNIQUE 并将该索引视为辅助索引。您只需将索引重新定义为 UNIQUE 并再次运行 mk-table-sync。

建议:请在每个单独的表上运行 mk-table-sync,但不要使用 --execute

mk-table-sync --print --sync-to-master localhost --databases gman --table tblname --wait 60 > tblname.sql

这样,您可以在从属服务器上执行 SQL 之前查看它。

如果 Slave 也是 Master,则阻止 Slave 进行复制

回显“SET SQL_LOG_BIN = 0;”> tblname.sql

mk-table-sync --print --sync-to-master localhost --databases gman --table tblname --wait 60 >> tblname.sql

相关内容