kfm*_*e04 19 mysql replication
几个问题
Slave 条目是否会一直保留,直到对 Master 上的表进行可能影响 Slave 的插入/更新/删除操作?
如果没有,我如何确保从站与主站同步(通过删除从站条目或手动将该条目复制到主站)?
最重要的是,如何检测表不同步?
Rol*_*DBA 16
只要你不直接在 Slave 上执行任何 INSERT/UPDATE/DELETE 语句,你的 Slave 应该没问题。否则,如果您在 Slave 上的 mydb.mytable 中插入新行,并且通过复制,Slave 稍后检测到具有相同 PRIMARY KEY 的行插入到 mydb.mytable 中,则 MySQL 复制可能会中断。这会产生错误 1062(重复键)。
在不破坏 MySQL 复制的情况下写入 Slave 的唯一方法是:
CREATE DATABASE db4;在奴隶上奔跑要在不下载任何工具的情况下检测 Master 和 Slave 不同步,请选择任何表并针对 Master 上的表和同一表的 Slave 副本运行CHECKSUM TABLE。
例子
如果您有 table mydb.mytable,请对其运行命令:
mysql> CHECKSUM TABLE mydb.mytable;
Run Code Online (Sandbox Code Playgroud)
如果返回的值不相同,则说明某些内容不同步。
如果你想批量检查一堆表格,你可以下载 Percona 的 MAATKIT。您将需要两个特定的工具(Percona 也有 Percona Toolkit,他们自己从 MAATKIT 分叉出来,现在正在推广更多)
或者
pt-table-checksum将对 Master 和 Slave 上的所有表执行 CHECKSUM TABLE。您可以将其配置为仅在特定数据库上执行所有数据库。
pt-table-sync可以在 Slave 上针对任何表运行。使用--print 和--sync-to-master 选项,您可以查看需要在Slave 上执行哪些SQL 语句才能使其与Master 完美匹配。此工具不适用于缺少 PRIMARY KEY 或 UNIQUE KEY 的表。
我已经使用 MAATKIT 多年了。我仍然。我还没有尝试过 Percona Toolkit,但我相信它应该与 MAATKIT 具有相同的质量。