web-dev-qa-db-fra.com

Comment convertir un jeu de répliques MongoDB en serveur autonome

Considérez, j'ai 4 ensembles répliqués et la config est comme suit:

{
 "_id": "rs_0",
 "version": 5,
 "members" : [
  {"_id": 1, "Host": "127.0.0.1:27001"},
  {"_id": 2, "Host": "127.0.0.1:27002"},
  {"_id": 3, "Host": "127.0.0.1:27003"},
  {"_id": 4, "Host": "127.0.0.1:27004"}
 ]
}

Je peux me connecter à tous les ensembles en utilisant mongo --port <port>

Il existe des documents pour obtenir des informations sur Convertir un fichier autonome en jeu de réplicas , mais quelqu'un peut-il me dire comment reconvertir en fichier autonome à partir de jeux de réplicas?

26
Amol M Kulkarni

Supprimez simplement un hôte du jeu de réplicas (rs.remove('Host:port')), relancez-le sans le paramètre replSet.

16
Sergio Tulentsev

Supprimez tous les hôtes secondaires du jeu de réplicas (rs.remove ('Host: port')), redémarrez le paramètre mongo deamon sans le paramètre replSet (édition /etc/mongo.conf) et les hôtes secondaires redémarrent en mode autonome.

L'hôte principal est complexe, car vous ne pouvez pas le supprimer du jeu de réplicas avec rs.remove. Une fois que vous avez uniquement le noeud principal dans le jeu de réplicas, vous devez quitter mongo Shell et arrêter mongo. Ensuite, éditez le fichier /etc/mongo.conf, supprimez le paramètre replSet et redémarrez mongo à nouveau . Une fois que vous avez lancé mongo, vous êtes déjà en mode autonome, mais le shell mongo affichera un message du type: 

2015-07-31T12: 02: 51.112 + 0100 [initandlisten] ** AVERTISSEMENT: mongod a commencé sans --replSet mais 1 document est présent dans local.system.replset

pour supprimer cet avertissement, vous pouvez effectuer 2 procédures: 1) Déposer la base de données locale et redémarrer mongo: 

use local
db.dropDatabase();

/etc/init.d/mongod restart

2) Ou si vous ne voulez pas être aussi radical, vous pouvez faire:

use local
db.system.replset.find()

et un message tel que:

{ "_id" : "replicaSetName", "version" : 1, "members" : [ { "_id" : 0, "Host" : "hostprimary:mongoport" } ] }

alors vous allez l'effacer avec: 

db.system.replset.remove({ "_id" : "replicaSetName", "version" : 1, "members" : [ { "_id" : 0, "Host" : "hostprimary:mongoport" } ] })

et cela vous invitera probablement:

WriteResult({ "nRemoved" : 1 })

Maintenant, vous pouvez redémarrer le mongo et l'avertissement devrait disparaître, et vous aurez votre mongo en mode autonome sans avertissements

30
amvalente

La documentation MongoDB suggère ce qui suit pour effectuer la maintenance sur un membre du jeu de réplicas, qui met le membre du jeu de réplicas en mode autonome pour des opérations ultérieures. Avec peu de modifications, il peut être rendu autonome:

  1. Si le nœud concerné est le seul nœud dans un fragment, drainez les fragments en un autre fragment conformément à la documentation de MongoDB ici , sinon la base de données fragmentée se cassera, c.-à-d.
    • Assurez-vous que l'équilibreur est activé en vous connectant à mongos et en exécutant sh.startBalancer(timeout, interval).
    • Pour le fragment en question, accédez à la base de données admin et à db.adminCommand( { removeShard: "mongodb0" } )
    • Vérifiez l'état de vidange en répétant la commande removeShard ci-dessus, attendez que la vidange soit terminée.
  2. Si le noeud en cause est primaire, est-ce que rs.stepDown(300)
  3. Arrêtez le nœud en exécutant db.shutdownServer()
  4. Changez la configuration de yaml en:
    • commentant replication.replSetName (--replSetName en ligne de commande) 
    • commentant sharding.clusterRole pour un serveur de partition ou de configuration (--shardsvc et --configsvr en ligne de commande)
    • en commentant net.port, puis changez le en un autre port (--port en ligne de commande)
  5. Démarrer l'instance Mongod
  6. Si le changement est permanent, accédez à une autre instance de mongod et exécutez rs.remove("Host:port")

Après cela, le nœud concerné doit être opérationnel en mode autonome. 

3
Charles Lin

1) Allez sur le shell mongo sur les serveurs secondaires

2) Arrêtez les serveurs secondaires en utilisant la commande ci-dessous:

   use admin
   db.shutdownServer()

Après avoir exécuté la commande ci-dessous. Votre serveur principal deviendra automatiquement un serveur autonome.

Pour plus d'informations, veuillez consulter le lien ci-dessous: http://www.tutespace.com/2016/03/stopping-and-starting-mongodb.html

1

Sur une machine Ubuntu

  1. Arrêtez votre serveur Mongo
  2. ouvrez /etc/mongod.conf
  3. Commentez les lignes réplication et replSetName
#replication:
   #replSetName: rs0
  1. Lancez votre serveur mongo et allez à mongo Shell
  2. déposer la base de données locale

use local

db.dropDatabase()
  1. Redémarrer Mongo
1
Raj Sharma