Elasticsearch的快照与恢复

快照和恢复模块可以将单个索引或者整个集群做一个快照并存放到远程仓库上。目前支持共享文件系统仓库和官方通过插件方式提供的其他仓库。

共享文件系统仓库

1、仓库注册

在创建或恢复仓库数据之前,首先需要到ElasticSearch里进行注册,如下命令用my_backup注册一个共享文件系统,快照数据将存放在/mount/backups/my_bakup上:

$ curl -XPUT 'http://localhost:9200/_snapshot/my_backup' -d '
{
    "type": "fs",(共享的文件系统仓库)
    "settings": {
        "location": "/mount/backups/my_backup", (快照存放位置)
        "compress": true (快照是否压缩,默认true)

    }
}'

2、查看仓库信息:

$ curl -XGET 'http://localhost:9200/_snapshot/my_backup?pretty'
{
  "my_backup" : {
    "type" : "fs",
    "settings" : {
      "compress" : "true",
      "location" : "/mount/backups/my_backup"
    }
  }
}

3、创建快照

同一个集群中,一个仓库中可以存放多个快照。快照在集群中的名称是唯一的。使用下面命令创建快照名为snapshot_1的快照:

$ curl -XPUT "localhost:9200/_snapshot/my_backup/snapshot_1"-d '{
    "indices": "index_1,index_2",
    "ignore_unavailable": "true",
    "include_global_state": false
}'

4、查看快照信息:

$ curl -XGET "localhost:9200/_snapshot/my_backup/snapshot_1"

5、快照恢复

$ curl -XPOST "localhost:9200/_snapshot/my_backup/snapshot_1/_restore"-d '{
    "indices": "index_1,index_2",
    "ignore_unavailable": "true",
    "include_global_state": false,
    "rename_pattern": "index_(.+)",
    "rename_replacement": "restored_index_$1"
}'

6、监控快照创建或恢复过程

$ curl -XGET "localhost:9200/_snapshot/my_backup/snapshot_1/_status"

HDFS插件

ES的Hadoop插件,总共有3个,我们要使用的是hadoop HDFS Snapshot/Restore plugin,它主要用于备份ES数据到HDFS,或者从HDFS恢复数据,也就是ES的snapshot/restore特性。还原可以还原到别的集群,集群名字和节点数量不一样都可以,也就是可以做数据迁移。

  • elasticsearch-hadoop
  • repository-hdfs
  • elasticsearch-hdfs

安装插件

bin/plugin -i elasticsearch/elasticsearch-repository-hdfs/2.0.2

这里hadoop的版本一定要对应好,否则后面会失败的。如果自动不能安,可以手动去库里面下载,然后放到ES插件目录下面。 插件库地址

  • 创建配置
curl -XPUT 'http://localhost:9200/_snapshot/my_backup' -d '{
  "type": "hdfs",
  "settings": {
    "uri": "hdfs://myhadoop:8020",
    "path": "/es",
    "conf_location": "hdfs-site.xml"
  }
}'
{"acknowledged":true} 返回这个表示创建成功
  • 通过下面的命令,可以查看所有创建的配置
curl http://localhost:9200/_snapshot/_all
  • 备份数据
curl -XPUT "localhost:9200/_snapshot/my_backup/snapshot_1?wait_for_completion=true"

备份成功,我们可以在 http://myhadoop:50070/explorer.html#/es 下面看到我们创建的备份 image description

  • 还原数据

``` curl -XPOST "localhost:9200/_snapshot/my_backup/snapshot_1/_restore?wait_for_completion=true"