Explication de la configuration et résumé des erreurs de la série d'entrées mongoDB

Explication de la configuration et résumé des erreurs de la série d'entrées mongoDB

La perspective DevOps de Niu Hengbo

A propos de l'auteur

Niu Hengbo, un opérateur et une personne de maintenance de première ligne, est douée pour réaliser rapidement l'exploitation et la maintenance, de zéro à l'automatisation pour les petites et moyennes entreprises. Travaille maintenant dans une entreprise médicale de big data.

  首先对昨天《入门系列之实战》两处进行排版纠正:

Explication de la configuration et résumé des erreurs de la série d'entrées mongoDB
Explication de la configuration et résumé des erreurs de la série d'entrées mongoDB

Explication du fichier de configuration Mongod 2.x

  • replSet = nom_ensemble
  • oplogSize = 1024 Taille du journal du jeu de réplication.
  • keyFile = / chemin / vers / keyfile: spécifiez le chemin du fichier de clé qui stocke les informations d'authentification.

  • lopath = / var / log / mongodb / mongod.log: chemin du fichier journal.

  • logappend = true: écrire dans le journal en mode ajout.

  • fork = true: exécuter ou non en tant que démon

port = 27017: par défaut 27017

  • dbpath = / var / lib / mongo: emplacement du fichier de base de données

  • pidfilepath = / var / run / mongodb / mongod.pid: l'emplacement du fichier PID

  • bind_ip = 127.0.0.1: Configurez le port d'écoute.

  • nojournal = true: désactive la journalisation à écriture anticipée。

  • cpu = true: active la journalisation périodique de l'utilisation du processeur et de l'attente d'E / S

  • noauth = true: s'exécute en mode d'authentification non sécurisé, la valeur par défaut est le mode non sécurisé non authentifié

  • auth = true: s'exécute en mode d'authentification sans échec.

  • verbose = true: sortie d'enregistrement détaillée

  • objcheck = true: utilisé pour vérifier les demandes des clients lors du développement d'un pilote

  • quota = true: activer la gestion des quotas de base de données

  • diaglog = 0: définir le niveau d'enregistrement oplog

    • 0 = désactivé (par défaut)
    • 1 = W
    • 2 = R
    • 3 = les deux
    • 7 = W + quelques lectures
  • nohints = true: ignorer les conseils de requête

  • httpinterface = true: désactiver l'interface http, la valeur par défaut est localhost: 28017

  • noscripting = true: désactiver les scripts côté serveur, ce qui restreindra considérablement les fonctionnalités

  • notablescan = true: ferme la table d'analyse, toute requête sera un échec d'analyse

  • noprealloc = true: désactiver la préallocation des fichiers de données

  • nssize = <size>: Spécifiez la taille du fichier .ns pour la nouvelle base de données, unité: Mo

  • directoryPerDB: true: existe-t-il un dossier pour une bibliothèque

configuration maître-esclave mongod

Le mode de jeu de réplicas n'est officiellement pas recommandé. Il est recommandé d'utiliser le partage ou le partitionnement plus le jeu de réplicas

fichier de configuration d'écriture du serveur maître


cat >/data/app/mongodb/config/mongo.conf <<EOF
logpath=/data/app/mongodb/logs/mongod.log
logappend=true
fork=true
port=27017
dbpath=/data/app/mongodb/db
pidfilepath=/data/app/mongodb/mongod.pid
bind_ip=192.168.56.12
nojournal=true
verbose=true
master=true
EOF

Configuration d'écriture du serveur esclave


cat >/data/app/mongodb/config/mongo.conf <<EOF
logpath=/data/app/mongodb/logs/mongod.log
logappend=true
fork=true
port=27017
dbpath=/data/app/mongodb/db
pidfilepath=/data/app/mongodb/mongod.pid
bind_ip=192.168.56.13
nojournal=true
verbose=true
slave = true  
source = 192.168.56.12:27017 
EOF

paramètre clé

  • maître = vrai
  • esclave = vrai
  • source = 192.168.56.12: 27017 ## Résumé des erreurs

    Erreur 1: une erreur est signalée lors de la première connexion à la base de données.


[root@localhost etc]# /application/mongodb/bin/mongo
MongoDB shell version: 3.0.4
connecting to: test
Server has startup warnings: 

