Elasticsearch: mettre à jour gestion des snapshots
This commit is contained in:
parent
b03262846c
commit
d30e312372
|
@ -844,29 +844,27 @@ Dans `/etc/kibana/kibana.yml`, on doit faire les changelents suivants :
|
|||
|
||||
Puis redémarrer Kibana `systemctl restart kibana`
|
||||
|
||||
## Snapshots et sauvegardes
|
||||
## _Snapshots_ et sauvegardes
|
||||
|
||||
### Configuration des snapshots
|
||||
|
||||
Documentation : <http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/modules-snapshots.html>
|
||||
|
||||
Il faut définir un répertoire pour stocker les snapshots :
|
||||
Il faut définir un répertoire où enregistrer les _snapshots_ :
|
||||
|
||||
~~~
|
||||
# install -d -o elasticsearch -g elasticsearch -m 750 /home/backup-elasticsearch
|
||||
~~~
|
||||
|
||||
*Note* : en cas de cluster multi-nœuds, le répertoire de snapshots doit impérativement être partagé entre chaque nœud, classiquement via NFS, car chaque nœud ne gère que ses propres données.
|
||||
*Attention* : en cas de _cluster_ multi-nœuds, le répertoire de _snapshots_ doit impérativement être partagé entre chaque nœud, classiquement via NFS, car chaque nœud ne gère que ses propres données.
|
||||
|
||||
Après avoir créé le répertoire des snapshots et chown(8) sur l’usager / groupe elasticsearch.
|
||||
|
||||
On précise le répertoire des snapshots dans la configuration `/etc/elasticsearch/elasticsearch.yml` :
|
||||
Après avoir créé le répertoire à _snapshots_ pour l’utilisateur et le groupe `elasticsearch`, on précise le répertoire dans la fichier `/etc/elasticsearch/elasticsearch.yml` :
|
||||
|
||||
~~~
|
||||
path.repo: /home/backup-elasticsearch
|
||||
~~~
|
||||
|
||||
Il faut redémarrer Elasticsearch et créer un ensemble de snapshots (snapshots repository) ainsi :
|
||||
Il faut redémarrer Elasticsearch et créer un dépôt de _snapshots_ :
|
||||
|
||||
~~~
|
||||
$ curl -H'Content-Type: application/json' -XPUT 'http://localhost:9200/_snapshot/snaprepo' -d '{
|
||||
|
@ -879,34 +877,34 @@ $ curl -H'Content-Type: application/json' -XPUT 'http://localhost:9200/_snapshot
|
|||
{"acknowledged":true}
|
||||
~~~
|
||||
|
||||
On peut ainsi lister les infos :
|
||||
Pour vérifier :
|
||||
|
||||
~~~
|
||||
$ curl -XGET 'http://localhost:9200/_snapshot/?pretty'
|
||||
{
|
||||
"foo" : {
|
||||
"snaprepo" : {
|
||||
"type" : "fs",
|
||||
"settings" : {
|
||||
"compress" : "true",
|
||||
"location" : "/home/backup-elasticsearch/foo"
|
||||
"location" : "/home/backup-elasticsearch"
|
||||
}
|
||||
}
|
||||
}
|
||||
~~~
|
||||
|
||||
Si l'on veut supprimer un ensemble de snapshots :
|
||||
Si l'on veut supprimer un dépôt de _snapshots_ :
|
||||
|
||||
~~~
|
||||
$ curl -s -XDELETE "localhost:9200/_snapshot/foo?pretty"
|
||||
$ curl -s -XDELETE "localhost:9200/_snapshot/snaprepo?pretty"
|
||||
{"acknowledged":true}
|
||||
~~~
|
||||
|
||||
### Gestion des snapshots
|
||||
|
||||
Pour créer un snapshot dans l'ensemble **foo** :
|
||||
Pour créer un _snapshot_ dans le dépôt `snaprepo` :
|
||||
|
||||
~~~
|
||||
$ curl -s -XPUT "localhost:9200/_snapshot/foo/snapshot_test?wait_for_completion=true"
|
||||
$ curl -s -XPUT "localhost:9200/_snapshot/snaprepo/snapshot_test?wait_for_completion=true"
|
||||
|
||||
$ ls -l /home/backup-elasticsearch
|
||||
-rw-r--r-- 1 elasticsearch elasticsearch 34 Apr 11 01:35 index
|
||||
|
@ -915,16 +913,16 @@ drwxr-xr-x 22 elasticsearch elasticsearch 4096 Apr 11 01:35 indices
|
|||
-rw-r--r-- 1 elasticsearch elasticsearch 419 Apr 11 01:35 snapshot-snapshot_test
|
||||
~~~
|
||||
|
||||
Si l'on tente de créer un snapshot déjà existant, on obtiendra :
|
||||
Si l'on tente de créer un _snapshot_ déjà existant, on obtiendra :
|
||||
|
||||
~~~
|
||||
{"error":"InvalidsnapshotNameException[[backup:snapshot_test] Invalid snapshot name [snapshot_test], snapshot with such name already exists]","status":400}
|
||||
~~~
|
||||
|
||||
Lister les snapshots :
|
||||
Lister les _snapshots_ :
|
||||
|
||||
~~~
|
||||
$ curl -XGET "localhost:9200/_snapshot/foo/_all?pretty=true"
|
||||
$ curl -XGET "localhost:9200/_snapshot/snaprepo/_all?pretty=true"
|
||||
|
||||
[...]
|
||||
"snapshots" : [ {
|
||||
|
@ -952,33 +950,17 @@ $ curl -XGET "localhost:9200/_snapshot/foo/_all?pretty=true"
|
|||
"successful" : 86
|
||||
~~~
|
||||
|
||||
Pour supprimer un snapshot :
|
||||
Pour supprimer un _snapshot_ :
|
||||
|
||||
~~~
|
||||
$ curl -s -XDELETE "localhost:9200/_snapshot/foo/snapshot_test"
|
||||
$ curl -s -XDELETE "localhost:9200/_snapshot/snaprepo/snapshot_test"
|
||||
~~~
|
||||
|
||||
### Sauvegarde via snapshots
|
||||
#### Sauvegarde via _snapshots_
|
||||
|
||||
Il faut donc avoir une directive `path.repo: ["/home/backup-elasticsearch"]` prise en compte par Elasticsearch avec un répertoire existant.
|
||||
Puis on crée
|
||||
On suppose qu’on a déjà configuré un dépôt de _snapshots_.
|
||||
|
||||
Créons un snapshot repository nommé `snaprepo` :
|
||||
|
||||
~~~
|
||||
$ curl -XPUT 'http://localhost:9200/_snapshot/snaprepo' -d '{
|
||||
"type": "fs",
|
||||
"settings": {
|
||||
"location": "/home/backup-elasticsearch",
|
||||
"compress": true
|
||||
}
|
||||
}'
|
||||
{"acknowledged":true}
|
||||
~~~
|
||||
|
||||
On peut ainsi créer régulièrement des snapshots pour les sauvegardes.
|
||||
|
||||
Pour créer un snapshot toutes les heures, et en conserver 24 en permanence (notion de snapshots "roulants") :
|
||||
On peut ainsi régulièrement des _snapshots_ pour les sauvegardes. Pour créer un _snapshot_ toutes les heures et en conserver 24 en permanence (notion de _snapshots_ "roulants") :
|
||||
|
||||
~~~
|
||||
$ date=$(date +%H)
|
||||
|
@ -986,7 +968,7 @@ $ curl -s -X DELETE "127.0.0.1:9200/_snapshot/snaprepo/h${date}" | grep -v -Fx '
|
|||
$ curl -s -X PUT "127.0.0.1:9200/_snapshot/snaprepo/h${date}?wait_for_completion=true" -o /tmp/es_snapshot_h${date}.log
|
||||
~~~
|
||||
|
||||
Plus classiquement pour avoir un snapshot par jour :
|
||||
Plus classiquement pour avoir un _snapshot_ par jour :
|
||||
|
||||
~~~
|
||||
$ date=$(date +%F)
|
||||
|
@ -994,7 +976,7 @@ $ curl -s -XDELETE "localhost:9200/_snapshot/snaprepo/snapshot_${date}" | grep -
|
|||
$ curl -s -XPUT "localhost:9200/_snapshot/snaprepo/snapshot_${date}?wait_for_completion=true" -o /tmp/es_snapshot_${date}.log
|
||||
~~~
|
||||
|
||||
On peut ensuite purger les snapshots vieux de plus de 10 jours ainsi :
|
||||
On peut ensuite purger les _snapshots_ vieux de plus de 10 jours ainsi :
|
||||
|
||||
~~~
|
||||
$ cd /home/backup-elasticsearch/snaprepo
|
||||
|
@ -1002,7 +984,7 @@ $ for i in $(ls -1d snapshot-* | head -n -10 | sed s'/snapshot-snapshot_//g'); d
|
|||
hot_${i}"; done
|
||||
~~~
|
||||
|
||||
Dans le cas de snapshot pour un ElasticSearsch clusterisé :
|
||||
Dans le cas de _snapshot_ pour un ElasticSearsch _clusterisé_ :
|
||||
|
||||
~~~
|
||||
# if ss | grep ':nfs' | grep -q 'ip\.add\.res\.s1' && ss | grep ':nfs' | grep -q 'ip\.add\.res\.s2'
|
||||
|
@ -1019,18 +1001,18 @@ Dans le cas de snapshot pour un ElasticSearsch clusterisé :
|
|||
# curl -s -XPUT "localhost:9200/_snapshot/snaprepo/snapshot_${date}?wait_for_completion=true" -o /tmp/es_snapshot_${date}.log
|
||||
~~~
|
||||
|
||||
### Restauration d'un snapshot
|
||||
### Restauration d'un _snapshot_
|
||||
|
||||
Le snapshot doit être listé dans le snapshot repository.
|
||||
Le _snapshot_ doit être listé dans le dépôt de _snapshot_.
|
||||
|
||||
Pour restaurer le snapshot `snapshot.daily` :
|
||||
Pour restaurer le _snapshot_ `snapshot.daily` :
|
||||
|
||||
~~~
|
||||
$ curl -XPOST "localhost:9200/_snapshot/snaprepo/snapshot.daily/_restore"
|
||||
{"accepted":true}
|
||||
~~~
|
||||
|
||||
> *Note* : si vous avez un message d'erreur du type `{"error":"SnapshotRestoreException[[snaprepo:snapshot.daily] cannot restore index [foo] because it's open]","status":500}` vous pouvez fermer l'index en faisant `curl -XPOST "localhost:9200/foo/_close`
|
||||
> *Note* : si vous avez un message d'erreur du type `{"error":"SnapshotRestoreException[[snaprepo:snapshot.daily] cannot restore index [snaprepo] because it's open]","status":500}` vous pouvez fermer l'index en faisant `curl -XPOST "localhost:9200/snaprepo/_close`
|
||||
|
||||
|
||||
|
||||
|
|
Loading…
Reference in a new issue