web-dev-qa-db-ja.com

Mongodbインクリメンタルoplogダンプが機能しない

増分oplogダンプを取得できません。接続が正常に行われ、操作が記録されている(db.currentOp()に表示される)エラーメッセージが表示されませんが、それでも何も起こりません。なぜだかわかりませんか?

私は小さなデータベースで同じコマンドを実行しましたが、すべてがまったく問題なく機能しますが、大きなデータベースで同じコマンドを実行すると(毎日増加する約100億から110億のレコードについて)、機能しません。

コマンドは次のとおりです。

mongodump --Host $MONGODB_Host:$MONGODB_PORT --authenticationDatabase admin -u $MONGODB_USERNAME -p $MONGODB_PASSWORD -d local -c oplog.rs -o backup/oplogDump/$currentTime --query '{"ts":{$gt: Timestamp( 1452157469, 37)}}'

このコマンドを実行すると、セカンダリmongoマシン全体がスタックします。つまり、mongodを再度実行するには、マシンを再起動する必要があります。

私が最近行ったもう1つの変更は、開発者の要件に従ってnssizeを1 GBに増やしたことです。この問題がいつ始まったのか、またはこの問題の原因は何なのかわからないので、ヘルプは本当に活用されますか?

4

基本的に、oplog全体をダンプしようとしているため、最新のデータだけでなく、oplog全体をページングしています。特にoplogが大きすぎてメモリに収まらない場合は、多くのIOが発生します。小さなデータベースでは、oplogが比較的小さいため、問題にはなりません。

それが完全なテーブルをダンプする理由は、あなたがあなたの時間の終わりにいくつかのゼロを見逃していると私が信じているからです:

> new Date(1452157469)
ISODate("1970-01-17T19:22:37.469Z")

私はあなたがこれを望んでいたと思います:

> new Date(1452157469000)
ISODate("2016-01-07T09:04:29Z")

このダンプが発生する速度は、いくつかの要因によって異なりますが、ほとんどの場合、最近oplogに挿入されたデータの量と、ダンプを開始したときにメモリに残っているデータの量によって異なります。

4
Adam C