2

3 つのインスタンスを持つスタンドアロンの mongodb レプリカ セットを構成しようとしています。ファンキーな状態になってしまったようです。2 つのインスタンスがダウンし、すべてのセカンダリ ノードが残っていました。私はこれに従おうとしました: http://docs.mongodb.org/manual/tutorial/reconfigure-replica-set-with-unavailable-members/

私はこのエラーが発生しました:

 rs0:SECONDARY> rs.reconfig(cfg, {force : true})
 {
    "errmsg" : "exception: need most members up to reconfigure, not ok : obfuscated_hostname:27019",
    "code" : 13144,
    "ok" : 0
 }

ログを見ると、次のように表示されます。

 Fri Aug  2 20:45:11.895 [initandlisten] options: { config: "/etc/mongodb1.conf",
 dbpath: "/var/lib/mongodb1", logappend: "true", logpath: "/var/log/mongodb/mongodb1.log",
 port: 27018, replSet: "rs0" }
 Fri Aug  2 20:45:11.897 [initandlisten] journal dir=/var/lib/mongodb1/journal
 Fri Aug  2 20:45:11.897 [initandlisten] recover begin
 Fri Aug  2 20:45:11.897 [initandlisten] recover lsn: 0
 Fri Aug  2 20:45:11.897 [initandlisten] recover /var/lib/mongodb1/journal/j._0
 Fri Aug  2 20:45:11.899 [initandlisten] recover cleaning up
 Fri Aug  2 20:45:11.899 [initandlisten] removeJournalFiles
 Fri Aug  2 20:45:11.899 [initandlisten] recover done
 Fri Aug  2 20:45:11.923 [initandlisten] waiting for connections on port 27018
 Fri Aug  2 20:45:11.925 [websvr] admin web console waiting for connections on port     28018
 Fri Aug  2 20:45:11.927 [rsStart] replSet I am hostname_obfuscated:27018
 Fri Aug  2 20:45:11.927 [rsStart] replSet STARTUP2
 Fri Aug  2 20:45:11.929 [rsHealthPoll] replset info hostname_obf:27017 thinks that we  are down
 Fri Aug  2 20:45:11.929 [rsHealthPoll] replSet member hostname_obf:27017 is up
 Fri Aug  2 20:45:11.929 [rsHealthPoll] replSet member hostname_obf:27017 is now in state SECONDARY
 Fri Aug  2 20:45:12.587 [initandlisten] connection accepted from ip_obf:52446 #1 (1 connection now open)
 Fri Aug  2 20:45:12.587 [initandlisten] connection accepted from ip_obf:52447 #2 (2 connections now open)
 Fri Aug  2 20:45:12.588 [conn1] end connection ip_obf:52446 (1 connection now open)
 Fri Aug  2 20:45:12.928 [rsSync] replSet SECONDARY

ログには稼働中であると書かれていますが、mongo インスタンスに接続できません。ここで何をすべきかについてのアイデアはありますか?

4

2 に答える 2

3

使用しているmongodbのバージョンについては言及していませんが、2.0以降だと思います。

強制的な再構成の問題は、この再構成の後でも、機能するレプリカ セットの最小ノード数、つまり 3 が必要なことだと思います。その単一の生き残ったノードを機能するレプリカ セットに変えます。

回復のための唯一のオプションは、生き残ったノードをスタンドアロン サーバーとして起動し、データベースをバックアップしてから、そのデータを使用して新しい 3 ノード レプリカ セットを作成することです。

于 2013-08-02T21:19:30.540 に答える
0

はい、セカンダリ サーバーが正常に動作している場合は、単一のセカンダリ レプリカをプライマリに切り替えることができます。以下の簡単な手順に従ってください。

ステップ 1 : メンバーに接続して現在の構成を確認する

rs.conf()

ステップ 2 : 現在の構成を別の変数に保存します。

x = rs.conf()

ステップ 3 : プライマリにするメンバーの ID、ホスト、およびポートを選択します。

x.members = [{"_id":1,"host": "localhost.localdomain:27017"}]

ステップ 4 : 新しいレプリカ セットを強制的に再構成します。

rs.reconfig(x, {force:true})

これで、目的のメンバーがプライマリとして昇格されます。

于 2016-05-02T07:13:01.583 に答える