web-dev-qa-db-fra.com

Impossible de démarrer mongodb en tant que service - Exception; La collection n'a pas d'UUID dans KVCatalog

J'ai installé Mongodb 4.2

et lors de l'exécution

Sudo service mongod start|restart

Il ne démarre pas le serveur et j'ai le journal ci-dessous dans le fichier mongod.log.

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

Voici plus de détails:


  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

Comment puis-je le réparer?

7
ako

Le problème peut être résolu par:

  1. Sauvegarde de toutes les bases de données (en utilisant mongodump)
  2. Suppression de chaque fichier dans /data/db, en raison de leur incompatibilité avec la nouvelle version: rm -rf /data/db/*
  3. Redémarrage du service MongoDB
  4. Restauration de toutes les bases de données (en utilisant mongorestore)
10
Kais

J'ai rencontré un problème similaire avec la base de données d'administration, lors de la mise à niveau de l'ancien mongodb 3.4 vers 4.2.

La solution consiste à mongodump tous les dbs et supprimer/var/lib/mongodb, puis mongorestore tous les dbs.

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

La cause du problème: mongodb 4.2 ajoutera userId avec la valeur UUID dans la collection system.user. J'espère que cela vous aidera.

Lors de la mise à niveau d'un autre mongo db, j'ai rencontré exactement le même problème que le vôtre sur startup_log, il semble que je n'ai pas arrêté le mongodb lors de la suppression du dossier/var/lib/mongodb, après l'arrêt de mongod et la suppression du/var/lib/mongodb et la mise à niveau à 4.2, l'erreur disparaît.

2
zqcolor

Un rapport de bogue sur ce problème a recommandé de suivre le chemin de mise à niveau complet et cela a fonctionné pour moi. J'ai pu revenir à mon ancienne version (3.4) lorsque j'ai rencontré cette erreur, puis mettre à niveau correctement une étape à la fois.

Plus précisément: mettez à niveau une seule version principale à la fois et vérifiez attentivement les conditions préalables et les étapes de mise à niveau. La partie la plus importante de ceci est de vérifier votre compatibilité avec db.adminCommand( { getParameter: 1, featureCompatibilityVersion: 1 } ) et assurez-vous qu'elle correspond à la version actuelle avant de passer à la version suivante. Mettez-le à jour avec db.adminCommand( { setFeatureCompatibilityVersion: "3.6" } )

Lisez les documents complets sur des pages comme https://docs.mongodb.com/manual/release-notes/3.6/#upgrade-procedureshttps://docs.mongodb.com/ manual/release-notes/4.0/# upgrade-procedures etc

0
Dave Brondsema