====== Snapshots in elasticsearch ======
Om in een backup te maken van een index, bijvoorbeeld de ''.kibana'' index om zo de gedefinieerde Searches, Visualisations en Dashboards veilig te stellen, kan je snapshots gebruiken.
Snapshots worden geregeld door de _snapshot plug-in die standaard mee geïnstalleerd is.
===== Elasticsearch klaar maken voor snapshots =====
==== Maak een directory aan ====
Op het OS moet je een directory maken waar je de snapshots opslaat.
in mijn geval :\\
''mkdir /DATA/elasticsearch-backup\\
chown elasticsearch:elasticsearch /DATA/elasticsearch-backup''
==== Elasticsearch configuratie aanpassen ====
Maak de net gemaakte storage binnen elasticsearch bekend als snapshot repository:
''vi /etc/elasticsearch/elasticsearch.yml''
en voeg toe :
# Shared repo for snapshot backups
path.repo: ["/DATA/elasticsearch-backup"]
En herstart Elasticsearch om de nieuwe configuratie bekend te maken:
''service elasticsearch restart''
==== Maak een repository ====
We maken een repository met de naam ''index_backups'' aan:
''%%curl -XPUT localhost:9200/_snapshot/index_backups -d '{ "type": "fs", "settings": {"location": "/DATA/elasticsearch-backup", "compress": true, "chunk_size": "10m" } }' %%''
Controleer of de repository aangemaakt is:
''%%curl -XGET 'localhost:9200/_snapshot/_all?pretty=true'%%''
de output is als het klopt als volgt:
{
"index_backups" : {
"type" : "fs",
"settings" : {
"compress" : "true",
"chunk_size" : "10m",
"location" : "/DATA/elasticsearch-backup"
}
}
}
De repository is nu aangemaakt en klaar om snapshots naar te schrijven.
===== Snapshots maken naar de backup repository =====
==== Snapshot van een specifieke index ====
Met het volgende commando maak je bijvoorbeeld een snapshot van de index ''.kibana'' met als snapshot naam ''kibana_snapshot'':
''%%curl -XPUT localhost:9200/_snapshot/index_backups/kibana_snapshot -d '{ "indices": ".kibana", "ignore_unavailable": "true" }'%%''
Controleer of de snapshot gelukt is:
''curl -XGET localhost:9200/_snapshot/index_backups/kibana_snapshot?pretty=true''
de output moet iets zijn als:
{
"snapshots" : [ {
"snapshot" : "kibana_snapshot",
"version_id" : 2040099,
"version" : "2.4.0",
"indices" : [ ".kibana" ],
"state" : "SUCCESS",
"start_time" : "2017-06-29T14:23:42.105Z",
"start_time_in_millis" : 1498746222105,
"end_time" : "2017-06-29T14:23:42.277Z",
"end_time_in_millis" : 1498746222277,
"duration_in_millis" : 172,
"failures" : [ ],
"shards" : {
"total" : 1,
"failed" : 0,
"successful" : 1
}
} ]
}
==== Snapshot van alle open indices ====
je zou ook kunnen kiezen om alle open indices te backupen:
''curl -XPUT localhost:9200/_snapshot/index_backups/snapshot_naampje''
===== Snapshots verwijderen =====
Snapshots zijn eenvoudig te verwijderen doot:
''curl -XDELETE localhost:9200/_snapshot/index_backups/snapshot_naampje''
===== Snapshots gebruiken voor een restore =====
De ''.kibana'' index kan je alleen terug gezet kan worden als deze gesloten is.
je kan de ''.kibana'' index sluiten door:
''curl -XPOST localhost:9200/.kibana/_close''
en je kan hem heropenen door:
''curl -XPOST localhost:9200/.kibana/_open''
==== Een hele snapshot terug zetten ====
''curl -XPOST localhost:9200/_snapshot/index_backups/snapshot_naampje/_restore''
Dit zet alle indices in de snapshot ''snapshot_naampje'' terug.
==== Een specifieke index uit een snapshot terug zetten ====
Om 1 index uit een snapshot terug te zetten, bv de ''.kibana'' index uit ons voorbeeld snapshot:
''%%curl -XPOST localhost:9200/_snapshot/index_backups/snapshot_naampje/_restore -d '{ "indices": ".kibana" }' %%''
===== Bronnen =====
https://qbox.io/blog/elasticsearch-data-snapshots-restore-tutorial
https://en.blog.kodcu.com/2014/11/introduction-to-elasticsearch-snapshot-and-restore-module/
https://www.karelbemelmans.com/2015/03/elasticsearch-backup-script-with-snapshot-rotation/