几个问题
从属条目是否会保留,直到对主服务器上的表进行插入/更新/删除操作可能会影响从属?
如果不是,如何确保从站与主站同步(通过删除从站条目或手动将该条目复制到主站)?
最重要的是,我如何检测到表不同步?
几个问题
从属条目是否会保留,直到对主服务器上的表进行插入/更新/删除操作可能会影响从属?
如果不是,如何确保从站与主站同步(通过删除从站条目或手动将该条目复制到主站)?
最重要的是,我如何检测到表不同步?
Answers:
只要您不直接在从站上执行任何INSERT / UPDATE / DELETE语句,您的从站就可以了。否则,如果在从属服务器上的mydb.mytable中插入新行,则MySQL复制可能会中断,并且通过复制,从属服务器随后会使用相同的PRIMARY KEY在mydb.mytable中检测到对INSERT的行。这将产生错误1062(重复密钥)。
您可以在不破坏MySQL复制的情况下写入Slave的唯一方法是:
CREATE DATABASE db4;
在奴隶上奔跑要在不下载任何工具的情况下检测到Master和Slave不同步,请选择任何表,并对Master和Slave的同一表的副本上的表运行CHECKSUM TABLE。
例
如果有表mydb.mytable
,请对它运行命令:
mysql> CHECKSUM TABLE mydb.mytable;
如果值不相同,则说明某些内容不同步。
如果要批量检查一堆桌子,可以降低Percona的MAATKIT。您将需要两个特定的工具(Percona也有Percona工具包,它们本身是从MAATKIT派生的,现在正在进一步推广)
要么
pt-table-checksum
将对主服务器和从属服务器上的所有表执行一个CHECKSUM TABLE。您可以将其配置为仅在特定数据库上处理所有数据库。
pt-table-sync
可以在任何表的从站上运行。使用--print和--sync-to-master选项,您可以看到需要在Slave上执行哪些SQL语句以使其与Master完全匹配。该工具不适用于缺少PRIMARY KEY或UNIQUE KEY的表。
我已经使用MAATKIT多年了。我仍然。我还没有尝试过Percona工具包,但是我敢肯定它应该和MAATKIT具有相同的质量。