參考文檔:https://www.elastic.co/guide/en/elasticsearch/reference/5.1/modules-snapshots.htmlhtml
備份數據以前,要建立一個倉庫來保存數據,倉庫的類型支持Shared filesystem, Amazon S3, HDFS和Azure Cloud。
fs倉庫示例:
須要在elasticsearch.yml添加以下配置:
path.repo: ["/data1/esdata/backup"]
注意:這裏fs是Shared filesystem, such as a NAS,本地文件集羣不支持,單節點能夠用本地文件
curl -XPUT http://127.0.0.1:9200/_snapshot/backup_feeds -d'
{
"type": "fs",
"settings": {
"location": "feeds"
}
}'java
hdfs倉庫示例:
a.每一個節點安裝插件
/opt/17173/elasticsearch/bin/elasticsearch-plugin install repository-hdfs
b.從hadoop複製配置文件hdfs-site.xml和core-site.xml到elasticsearch/config目錄下
c./opt/17173/elasticsearch/plugins/repository-hdfs/plugin-security.policy增長以下配置,注意行註釋不要用#
permission java.lang.RuntimePermission "accessDeclaredMembers";
permission java.lang.RuntimePermission "getClassLoader";
permission java.lang.RuntimePermission "shutdownHooks";
permission java.lang.reflect.ReflectPermission "suppressAccessChecks";
permission javax.security.auth.AuthPermission "doAs";
permission javax.security.auth.AuthPermission "getSubject";
permission javax.security.auth.AuthPermission "modifyPrivateCredentials";
permission java.security.AllPermission;
permission java.util.PropertyPermission "*", "read,write";
permission javax.security.auth.PrivateCredentialPermission "org.apache.hadoop.security.Credentials * \"*\"", "read";
d.config/jvm.options增長一行
-Djava.security.policy=file:///opt/17173/elasticsearch/plugins/repository-hdfs/plugin-security.policyapache
e.以上配置每一個節點保持一致,而後逐個節點重啓bash
1.建立一個倉庫(creating the repository)
curl -XPUT http://127.0.0.1:9200/_snapshot/backup_feeds -d'
{
"type": "hdfs",
"settings": {
"uri": "hdfs://hadoop73:9000/",
"path": "elasticsearch/respositories/feeds",
"compress": "true",
"chunk_size": "10mb",
"load_defaults": "true",
"user":"hadoop",
"conf_location": ["/opt/17173/elasticsearch/core-site.xml","/opt/17173/elasticsearch/hdfs-site.xml"]
}
}'curl
查看倉庫信息
curl -XGET 'http://localhost:9200/_snapshot/backup_feeds?pretty'jvm
2.備份索引
curl -XPUT http://127.0.0.1:9200/_snapshot/backup_feeds/snapshot_20170920?wait_for_completion=true?pretty -d'
{
"indices": "feed_info,play_following"
}'elasticsearch
全部索引進行快照:
curl -XPUT "localhost:9200/_snapshot/backup_feeds/snapshot_20170920?wait_for_completion=true?pretty"ide
三、查看快照信息
curl -XGET http://127.0.0.1:9200/_snapshot/backup_feeds/snapshot_20170920
查看全部快照信息
curl -XGET http://127.0.0.1:9200/_snapshot/backup_feeds/_all
查看快照狀態
curl -XGET http://127.0.0.1:9200/_snapshot/backup_feeds/snapshot_20170920/_status
4.刪除備份
curl -XDELETE http://127.0.0.1:9200/_snapshot/backup_feeds/snapshot_20170920oop
5恢復
curl -XPOST http://127.0.0.1:9200/_snapshot/backup_feeds/snapshot_20170920/_restore
恢復全部索引:
curl -XPOST "localhost:9200/_snapshot/backup_feeds/snapshot_20170920/_restore?wait_for_completion=true"
恢復某個索引:
curl -XPOST "localhost:9200/_snapshot/backup_feeds/snapshot_20170920/_restore?wait_for_completion=true" -d '{"indices":"feed_info","ignore_unavailable":"true"}'
注意:
快照恢復前須要關掉索引
curl -XPOST "localhost:9200/feed_info/_close"
curl -XPOST "localhost:9200/play_following/_close"
開啓索引
curl -XPOST "localhost:9200/my_index/_open"ui
天天定時備份索引,刪除30天以前備份數據 es_backup.sh
#!/bin/bash
##天天定時備份索引,刪除30天以前備份數據
#0 0 * * * sh /opt/17173/elasticsearch/bin/es_backup.sh >> /tmp/es_backup.log
cd `dirname $0`
BIN_DIR=`pwd`
DATE=`date +%Y%m%d`echo "備份ES索引:$DATE "curl -XPUT http://127.0.0.1:9200/_snapshot/backup_feeds/snapshot_${DATE}?wait_for_completion=true?pretty -d'{"indices": "feed_info,play_following"}'echo ""DEL_DATE=`date +%Y%m%d --date "30 days ago"`echo "刪除ES索引備份:$DEL_DATE "curl -XDELETE http://127.0.0.1:9200/_snapshot/backup_feeds/snapshot_${DEL_DATE}echo ""