Mise à jour (partielle) de la doc MongoDB
This commit is contained in:
parent
69218c2842
commit
5eb311c973
126
HowtoMongoDB.md
126
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
|
||||
~~~
|
||||
|
||||
Tous les détails sont disponibles sur <https://docs.mongodb.com/manual/tutorial/install-mongodb-on-debian/>.
|
||||
|
||||
## 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 : <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**
|
||||
|
||||
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
|
||||
|
||||
### 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
|
||||
|
||||
<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/>
|
||||
|
|
Loading…
Reference in New Issue