我在 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
- 启动从属线程