LoginSignup
0
0

More than 5 years have passed since last update.

mongodb の replicaSet の `not master`エラーで困ったお話

Posted at

前提

Docker で3つのノードで 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-composedown してから再度 up しました
  • db.user.insert(...) 処理で not master エラーになりました

解決

  • URL の書き方が間違っていました。ホストのリストをカンマ区切りで、mongodb:///testDb?replicaSet=rs1 の真ん中に置く必要があります
  • mongodb://node1:27017,node2:27017,node3:27017/testDb?replicaSet=rs1 のフォーマットで書きましょう
  • ちゃんとドキュメント読めましょう

まとめ

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

参考リンク

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0