在 MongoDB 的 replicaSet 中遇到了“not master”错误的烦恼的故事

In Chinese: 初始条件

我目前在 Docker 中使用三个节点配置了 MongoDB 的副本集。

version: '3'
services:
  ...
  node1:
    restart: always
    image: "mongo:4.0"
    command: --replSet rs1
  node2:
    restart: always
    image: "mongo:4.0"
    command: --replSet rs1
  node3:
    restart: always
    image: "mongo:4.0"
    command: --replSet rs1
  ...

注意:在启动初始阶段后,需要进行复制品的初始化处理。

应用程序将连接字符串写成了这样

ur = `mongodb://node1:27017/testDb?replicaSet=rs1,mongodb://node2:27017/testDb?replicaSet=rs1,mongodb://node3:27017/testDb?replicaSet=rs1`

有什麼疑問?

    • レプリカ初期化処理を行い、アプリからは正常にアクセスできました

docker-compose で down してから再度 up しました

db.user.insert(…) 処理で not master エラーになりました

应对问题

    • URL の書き方が間違っていました。ホストのリストをカンマ区切りで、mongodb://と/testDb?replicaSet=rs1 の真ん中に置く必要があります

mongodb://node1:27017,node2:27017,node3:27017/testDb?replicaSet=rs1 のフォーマットで書きましょう
ちゃんとドキュメント読めましょう

总结

    恥ずかしいですが、半日もハマってました。ちゃんと ドキュメント読めましょうを読みましょう!!!

请参考以下链接

    • Connect to MongoDB

 

    MongoDB の レプリカセット へ Node.jsドライバー を使って アクセスする 方法 – galife
广告
将在 10 秒后关闭
bannerAds