私は非常に奇妙な問題があります。昨日、私のConfig Server Replica Setは基本的に動作を停止しました。私はそれを元に戻すことができる唯一の方法は、バックアップでレプリカセットの内容を復元し、レプリカセットを再作成することでした。設定サーバーの発行後にMongoDBのタイムアウトが発生する
これまでのところ、すべてのシャーディングデータが見えていたので、設定サーバのsh.status()で見ることができます。また、2つのレプリカセットでは、データを照会できます。
しかし、シャードのステータスを取得しようとしたとき、私はtimoutsを取得していますmongosインスタンス上:
mongos> sh.status()
2016-09-05T09:49:15.645+0000 E QUERY [thread1] Error: error: { "code" : 50, "ok" : 0, "errmsg" : "Operation timed out" } :
[email protected]/mongo/shell/utils.js:25:13
[email protected]/mongo/shell/query.js:689:1
[email protected]/mongo/shell/query.js:118:28
[email protected]/mongo/shell/query.js:276:5
[email protected]/mongo/shell/collection.js:289:10
[email protected]/mongo/shell/utils_sh.js:540:19
[email protected]/mongo/shell/utils_sh.js:78:5
@(shell):1:1
私はmongosを実行しているサーバーからのmongoを経由してコンフィグサーバに接続することができます。 Mongoのバージョン3.2.7を使用して、私は正しい方向に私を指しているすべてのログが表示されていないとして、この問題を解決する方法が分からない...
コンフィグサーバ上のログに唯一のものはこれです:
2016-09-05T10:09:35.549+0000 I COMMAND [conn1243] Command on database config timed out waiting for read concern to be satisfied. Command: { find: "shards", readConcern: { level: "majority", afterOpTime: { ts: Timestamp 1472281864000|2, t: 30 } }, maxTimeMS: 30000 }
2016-09-05T10:09:35.551+0000 I COMMAND [conn1243] command config.$cmd command: find { find: "shards", readConcern: { level: "majority", afterOpTime: { ts: Timestamp 1472281864000|2, t: 30 } }, maxTimeMS: 30000 } keyUpdates:0 writeConflicts:0 numYields:0 reslen:92 locks:{} protocol:op_command 30409ms
ありがとうございます。しかし、私が設定サーバーを復元し、すべてのシャードとmongosを再起動した場合、Configサーバーから「新しい」OpTimeを使用しないでください。私の問題に関しては、2つの断片からデータをダンプし、最初からクラスタを作り直してから、mongos経由でデータをダンプしました。これは私がまだ大量のデータを持っていないので機能しましたが、将来的には問題になります。 –
はい。設定サーバを復元した後にすべてのシャードとモンゴを再起動すると、設定サーバからの「新しい」OpTimeが使用されます。将来の運用ガイドとして、この「シャード・クラスタ・リストア・チュートリアル」(https://docs.mongodb.com/manual/tutorial/restore-sharded-cluster/)を参照することができます。 – ZhengCen