是否有可能在mysqldump
两个数据库之间生成差异转储,或者理想情况下,在一个数据库和该数据库的转储版本之间生成差异转储?
这是我遇到的问题 - 我有一个 MySQL 的主动/被动 HA 镜像,实际的数据库数据(物理 MyISAM 文件、索引等)驻留在共享 DRBD 镜像上。上周,主节点发生故障,DRBD 主节点从主节点转移到辅助节点,服务接管按预期进行。
当然,大量更改已被写入 DRBD 镜像的辅助副本版本,因此当主副本恢复时,它将接管 DRBD 卷,但双方都认为它们的一半“不同步”(即StandAlone
)。
因此,现在我遇到的情况是数据库中发生了两组不同的事务:
主节点关闭且数据正在写入辅助节点时发生的事情;
自主节点恢复并再次接管服务以来,它们从未同步过!
DRBD 使我能够将镜像的“一半”(处于其当前分区状态)恢复为“主”修订版,但可以看出,无论哪种方式都会导致我丢失数据。
哦,是的:没有复制,也没有本地事务日志,因此没有 binlog 可以重放。哎呀。 捂脸
当然,有夜间备份,所以我可以将数据库恢复到去年凌晨 2 点左右的任何状态。
我想我想要做的是恢复到现在辅助“一半”上的数据库版本(即主数据库关闭时发生的更改),然后尝试以某种方式将从那时起的状态更改累积应用于主“一半”上数据库的当前状态。
问题是,我不知道如何在不重放事务日志的情况下解决这个问题。
感谢您的见解,提前致谢!
答案1
答案2
您不需要在发生故障的服务器上重放数据。这种情况称为裂脑,您需要告诉 DRBD 您希望它做什么。
http://www.drbd.org/users-guide/s-resolve-split-brain.html
编辑:没想到你说主服务器已经恢复在线……不太确定。二进制日志应该包含服务器执行的所有事务的记录。
編輯 (第 2 遍):我需要在发帖之前仔细阅读整个问题... :( 抱歉