web-dev-qa-db-ja.com

mongodbをサービスとして開始できません-例外。コレクションのKVCatalogにUUIDがありません

Mongodb 4.2をインストールしました

そして走っているとき

Sudo service mongod start|restart

サーバーは起動せず、mongod.logファイルに以下のログがあります。

Exception in initAndListen: MustDowngrade: Collection does not have UUID in KVCatalog. Collection: local.startup_log, terminating

詳細は次のとおりです。


  CONTROL  [main] Automatically disabling TLS 1.0, to force-enable TLS 1.0 specify --sslDisabledProtocols 'none'
  CONTROL  [initandlisten] MongoDB starting : pid=7434 port=27017 dbpath=/var/lib/mongodb 64-bit Host=vm2851358555.bitcommand.com
  CONTROL  [initandlisten] db version v4.2.0
  CONTROL  [initandlisten] git version: a4b751dcf51dd249c5865812b390cfd1c0129c30
  CONTROL  [initandlisten] OpenSSL version: OpenSSL 1.1.0k  28 May 2019
  CONTROL  [initandlisten] allocator: tcmalloc
  CONTROL  [initandlisten] modules: none
  CONTROL  [initandlisten] build environment:
  CONTROL  [initandlisten]     distmod: debian92
  CONTROL  [initandlisten]     distarch: x86_64
  CONTROL  [initandlisten]     target_Arch: x86_64
  CONTROL  [initandlisten] options: { config: "/etc/mongod.conf", net: { bindIp: "127.0.0.1", port: 27017 }, processManagement: { timeZoneInfo: "/usr/share/zoneinfo" }, storage: { dbPath: "/var/lib/mongodb", journal: { enabled: true } }, systemLog: { destination: "file", logAppend: true, path: "/var/log/mongodb/mongod.log" } }
  STORAGE  [initandlisten] Detected data files in /var/lib/mongodb created by the 'wiredTiger' storage engine, so setting the active storage engine to 'wiredTiger'.
  STORAGE  [initandlisten]
  STORAGE  [initandlisten] ** WARNING: Using the XFS filesystem is strongly recommended with the WiredTiger storage engine
  STORAGE  [initandlisten] **          See http://dochub.mongodb.org/core/prodnotes-filesystem
  STORAGE  [initandlisten] wiredtiger_open config: create,cache_size=256M,cache_overflow=(file_max=0M),session_max=33000,eviction=(threads_min=4,threads_max=4),config_base=false,statistics=(fast),log=(enabled=true,archive=true,path=journal,compressor=snappy),file_manager=(close_idle_time=100000),statistics_log=(wait=0),verbose=[recovery_progress,checkpoint_progress],
  STORAGE  [initandlisten] WiredTiger message [1567525272:967263][7434:0x7fb79a56f140], txn-recover: Recovering log 16 through 17
  STORAGE  [initandlisten] WiredTiger message [1567525273:183321][7434:0x7fb79a56f140], txn-recover: Recovering log 17 through 17
  STORAGE  [initandlisten] WiredTiger message [1567525273:257888][7434:0x7fb79a56f140], txn-recover: Main recovery loop: starting at 16/768 to 17/256
  STORAGE  [initandlisten] WiredTiger message [1567525273:401263][7434:0x7fb79a56f140], txn-recover: Recovering log 16 through 17
  STORAGE  [initandlisten] WiredTiger message [1567525273:492743][7434:0x7fb79a56f140], txn-recover: Recovering log 17 through 17
  STORAGE  [initandlisten] WiredTiger message [1567525273:557051][7434:0x7fb79a56f140], txn-recover: Set global recovery timestamp: (0,0)
  RECOVERY [initandlisten] WiredTiger recoveryTimestamp. Ts: Timestamp(0, 0)
  STORAGE  [initandlisten] WiredTigerKVEngine shutting down
  STORAGE  [initandlisten] Shutting down session sweeper thread
  STORAGE  [initandlisten] Finished shutting down session sweeper thread
  STORAGE  [initandlisten] Shutting down journal flusher thread
  STORAGE  [initandlisten] Finished shutting down journal flusher thread
  STORAGE  [initandlisten] Shutting down checkpoint thread
  STORAGE  [initandlisten] Finished shutting down checkpoint thread
  STORAGE  [initandlisten] Downgrading WiredTiger datafiles.
  STORAGE  [initandlisten] WiredTiger message [1567525275:122312][7434:0x7fb79a56f140], txn-recover: Recovering log 17 through 18
  STORAGE  [initandlisten] WiredTiger message [1567525275:243324][7434:0x7fb79a56f140], txn-recover: Recovering log 18 through 18
  STORAGE  [initandlisten] WiredTiger message [1567525275:351715][7434:0x7fb79a56f140], txn-recover: Main recovery loop: starting at 17/2944 to 18/256
  STORAGE  [initandlisten] WiredTiger message [1567525275:482006][7434:0x7fb79a56f140], txn-recover: Recovering log 17 through 18
  STORAGE  [initandlisten] WiredTiger message [1567525275:576281][7434:0x7fb79a56f140], txn-recover: Recovering log 18 through 18
  STORAGE  [initandlisten] WiredTiger message [1567525275:642376][7434:0x7fb79a56f140], txn-recover: Set global recovery timestamp: (0,0)
  STORAGE  [initandlisten] exception in initAndListen: MustDowngrade: Collection does not have UUID in KVCatalog. Collection: local.startup_log, terminating
  NETWORK  [initandlisten] shutdown: going to close listening sockets...
  NETWORK  [initandlisten] removing socket file: /tmp/mongodb-27017.sock
  -        [initandlisten] Stopping further Flow Control ticket acquisitions.
  CONTROL  [initandlisten] now exiting
  CONTROL  [initandlisten] shutting down with code:100

