0

新しいデータベースをmongodbに追加してから、replicaSetセカンダリインスタンスの同期が停止しました。つまり、実行時にデータベース名が表示されますが、次のようにshow dbs表示されます。(empty)

セカンダリのログファイルに繰り返しエラーがあります。

"errmsg" : "syncTail: ...

以下は、プライマリでのrs.Status()の出力です。

PRIMARY> rs.status()
{
        "set" : "contoso_db_set",
        "date" : ISODate("2012-11-01T13:05:22Z"),
        "myState" : 1,
        "syncingTo" : "dbuse1d.int.contoso.com:27017",
        "members" : [
                {
                        "_id" : 0,
                        "name" : "dbuse1a.int.contoso.com:27017",
                        "health" : 1,
                        "state" : 1,
                        "stateStr" : "PRIMARY",
                        "optime" : {
                                "t" : 1351775119000,
                                "i" : 2
                        },
                        "optimeDate" : ISODate("2012-11-01T13:05:19Z"),
                        "self" : true
                },
                {
                        "_id" : 1,
                        "name" : "dbuse1d.int.contoso.com:27017",
                        "health" : 1,
                        "state" : 2,
                        "stateStr" : "SECONDARY",
                        "uptime" : 4108139,
                        "optime" : {
                                "t" : 1351405977000,
                                "i" : 12
                        },
                        "optimeDate" : ISODate("2012-10-28T06:32:57Z"),
                        "lastHeartbeat" : ISODate("2012-11-01T13:05:21Z"),
                        "pingMs" : 1,
                        "errmsg" : "syncTail: 10068 invalid operator: $oid, syncing: { ts: Timestamp 1351576230000|1, h: -2878874165043062831, op: \"i\", ns: \"new_contoso_db.accounts\", o: { _id: { $oid: \"4f79a1d1d4941d3755000000\" }, delegation: [ \"nE/UhsnmZ1BCCB+tiiS8fjjNwkxbND5PwESsaXeuaJw=\""
                },
                {
                        "_id" : 2,
                        "name" : "dbuse1a.int.contoso.com:8083",
                        "health" : 1,
                        "state" : 7,
                        "stateStr" : "ARBITER",
                        "uptime" : 10671267,
                        "optime" : {
                                "t" : 0,
                                "i" : 0
                        },
                        "optimeDate" : ISODate("1970-01-01T00:00:00Z"),
                        "lastHeartbeat" : ISODate("2012-11-01T13:05:21Z"),
                        "pingMs" : 0
                }
        ],
        "ok" : 1
}
PRIMARY> 
4

1 に答える 1

0

私が見つけた解決策は、データベース全体をセカンダリから削除することでした

# rm -rf /data/db
# mkdir -p /data/db

次に、mongoを再起動し、replicaSetを設定します。

モンゴのドキュメントでもっと見る

RS102同期エラーの対処方法

メンバーの1人がオフラインになっていて、追いつくには遅すぎる場合は、再同期する必要があります。これを行うにはいくつかの方法があります。完全な再同期を実行します。失敗したmongodを停止し、dbpath内のすべてのデータ(サブディレクトリを含む)を削除して再起動すると、自動的に再同期されます。明らかに、最初にデータをバックアップする方が良い/安全です。ディスク容量が十分な場合は、必要に応じてマシンのバックアップ場所に移動します。データベースが巨大な場合やネットワークが遅い場合は、再同期に時間がかかることがあります。理想的な1テラバイトのデータでも、ギガビットイーサネット経由で送信するには3時間かかります。*

于 2012-11-05T12:20:28.933 に答える