备份步骤:
1、设置备份目录(用于存储备份文件):
进入es安装目录下面的config,编辑elasticsearch.yml加入:
path.repo: ["/usr/local/backups/es_backup"] |
/usr/local/backups/es_backup:备份目录,根据自己情况进行填写
重启elasticsearch
chmod 755 /usr/local/backups/es_backup
chown es:es /usr/local/backups/es_backup
2、创建仓库:
备份数据之前,要创建一个仓库来保存数据,仓库的类型支持Shared filesystem, Amazon S3, HDFS和Azure Cloud。下面以文件系统为例:
curl -XPUT http://192.168.43.125:9200/_snapshot/es_backup { "type": "fs", "settings": { "location": "/usr/local/backups/es_backup" } } |
上面的代码,我们创建了一个名叫es_backup
的备份,存放在本地的/usr/local/backups/es_backup目录下。
除了location
参数外,还可以通过max_snapshot_bytes_per_sec
和max_restore_bytes_per_sec
来限制备份和恢复时的速度,如下:
curl -XPOST http://192.168.43.125:9200/_snapshot/es_backup/ -d ' { "type": "fs", "settings": { "location": "/usr/local/backups/es_backup", "max_snapshot_bytes_per_sec" : "50mb", "max_restore_bytes_per_sec" : "50mb" } }' |
注意:第一段代码用的是PUT
请求,用来创建repository,第二段代码用的是POST
请求,来修改已经存在的repository。
3.备份索引
仓库创建好之后就可以开始备份了。一个仓库可以包含多个快照(snapshots),快照可以存所有的索引,部分索引或者一个单独的索引。可以给索引指定一个唯一的名字:
curl -XPUT http://192.168.43.125:9200/_snapshot/es_backup/snapshot_1 |
上面的代码会将所有正在运行的索引,备份到my_backup仓库下一个叫snapshot_1的快照中。上面的api会立刻返回,然后备份工作在后台运行。如果你想api同步执行,可以加wait_for_completion
标志:
curl -XPUT http://192.168.43.125:9200/_snapshot/es_backup/snapshot_1?wait_for_completion=true |
上面的方法会在备份完成后才返回,如果数据量大的话,会花很长时间。
如果只想备份部分索引的话,可以加上indices
参数:
curl -XPUT http://192.168.43.125:9200/_snapshot/es_backup/snapshot_2 -d ' { "indices": "index_1,index_2" }' |
4 删除备份
不要手动删除文件(Elasticsearch一贯主张使用api操作,尤其是大集群中),删除snapshot_2:
curl -XDELETE http://192.168.43.125:9200/_snapshot/es_backup/snapshot_1 |
如果备份正在后台进行,也可以直接删除来取消此次备份。
5 查看备份信息
直接使用GET
请求即可:
curl -XGET http://192.168.43.125:9200/_snapshot/es_backup/snapshot_1 |
返回类似下面的值:
{ "snapshots" : [ { "snapshot" : "snapshot_1", "uuid" : "qnv2G6lvRq-vPN-GCm_COQ", "version_id" : 5000099, "version" : "5.0.0", "indices" : [ "userindex" ], "state" : "SUCCESS", "start_time" : "2017-07-24T06:22:05.873Z", "start_time_in_millis" : 1500877325873, "end_time" : "2017-07-24T06:22:06.168Z", "end_time_in_millis" : 1500877326168, "duration_in_millis" : 295, "failures" : [ ], "shards" : { "total" : 5, "failed" : 0, "successful" : 5 } } ] } |
6数据恢复
恢复snapshot_1里的全部索引
curl -XPOST http://192.168.43.125:9200/_snapshot/es_backup/snapshot_1/_restore |