elasticsearch数据备份和恢复

备份步骤:

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

原文链接:https://blog.csdn.net/jiahao1186/java/article/details/81058022

你可能感兴趣的:(elasticsearch,大数据)