18
0
Fork 0

Mise à jour (partielle) de la doc MongoDB

This commit is contained in:
Jérémy Lecour 2017-04-19 14:22:58 +02:00 committed by Jérémy Lecour
parent 69218c2842
commit 5eb311c973
1 changed files with 72 additions and 58 deletions

View File

@ -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.** **Cette page a été importée automatiquement de notre ancien wiki mais n'a pas encore été révisée.**
* Documentation (2.4) : <https://docs.mongodb.com/v2.4/>
* <http://www.mongodb.org/display/DOCS/Home> * Référence de configuration (2.4) : <https://docs.mongodb.com/v2.4/reference/configuration-options/>
* <http://docs.mongodb.org/v2.4/reference/configuration-options/> * Documentation (3.4) : <https://docs.mongodb.com/manual/>
* Référence de configuration (3.4) : <https://docs.mongodb.com/manual/reference/configuration-options/>
## Installation ## 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 # aptitude install mongodb
~~~ ~~~
### Paquet de 10Gen
Mais il existe aussi des paquets Debian distribués par MongoDB. L'éditeur de MongoDB fourni des paquets pour Debian, depuis leur dépôt. La version 3.4 est disponible.
Pour cela on ajoutera la ligne suivante dans son fichier _sources.list_ :
~~~ ~~~
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 : Puis :
~~~ ~~~
# aptitude install mongodb-org-server # apt install mongodb-org
~~~ ~~~
Tous les détails sont disponibles sur <https://docs.mongodb.com/manual/tutorial/install-mongodb-on-debian/>.
## Logrotate ## Logrotate
Les paquets fournis par 10gen n'ont pas de logrotate ! ### 3.4
Pour gérer la rotation des logs, on propose de mettre en place un script Shell du type :
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 /var/log/mongod.log {
daily
#!/bin/sh missingok
rotate 365
kill -USR1 `cat /var/lib/mongodb/mongod.lock 2>/dev/null` && sleep 1 dateext
#gzip --best /var/log/mongodb/mongodb.log.????-??-??T??-??-?? compress
gzip --best /var/log/mongodb/mongod.log.????-??-??T??-??-?? delaycompress
find /var/log/mongodb -name "mongodb.log.*.gz" -mtime +365 -delete notifempty
sharedscripts
# chown root: /etc/cron.daily/mongodb postrotate
# chmod 700 /etc/cron.daily/mongodb 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 : <https://docs.mongodb.com/manual/reference/command/logRotate/>.
Note : attention, mongodb-org-server 2.4 génère des logs *mongodb.log** mais en 3.2 des logs *mongod.log** 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 <http://docs.mongodb.org/manual/tutorial/rotate-log-files/>
## Configuration ## 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. La configuration de MongoDB se trouve dans le fichier `/etc/mongodb.conf` :
~~~
# 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_ :
~~~ ~~~
bind_ip = 127.0.0.1 bind_ip = 127.0.0.1
@ -94,13 +91,19 @@ auth = true
#slowms = 42 #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 !! 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 ## Authentification
<http://www.mongodb.org/display/DOCS/Security+and+Authentication> ### 2.4
<https://docs.mongodb.com/v2.4/core/security-introduction/>
MongoDB a deux modes de fonctionnement pour l'authentification : 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 <https://jira.mongodb.org/browse/SERVER-5952> 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 <https://jira.mongodb.org/browse/SERVER-5952>
### Mode sans aucune authentification #### Mode sans aucune authentification
La configuration sans authentification se fait ainsi : 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 Ce mode est donc assez dangereux : il faut s'assurer que seuls des programmes de confiance accèdent
au port TCP de MongoDB. 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). 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"); > db.removeUser("foo");
~~~ ~~~
### 3.4
<https://docs.mongodb.com/manual/security/>
## Utilisation ## Utilisation
En ligne de commande : En ligne de commande :
@ -269,7 +276,9 @@ foreach ($res as $obj) {
## Sauvegarde ## Sauvegarde
<http://www.mongodb.org/display/DOCS/Backups> ### 2.4
<https://docs.mongodb.com/v2.4/core/backups/>
~~~ ~~~
# mkdir /home/backup/mongodump # mkdir /home/backup/mongodump
@ -277,12 +286,17 @@ foreach ($res as $obj) {
# mongodump # mongodump
~~~ ~~~
### 3.4
Il exise plus de possibilités de sauvegarde dans les versions récentes :
<https://docs.mongodb.com/manual/core/backups/>
## Réplication avec replica set ## 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 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. 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 <https://docs.mongodb.com/manual/tutorial/configure-x509-member-authentication/.> Si vos mongod ne sont pas sur un LAN il est recommandé de mettre en place du TLS avec <https://docs.mongodb.com/manual/tutorial/configure-x509-member-authentication/.>
Sinon on pourra utiliser un keyfile <https://docs.mongodb.com/manual/tutorial/deploy-replica-set-with-keyfile-access-control/> Sinon on pourra utiliser un keyfile <https://docs.mongodb.com/manual/tutorial/deploy-replica-set-with-keyfile-access-control/>
@ -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. 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. 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, 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) : Voici la procédure pour passer en Mongo 2.0 (version sortie en sept/oct 2011) :
~~~ ~~~
# aptitude update # aptitude update
# aptitude install mongodb-10gen # aptitude install mongodb-10gen
~~~ ~~~