尝试重新同步从属服务器时,我遇到了一些麻烦,我的一些表没有自动增量主索引,但是有主唯一 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