私の理解では、Percona Server for MongoDB (最新バージョン) はすでに rocksdb エンジンでコンパイルされています。しかし、それを使用するようにフラグを設定すると、サービスの開始に失敗します。コード 100 (キャッチされない例外) で終了し、ジャーナル出力はありません。誰がこれを引き起こしているのか考えていますか? 前もって感謝します。
質問する
907 次
2 に答える
3
ログに次のようなものが表示される場合があります。
2016-03-10T21:17:23.433-0600 I CONTROL ***** SERVER RESTARTED *****
2016-03-10T21:17:23.435-0600 I ACCESS Initialized External Auth Session
2016-03-10T21:17:23.437-0600 I CONTROL [initandlisten] MongoDB starting : pid=1323 port=27017 dbpath=/var/lib/mongodb 64-bit host=ubuntu14
2016-03-10T21:17:23.437-0600 I CONTROL [initandlisten] db version v3.0.8-1.3
2016-03-10T21:17:23.437-0600 I CONTROL [initandlisten] git version: 354592f7850d8d113690f610049baec94812da2b
2016-03-10T21:17:23.437-0600 I CONTROL [initandlisten] build info: Linux vps-trusty-x64-01 2.6.32-042stab112.15 #1 SMP Tue Oct 20 17:22:56 MSK 2015 x86_64 BOOST_LIB_VERSION=1_49
2016-03-10T21:17:23.437-0600 I CONTROL [initandlisten] allocator: tcmalloc
2016-03-10T21:17:23.437-0600 I CONTROL [initandlisten] options: { config: "/etc/mongod.conf", net: { bindIp: "127.0.0.1", port: 27017 }, processManagement: { pidFilePath: "/var/run/mongod.pid" }, storage: { dbPath: "/var/lib/mongodb", engine: "rocksdb", journal: { enabled: true } }, systemLog: { destination: "file", logAppend: true, path: "/var/log/mongodb/mongod.log" } }
2016-03-10T21:17:23.503-0600 I STORAGE [initandlisten] exception in initAndListen: 28574 Cannot start server. Detected data files in /var/lib/mongodb created by storage engine 'mmapv1'. The configured storage engine is 'rocksdb'., terminating
2016-03-10T21:17:23.503-0600 I CONTROL [initandlisten] dbexit: rc: 100
その場合、問題は、まだ dbpath にある別のストレージ エンジン データセットを使用して rocksdb エンジンを指定してサーバーを起動したことです。この問題を解決するには、dbpath からファイルを削除して、新しいエンジンを使用する必要があります。
保持したい既存のデータが MongoDB にある場合は、まずmongodumpツールを使用して、ストレージ エンジンを切り替えてサーバーを再起動した後にmongorestoreで復元できる情報をバックアップします。
/etc/mongod.confでストレージ エンジンを変更した後、クリーンな dbpath で開始するには、次のコマンドを (root として) 発行します。
注:これにより、MongoDB データベースに保存されているすべてのデータが完全に削除されます。
# service mongod stop
# rm -rf /var/lib/mongodb/*
# service mongod start
数秒後、ログ ファイルの下部に次のメッセージが表示されます。
# tail /var/log/mongodb/mongod.log
2016-03-10T21:25:30.398-0600 I CONTROL ***** SERVER RESTARTED *****
2016-03-10T21:25:30.400-0600 I ACCESS Initialized External Auth Session
2016-03-10T21:25:30.402-0600 I CONTROL [initandlisten] MongoDB starting : pid=1530 port=27017 dbpath=/var/lib/mongodb 64-bit host=ubuntu14
2016-03-10T21:25:30.402-0600 I CONTROL [initandlisten] db version v3.0.8-1.3
2016-03-10T21:25:30.402-0600 I CONTROL [initandlisten] git version: 354592f7850d8d113690f610049baec94812da2b
2016-03-10T21:25:30.402-0600 I CONTROL [initandlisten] build info: Linux vps-trusty-x64-01 2.6.32-042stab112.15 #1 SMP Tue Oct 20 17:22:56 MSK 2015 x86_64 BOOST_LIB_VERSION=1_49
2016-03-10T21:25:30.402-0600 I CONTROL [initandlisten] allocator: tcmalloc
2016-03-10T21:25:30.402-0600 I CONTROL [initandlisten] options: { config: "/etc/mongod.conf", net: { bindIp: "127.0.0.1", port: 27017 }, processManagement: { pidFilePath: "/var/run/mongod.pid" }, storage: { dbPath: "/var/lib/mongodb", engine: "rocksdb", journal: { enabled: true } }, systemLog: { destination: "file", logAppend: true, path: "/var/log/mongodb/mongod.log" } }
2016-03-10T21:25:30.808-0600 I NETWORK [initandlisten] waiting for connections on port 27017
于 2016-03-11T03:30:23.287 に答える
1
/etc/mongod.conf を編集するときは、インデント (スペース) を入れすぎないように注意してください。
storage:
dbPath: /var/lib/mongodb
journal:
enabled: true
# engine: mmapv1
# engine: PerconaFT
engine: rocksdb #---->only two spaces
# engine: wiredTiger
私は同じ問題を抱えており、これを理解するのに数日かかりました。
于 2016-04-26T17:18:51.153 に答える