どうすれば修正できますか?

7
ako

この問題は次の方法で解決できます。

  1. すべてのデータベースのバックアップ(mongodumpを使用)
  2. 新しいバージョンとの互換性がないため、/data/dbのすべてのファイルを削除しています:rm -rf /data/db/*
  3. MongoDBサービスの再起動
  4. すべてのデータベースの復元(mongorestoreを使用)
10
Kais

古いmongodb 3.4から4.2にアップグレードすると、admin dbで同様の問題が発生しました。

解決策は、すべてのデータベースをmongodumpし、/ var/lib/mongodbを削除してから、すべてのデータベースをmongorestoreすることです。

STORAGE  [initandlisten] exception in initAndListen: MustDowngrade: Collection does not have UUID in KVCatalog. Collection: admin.system.users, terminating
2019-09-24T21:59:55.274+0000 I  NETWORK  [initandlisten] shutdown: going to close listening sockets...
2019-09-24T21:59:55.274+0000 I  NETWORK  [initandlisten] removing socket file: /tmp/mongodb-27017.sock
2019-09-24T21:59:55.274+0000 I  -        [initandlisten] Stopping further Flow Control ticket acquisitions.
2019-09-24T21:59:55.274+0000 I  CONTROL  [initandlisten] now exiting
2019-09-24T21:59:55.274+0000 I  CONTROL  [initandlisten] shutting down with code:100

問題の原因:mongodb 4.2は、system.userコレクションにUUID値を持つuserIdを追加します。これがお役に立てば幸いです。

別のmongo dbをアップグレードすると、startup_logでまったく同じ問題が発生しました、/ var/lib/mongodbフォルダを削除してもmongodbを停止しなかったようです、mongodを停止して/ var/lib/mongodbを削除してアップグレードしました4.2にすると、エラーはなくなります。

2
zqcolor

バグレポート この問題については、完全なアップグレードパスに従うことをお勧めします。このエラーが発生した場合、以前のバージョン(3.4)に戻って、一度に1ステップずつ適切にアップグレードできました。

具体的には、一度に1つのメジャーバージョンのみをアップグレードし、前提条件とアップグレード手順を注意深く確認します。これの最も重要な部分は、db.adminCommand( { getParameter: 1, featureCompatibilityVersion: 1 } )との互換性をチェックし、次のバージョンにアップグレードする前に現在のバージョンと一致していることを確認することです。 db.adminCommand( { setFeatureCompatibilityVersion: "3.6" } )で更新します

https://docs.mongodb.com/manual/release-notes/3.6/#upgrade-procedureshttps://docs.mongodb.com/のようなページで完全なドキュメントを読んでくださいmanual/release-notes/4.0 /#upgrade-procedures など

0
Dave Brondsema