[initandlisten] 
[initandlisten] ** WARNING: Readahead for /data/db/ is set to 4096KB
[initandlisten] **          We suggest setting it to 256KB (512 sectors) or less
[initandlisten] **          http://dochub.mongodb.org/core/readahead
[initandlisten] ** WARNING: You are running this process as the root user, which is not recommended.
[initandlisten] 
[initandlisten] 
[initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'.
[initandlisten] **        We suggest setting it to 'never'
[initandlisten] 
[initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'.
[initandlisten] **        We suggest setting it to 'never'
[initandlisten] 
> 

Solution: Par défaut:


[root@localhost etc]# cat /sys/kernel/mm/transparent_hugepage/enabled 
[always] madvise never
[root@localhost etc]# cat /sys/kernel/mm/transparent_hugepage/defrag 
[always] madvise never

changer en:


echo "never" > /sys/kernel/mm/transparent_hugepage/enabled
echo "never" > /sys/kernel/mm/transparent_hugepage/defrag

résultat:


[root@localhost etc]# cat /sys/kernel/mm/transparent_hugepage/enabled            
always madvise [never]
[root@localhost etc]# cat /sys/kernel/mm/transparent_hugepage/defrag            
always madvise [never]

Erreur 2: l'insertion de données est une erreur:


for ( var i = 1; i < 10; i++ ) db.things.save(n:7,h:i);
2015-06-29T22:22:27.689+0800 E QUERY    SyntaxError: Unexpected token :

Solution: erreur de format.


for ( var i = 1; i < 10; i++ ) db.things.save( { n:7,h:i } );
WriteResult({ "nInserted" : 1 })

Erreur 3: erreur d'initialisation du jeu de réplication:


> rs.initiate(config_rs1);
{
        "ok" : 0,
        "errmsg" : "replSetInitiate quorum check failed because not all proposed set members responded affirmatively: localhost:28012 failed with not running with --replSet",
        "code" : 74
}
> exit

Solution:


/application/mongodb/bin/mongod --replSet rs1 --keyFile /data/key/r2 --fork --port 28012 --dbpath /data/data/r2 --logpath=/data/log/r2.log --logappend

Erreur quatre: supprimez un autre nœud esclave sur le nœud esclave et signalez une erreur:


rs1:SECONDARY> rs.remove("localhost:28012")
{
        "ok" : 0,
        "errmsg" : "replSetReconfig should only be run on PRIMARY, but my state is SECONDARY; use the \"force\" argument to override",
        "code" : 10107
}
rs1:SECONDARY> 

Solution: le nœud esclave n'a pas l'autorisation de modifier la configuration de rs.

Erreur 5: arrêtez un nœud et ne peut pas démarrer normalement lors du démarrage du jeu de réplication:


[initandlisten] journal dir=/data/data/r0/journal
[initandlisten] recover : no journal files present, no recovery needed
 [initandlisten] 
[initandlisten] Insufficient free space for journal files
[initandlisten] Please make at least 3379MB available in /data/data/r0/journal or use --smallfiles
initandlisten] 
initandlisten] exception in initAndListen: 15926 Insufficient free space for journals, terminating
[initandlisten] ReplicationCoordinatorImpl::shutdown() called before startReplication() finished.  Shutting down without cleaning up the replication system
[initandlisten] now exiting
[initandlisten] shutdown: go

Solution: (La raison est que l'espace disque dur n'est pas suffisant)


/application/mongodb/bin/mongod --config /application/mongodb/etc/mongodb.conf.r0 --smallfiles

Erreur 6: lors de la configuration du partitionnement, l'ajout d'un serveur réel d'arrière-plan à l'extrémité du routage entraîne une erreur d'autorisation:


mongos> db.runCommand({addshard:"localhost:20000"})
{
        "ok" : 0,
        "errmsg" : "failed listing localhost:20000's databases:{ ok: 0.0, errmsg: \"not authorized on admin to execute command { listDatabases: 1 }\", code: 13 }"
}

Solution: n'ajoutez pas l'option d'authentification lors de l'ouverture du serveur réel.

Erreur 7: lors de la configuration de l'itinéraire pour gérer le serveur de configuration, une erreur est signalée:


 error upgrading config database to v6 :: caused by :: Distributed ClockSkewed clock skew of the cluster 192.168.2.145:30000,192.168.2.149:30000,192.168.2.147:30000 is too far out of bounds to allow distributed locking.

Solution: l'heure des trois serveurs est différente. Réglez l'heure du serveur sur la même valeur. problème résolu.

Erreur huit: après avoir configuré le jeu de réplication, connectez-vous à la base de données pour fonctionner, même si elle fonctionne dans la base de données principale, il vous demande que l'authentification est requise.

Solution: si le serveur MongoDB démarre avec le paramètre --auth ou --keyFile, vous devez vous authentifier avant d'effectuer toute opération. Vous pouvez vous authentifier lorsque vous vous connectez. La méthode consiste à spécifier le nom d'utilisateur et le mot de passe dans la chaîne de lien, ou à spécifier "username" et "password" dans le constructeur MongoClient :: __ construct ().

Étant donné que le fichier de clés est utilisé lors de la configuration du cluster, l'authentification doit être utilisée pour se connecter. Il n'est pas lié à la commande db.auth ().

Erreur huit: erreur de configuration IP

Lors de la configuration de --conigdb, l'adresse IP ne peut pas être remplie avec localhost ou 127.0.0.1, sinon le message d'erreur suivant sera renvoyé lors de l'ajout de fragments:


{
           "ok" : 0,
           "errmsg" : "can't use localhost as a shard since all shards need to communicate. either use all shards and configdbs in localhost or all in actual IPs  host: 192.168.71.43:27017 isLocalHost:0"
}

Je suppose que tu aimes

Origine blog.51cto.com/15127511/2658090
conseillé
Classement