0

私はレプリカセットでmongodbを使用しているアプリで作業しています。

私のレプリカセットには、2 つの db サーバーと 1 つのアービターがあります。次のようにmongoオブジェクトを作成しています

List<ServerAddress> servers = new ArrayList<ServerAddress>();
servers.add( new ServerAddress( "192.168.1.42", 27017 ) );
servers.add( new ServerAddress( "192.168.1.187", 27017 ) );
servers.add( new ServerAddress( "192.168.1.189", 27017 ) ); //Arbiter

MongoOptions mongoOptions = new MongoOptions();
mongoOptions.autoConnectRetry = true;
mongo = new Mongo(servers, mongoOptions);
mongo.slaveOk();

すべてのサーバーが起動している場合は問題はありませんが、サーバーのいずれかがダウンすると、システムは以下に示すような無限のエラー メッセージを表示し始めます。

May 17, 2011 11:24:19 AM com.mongodb.ReplicaSetStatus$Node update
SEVERE: can't update node: 192.168.1.42:27017
java.io.IOException: couldn't connect to [/192.168.1.42:27017] bc:java.net.ConnectException: Connection refused: connect
    at com.mongodb.DBPort._open(DBPort.java:206)
    at com.mongodb.DBPort.go(DBPort.java:94)
    at com.mongodb.DBPort.go(DBPort.java:75)
    at com.mongodb.DBPort.findOne(DBPort.java:129)
    at com.mongodb.DBPort.runCommand(DBPort.java:138)
    at com.mongodb.ReplicaSetStatus$Node.update(ReplicaSetStatus.java:149)
    at com.mongodb.ReplicaSetStatus.updateAll(ReplicaSetStatus.java:314)
    at com.mongodb.ReplicaSetStatus$Updater.run(ReplicaSetStatus.java:263)

これを解決するのを手伝ってもらえますか?

私はレプリカ セットを使用しているので、1 つのサーバーがダウンした場合、新しいプライマリを使用して古いプライマリを無視することは想定されていませんか?

レプリカ セットのステータスを確認するには、以下の画像を見つけてください。

すべてのサーバーが起動し、192.168.1.42 がプライマリ サーバーです ここに画像の説明を入力

192.168.1.42 はダウンしており (手動で終了)、192.168.1.187 は新しいプライマリです (エラーは現在発生しています)。 ここに画像の説明を入力

192.168.1.42 が再び起動し、セカンダリ サーバーとして機能する (エラーが発生する) ここに画像の説明を入力

更新: エラー メッセージがログに記録されても、データベースは機能します。エラーメッセージを減らす/抑制するメカニズムはありますか?

4

1 に答える 1

1

これはロギングの問題です。エラーではなく、警告になりました。

2.6ドライバー(今週後半にリリース予定)は、このログの詳細度が低くなります。これはエラーではなく、バックグラウンドスレッドがレプリカセットメンバーのステータスをチェックするときにそのノードがダウンしていることを警告するだけです。今すぐテストする場合は、マスターで現在のバージョンを使用できます:http: //github.com/mongodb/mongo-java-driver

http://github.com/mongodb/mongo-java-driver/commit/ee7543a4f7cc26618cf78eab2a18bd33b3e101cc

于 2011-05-17T13:33:57.717 に答える