我们有两个节点节点 A 和 B 的主到主复制,两者都在虚拟环境中。最初,节点 A 出现中断(磁盘空间问题)并停止复制。应用程序级流量已转移到节点 B 并重新定位节点 A 数据存储并腾出可用空间。
节点 A 已成功启动并启动。复制已开始,在与节点 A 同步时节点 B 中出现错误,并且节点 B 中的 bin 日志已损坏。根本原因仍然是个谜。但是分析日志可能会发现一些重复的条目,下面是错误日志信息:
[ERROR] Error reading packet from server: Client requested master to start replication from impossible position ( server_errno=1236).
[ERROR] Slave I/O: Got fatal error 1236 from master when reading data from binary log: 'Client requested master to start replication from impossible position', Error_code: 1236
111014 20:25:48 [Note] Slave I/O thread exiting, read up to log 'mysql-bin.001067', position 183468345.
在这种情况下我们如何处理复制?我们是否可以跳过当前的 bin-log 并使用下一个可用的 bin-log 及其位置开始复制。将节点 B 与节点 A 同步是否是个好主意:
CHANGE MASTER TO
MASTER_HOST='XX.XX.XXX.XXX',
MASTER_USER='replicate',
MASTER_PASSWORD='slave',
MASTER_PORT=3306,
MASTER_LOG_FILE='mysql-bin.001025',
MASTER_LOG_POS=4,
MASTER_CONNECT_RETRY=10;
我提出这种情况的主要原因是,我不想恢复数据库并从头开始构建它,其中节点 B 中的数据库备份约为 80 GB。如何修复复制?