Mongodb : primary 宕机了一天,发现旧数据不同步,当前数据同步
Mongodb : Primary was down for a day, when turned up old data not synching, current data synching
我有一个 mongodb 副本集,其中有一个主副本和两个副副本,由于一些 os 问题,主副本关闭了一天。然后其中一个次要的被选为主要的。将该次级用作主要并用于应用程序。一天后,旧的主服务器出现,目前它用作辅助设备。似乎只有当前数据在这个次要数据中更新,而不是同步停机日的数据。有什么办法知道,它正在后台同步吗?如果不同步我必须做什么?我需要再次将旧的主要转换为主要,只有在所有数据都同步后才能完成。
如果您的旧 PRIMARY 变为 SECONDARY,这意味着它成功地从您的新 PRIMARY 复制了丢失的数据 ...新小学。您可以在 bson 格式的旧 PRIMARY 中的“回滚”文件夹中找到这些写入,您将需要查看这些 bson 文件并手动检查是否需要 re-insert 或再次考虑它们。
要遵循的故障排除步骤:
检查当前副本集状态:
rs.status()
如果您有 1x PRIMARY + 2x SECONDARY 似乎一切都很好,您的成员与 PRIMARY 同步。
如果一些成员处于不同的状态,他们可能会初始化同步,您将需要等待一段时间直到进程完成或出现其他问题,因此您可能需要稍等片刻。
如果由于某种原因成员没有成功初始化同步,您可以强制重新初始化同步,以便他们从头开始尝试。
以下是启动初始化同步的简单步骤:
4.1。停止成员:
mongo --p XXX
use admin
db.shutdownServer()
4.2。转到数据文件夹并删除其中的所有内容:
cd /my_member_data_folder/
rm -rf *
4.3。再次启动member,等到init sync成功进入SECONDARY状态。
mongod --config my_config_file.conf
万一一切正常,您只需要将副本集切换到您的旧 PRIMARY,您只需 re-configure 该成员的优先级如下:
newPRIMARY>var x=rs.conf()
newPRIMARY>x.members[0].priority=10
newPRIMARY>rs.reconfig(x)
假设 members[0] 是旧的 PRIMARY ,其余 member 的优先级 < 10
我有一个 mongodb 副本集,其中有一个主副本和两个副副本,由于一些 os 问题,主副本关闭了一天。然后其中一个次要的被选为主要的。将该次级用作主要并用于应用程序。一天后,旧的主服务器出现,目前它用作辅助设备。似乎只有当前数据在这个次要数据中更新,而不是同步停机日的数据。有什么办法知道,它正在后台同步吗?如果不同步我必须做什么?我需要再次将旧的主要转换为主要,只有在所有数据都同步后才能完成。
如果您的旧 PRIMARY 变为 SECONDARY,这意味着它成功地从您的新 PRIMARY 复制了丢失的数据 ...新小学。您可以在 bson 格式的旧 PRIMARY 中的“回滚”文件夹中找到这些写入,您将需要查看这些 bson 文件并手动检查是否需要 re-insert 或再次考虑它们。
要遵循的故障排除步骤:
检查当前副本集状态:
rs.status()
如果您有 1x PRIMARY + 2x SECONDARY 似乎一切都很好,您的成员与 PRIMARY 同步。
如果一些成员处于不同的状态,他们可能会初始化同步,您将需要等待一段时间直到进程完成或出现其他问题,因此您可能需要稍等片刻。
如果由于某种原因成员没有成功初始化同步,您可以强制重新初始化同步,以便他们从头开始尝试。
以下是启动初始化同步的简单步骤:
4.1。停止成员:
mongo --p XXX
use admin
db.shutdownServer()
4.2。转到数据文件夹并删除其中的所有内容:
cd /my_member_data_folder/
rm -rf *
4.3。再次启动member,等到init sync成功进入SECONDARY状态。
mongod --config my_config_file.conf
万一一切正常,您只需要将副本集切换到您的旧 PRIMARY,您只需 re-configure 该成员的优先级如下:
newPRIMARY>var x=rs.conf() newPRIMARY>x.members[0].priority=10 newPRIMARY>rs.reconfig(x)
假设 members[0] 是旧的 PRIMARY ,其余 member 的优先级 < 10