From 5eb311c9734970eb08a95bed9f0734030d8dd9a1 Mon Sep 17 00:00:00 2001 From: Jeremy Lecour Date: Wed, 19 Apr 2017 14:22:58 +0200 Subject: [PATCH] =?UTF-8?q?Mise=20=C3=A0=20jour=20(partielle)=20de=20la=20?= =?UTF-8?q?doc=20MongoDB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- HowtoMongoDB.md | 130 +++++++++++++++++++++++++++--------------------- 1 file changed, 72 insertions(+), 58 deletions(-) diff --git a/HowtoMongoDB.md b/HowtoMongoDB.md index 805fb715..0c37640b 100644 --- a/HowtoMongoDB.md +++ b/HowtoMongoDB.md @@ -4,85 +4,82 @@ title: Howto MongoDB **Cette page a été importée automatiquement de notre ancien wiki mais n'a pas encore été révisée.** - -* -* +* Documentation (2.4) : +* Référence de configuration (2.4) : +* Documentation (3.4) : +* Référence de configuration (3.4) : ## Installation -Pour installer le package Debian officiel (2.4) : +### Paquet Debian stable + +C'est la verison 2.4 qui est disponible dans les paquets stables de Debian : ~~~ # aptitude install mongodb ~~~ +### Paquet de 10Gen -Mais il existe aussi des paquets Debian distribués par MongoDB. -Pour cela on ajoutera la ligne suivante dans son fichier _sources.list_ : +L'éditeur de MongoDB fourni des paquets pour Debian, depuis leur dépôt. La version 3.4 est disponible. ~~~ -deb http://downloads-distro.mongodb.org/repo/debian-sysvinit dist 10gen +# apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 0C49F3730359A14518585931BC711F9BA15703C6 +# echo "deb http://repo.mongodb.org/apt/debian wheezy/mongodb-org/3.4 main" >> /etc/apt/sources.list.d/mongodb.list ~~~ Puis : ~~~ -# aptitude install mongodb-org-server +# apt install mongodb-org ~~~ +Tous les détails sont disponibles sur . + ## Logrotate -Les paquets fournis par 10gen n'ont pas de logrotate ! -Pour gérer la rotation des logs, on propose de mettre en place un script Shell du type : +### 3.4 + +Les paquets fournis par 10Gen n'ont pas de logrotate ! +On peut simplement ajouter cette configuration dans `/etc/logrotate.d/mongodb` ~~~ -# cat /etc/cron.daily/mongodb - -#!/bin/sh - -kill -USR1 `cat /var/lib/mongodb/mongod.lock 2>/dev/null` && sleep 1 -#gzip --best /var/log/mongodb/mongodb.log.????-??-??T??-??-?? -gzip --best /var/log/mongodb/mongod.log.????-??-??T??-??-?? -find /var/log/mongodb -name "mongodb.log.*.gz" -mtime +365 -delete - -# chown root: /etc/cron.daily/mongodb -# chmod 700 /etc/cron.daily/mongodb +/var/log/mongod.log { + daily + missingok + rotate 365 + dateext + compress + delaycompress + notifempty + sharedscripts + postrotate + kill -0 $(cat /var/lib/mongodb/mongod.lock) && kill -USR1 $(cat /var/lib/mongodb/mongod.lock) + endscript +} ~~~ +Il faut aussi penser à modifier la configuration (`/etc/mongod.conf`) pour forcer le mode _reopen_ : + +~~~ +systemLog: + destination: file + logRotate: reopen + logAppend: true + path: /var/log/mongod.log +~~~ + +Il y a tout un chapitre (pas toujours très clair) sur la maière de gérer la rotation de logs : . + + Note : attention, mongodb-org-server 2.4 génère des logs *mongodb.log** mais en 3.2 des logs *mongod.log** -On peut également forcer une rotation simple en ligne de commande : - -~~~ -$ mongo admin -MongoDB shell version: 2.4.9 -connecting to: admin -> db.runCommand('logRotate') -{ "ok" : 1 } -~~~ - -Plus d'infos sur ## Configuration -### Unité systemd +### 2.4 -En 3.2, le paquet mongo contient une unité systemd mais elle n'est pas compatible avec la version de systemd de Debian. On devra donc patcher l'unité ainsi. - - -~~~ -# systemctl cat mongod > /etc/systemd/system/mongod.service -# sed -i 's/ #.*//g' /etc/systemd/system/mongod.service -# sed -i '/Tasks/d' /etc/systemd/system/mongod.service -# systemctl daemon-reload -# systemctl enable mongod && systemctl start mongod -~~~ - - -### 2.6 - - -La configuration de MongoDB se trouve dans le fichier _/etc/mongodb.conf_ : +La configuration de MongoDB se trouve dans le fichier `/etc/mongodb.conf` : ~~~ bind_ip = 127.0.0.1 @@ -94,13 +91,19 @@ auth = true #slowms = 42 ~~~ -ATTENTION : la configuration de MongoDB est *très* spéciale... si vous voulez désactiver les logs verbose +ATTENTION : la configuration de MongoDB est *très* spéciale… si vous voulez désactiver les logs verbose par exemple, il ne faut pas faire _verbose # false_ car _verbose NIMPORTEQUOI_ active les logs verbeux !! -Il faut donc se méfier et suivre à lettre la documentation... +Il faut donc se méfier et suivre la documentation à la lettre… + +### 3.4 + +La configuration de MongoDB se trouve dans le fichier `/etc/mongod.conf` et le format a changé. ## Authentification - +### 2.4 + + MongoDB a deux modes de fonctionnement pour l'authentification : @@ -109,7 +112,7 @@ MongoDB a deux modes de fonctionnement pour l'authentification : Info : activer l'authentification génère des logs à chaque requête d'authentification qu'il n'est pas possible de désactiver avant la version 2.8 : voir -### Mode sans aucune authentification +#### Mode sans aucune authentification La configuration sans authentification se fait ainsi : @@ -121,7 +124,7 @@ Dans ce mode, il n'y a besoin d'aucun login / mot de passe pour accéder à l'en Ce mode est donc assez dangereux : il faut s'assurer que seuls des programmes de confiance accèdent au port TCP de MongoDB. -### Mode avec authentification +#### Mode avec authentification ATTENTION, ce mode doit être correctement configuré (ce qui n'est pas le cas par défaut). @@ -177,6 +180,10 @@ Enfin, pour supprimer un utilisateur : > db.removeUser("foo"); ~~~ +### 3.4 + + + ## Utilisation En ligne de commande : @@ -269,7 +276,9 @@ foreach ($res as $obj) { ## Sauvegarde - +### 2.4 + + ~~~ # mkdir /home/backup/mongodump @@ -277,12 +286,17 @@ foreach ($res as $obj) { # mongodump ~~~ +### 3.4 + +Il exise plus de possibilités de sauvegarde dans les versions récentes : + + ## Réplication avec replica set La réplication avec "replica set" nécessite au moins 3 machines : en effet, il va y avoir une élection du master vers lequel seront faites toutes les écritures. -### En Version 3.2 +### En Version 3.2+ Si vos mongod ne sont pas sur un LAN il est recommandé de mettre en place du TLS avec Sinon on pourra utiliser un keyfile @@ -658,7 +672,7 @@ Plusieurs méthodes selon cas. 1. Si la journalisation est activé, ce qui est le cas par défaut pour les version >1.9.2 et en 64 bits. MongoDB devrait automatiquement se servir des fichiers journaux, regardez si tout se passe bien dans les logs. -Si malheureusement ce message apparaît : +Si malheureusement ce message apparaît : ~~~ old lock file: mongod.lock. probably means unclean shutdown, @@ -695,7 +709,7 @@ db.repairDatabase(); Voici la procédure pour passer en Mongo 2.0 (version sortie en sept/oct 2011) : ~~~ -# aptitude update +# aptitude update # aptitude install mongodb-10gen ~~~