![使用 mysqlbinlog 实用程序时 MySQL 数据不一致](https://linux22.com/image/564075/%E4%BD%BF%E7%94%A8%20mysqlbinlog%20%E5%AE%9E%E7%94%A8%E7%A8%8B%E5%BA%8F%E6%97%B6%20MySQL%20%E6%95%B0%E6%8D%AE%E4%B8%8D%E4%B8%80%E8%87%B4.png)
我在 mysql 复制中遇到了问题。
我有一个 mysql 原始数据快照,我的主机有 2 个二进制日志(binlog.01、binlog.02 - 在创建快照后开始记录)
我想要做的是将原始数据快照复制到从属主机,使用 mysqlbinlog 实用程序执行 binlog.01,然后在将主主机更改为主主机时指向起始位置 1 处的 binlog.02。
当从属服务器完全处理两个二进制日志时,我使用 mk-table-checksum 来检查复制,并收到十几条不一致的消息。
但是,使用另一种方法,我尝试再次将原始数据快照复制到从属主机,将主主机更改为指向起始位置 1 的 binlog.01 的主主机 - 无需处理任何 mysqlbinlog 命令 - 我意识到使用 mk-table-checksum 时不会再收到任何不一致的消息。
我想知道为什么使用 mysqlbinlog 时数据库不一致。如能提供任何帮助我将不胜感激。
答案1
看起来你的做法是错误的。你怎么知道 是binlog.01
在binlog.02
拍摄快照后立即创建的?
正确的做法是:
- 停止 master 或
flush tables with read lock;
- 确定当前 binlog 文件及其位置
show master status;
- 拍摄数据快照
- 将快照复制到从属
- 使用主服务器的复制坐标配置从服务器
change master to
- 启动从属线程