gpt4 book ai didi

Mongodb,所有 replSet 卡在 Startup2

转载 作者:可可西里 更新时间:2023-11-01 09:27:31 27 4
gpt4 key购买 nike

我有 2 个节点(节点 0、节点 1)的 mongodb 复制集,有一天其中一个节点(节点 1)崩溃。

考虑到删除node1的所有数据再重启需要很长时间,我关闭node0,rsync数据到node1

之后,我启动 node0 和 node1。两个 replSet 都停留在 STARTUP2,下面是一些日志:

Sat Feb  8 13:14:22.031 [rsMgr] replSet I don't see a primary and I can't elect myself
Sat Feb 8 13:14:24.888 [rsStart] replSet initial sync pending
Sat Feb 8 13:14:24.889 [rsStart] replSet initial sync need a member to be primary or secondary to do our initial sync

如何解决这个问题?

最佳答案

编辑 2015 年 10 月 29 日: 我发现实际上有一种更简单的方法可以通过使用 rs.reconfig 和选项 {force: true 来找回你的主要}。您可以找到详细文档here .请谨慎使用,但如文档中所述,它可能会导致回滚。

你永远不应该构建一个 2 成员的副本集,因为一旦其中一个出现故障,另一个就不知道是因为另一个出现故障,还是因为它自己已经与网络断开。作为解决方案,添加一个用于投票的仲裁节点。

所以你的问题是,当你重启 node0 时,虽然 node1 已经死了,但没有其他节点投票给它。它不知道是否适合再运行一个主节点。因此它会退回到次级,这就是你看到消息的原因

Sat Feb  8 13:14:24.889 [rsStart] replSet initial sync need a member to be primary or secondary to do our initial sync

据我所知,除了重建副本集之外,没有其他官方方法可以解决此问题(但您稍后可以找到一些技巧)。请按照以下步骤操作:

  1. 停止节点0
  2. 转到 node0 的数据文件夹(在我的机器上是/var/lib/mongodb。在位于/etc/mongodb.conf 的配置文件中找到你的)
  3. 从文件夹中删除 local.*。注意
    1. 这是不可撤销的,即使您备份了这些文件。
    2. 您将失去本地数据库中的所有用户。
  4. 启动 node0,您将看到它作为独立节点运行。

然后关注mongodb manual重新创建副本集

  1. 运行 rs.initiate() 初始化副本集
  2. 将node1加入副本集:rs.add("node1域名");

恐怕您将不得不花很长时间等待同步完成。然后就可以开始了。

我强烈建议添加一个仲裁器以避免再次出现这种情况。

所以,以上是解决您的问题的官方方法,这就是我使用 MongoDB 2.4.8 的方法。我没有找到任何文件来证明这一点,所以绝对没有保证。你自己承担风险。无论如何,如果它不适合你,就退回到官方方式。值得一试;)

  1. 确保在整个过程中没有应用程序试图修改您的数据库。否则这些修改将不会同步到辅助服务器。
  2. 在没有 replSet=[set name] 参数的情况下重新启动您的服务器,以便它独立运行,您可以对其进行修改。
  3. 转到本地数据库,并从 db.system.replset 中删除 node1。例如在我的机器中最初是这样的:

    { "_id": "rs0", “版本”:5, “成员”:[{ “_id”:0, “主机”:“节点0” }, { “_id”:1, “主机”:“节点1” }]

你应该把它改成

{
"_id": "rs0",
"version": 5,
"members": [{
"_id": 0,
"host": "node0"
}]
}
  1. 使用 replSet=[set name] 重新启动,您应该会看到 node0 再次成为主节点。
  2. 使用 rs.add 命令将 node1 添加到副本集。

就是这样。如果您有任何问题,请告诉我。

关于Mongodb,所有 replSet 卡在 Startup2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21642396/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com