Browse Source

Mise à jour (partielle) de la doc MongoDB

master
Jérémy Lecour 4 years ago
committed by Jérémy Lecour
parent
commit
5eb311c973
  1. 122
      HowtoMongoDB.md

122
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.**
* <http://www.mongodb.org/display/DOCS/Home>
* <http://docs.mongodb.org/v2.4/reference/configuration-options/>
* Documentation (2.4) : <https://docs.mongodb.com/v2.4/>
* Référence de configuration (2.4) : <https://docs.mongodb.com/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
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
~~~
## 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 :
Tous les détails sont disponibles sur <https://docs.mongodb.com/manual/tutorial/install-mongodb-on-debian/>.
~~~
# cat /etc/cron.daily/mongodb
## Logrotate
#!/bin/sh
### 3.4
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
Les paquets fournis par 10Gen n'ont pas de logrotate !
On peut simplement ajouter cette configuration dans `/etc/logrotate.d/mongodb`
# 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
}
~~~
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 :
Il faut aussi penser à modifier la configuration (`/etc/mongod.conf`) pour forcer le mode _reopen_ :
~~~
$ mongo admin
MongoDB shell version: 2.4.9
connecting to: admin
> db.runCommand('logRotate')
{ "ok" : 1 }
systemLog:
destination: file
logRotate: reopen
logAppend: true
path: /var/log/mongod.log
~~~
Plus d'infos sur <http://docs.mongodb.org/manual/tutorial/rotate-log-files/>
## Configuration
### Unité systemd
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/>.
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
~~~
Note : attention, mongodb-org-server 2.4 génère des logs *mongodb.log** mais en 3.2 des logs *mongod.log**
### 2.6
## Configuration
### 2.4
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
<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 :
@ -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>
### 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
<https://docs.mongodb.com/manual/security/>
## Utilisation
En ligne de commande :
@ -269,7 +276,9 @@ foreach ($res as $obj) {
## Sauvegarde
<http://www.mongodb.org/display/DOCS/Backups>
### 2.4
<https://docs.mongodb.com/v2.4/core/backups/>
~~~
# 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 :
<https://docs.mongodb.com/manual/core/backups/>
## 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 <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/>
@ -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
~~~

Loading…
Cancel
Save