Elasticsearch数据备份与恢复

溪渠
转载请注明原创出处,谢谢!
如果读完觉得有收获的话,欢迎点赞加关注

1. 安装elasticsearch-repository-hdfs插件

如果需要使用hdfs作为snapshot的备份地址,需要先安装elasticsearch-repository-hdfs插件。

  • 在线安装
    ./plugin install elasticsearch/elasticsearch-repository-hdfs/2.1.1
  • 离线安装
    从插件镜像地址下载插件压缩包,然后执行
    ./plugin install file:///elasticsearch-repository-hdfs-2.2.0-rc1-hadoop2.zip

目前2.1.1版本对应的插件无法使用,要使用2.2.0-rc1版本,所有节点都需要安装该插件。
在elasticsearch.yml中配置如下保证elasticsearch可以对hdfs进行读写。

security.manager.enabled: false

2. 配置仓库地址

一般我们需要在Elasticsearch集群所有节点的elasticsearch.yml文件中配置数据备份的仓库地址,如下:

path.repo: ["/opt/es-snapshot-repo"]

3. 注册仓库

Elasticsearch支持多种仓库注册方式:

  • S3 repository support
  • HDFS repository support in Hadoop environments
  • Azure storage repositories
  • Google Cloud Storage repositories

1. 使用file system注册

curl -XPUT 'http://localhost:9200/_snapshot/backup' -d 
'{
    "type": "fs",
    "settings": {
        "location": "/opt/es-snapshot-repo",
        "compress": true
    }
}'

2. 使用hdfs注册

uri指定了HadoopNameNode地址

curl -XPUT 'http://localhost:9200/_snapshot/my_hdfs_repository' -d 
'{
  "type": "hdfs",
  "settings": {
    "uri": "hdfs://namenode:9000/",
    "path": "elasticsearch/respositories/my_hdfs_repository"
  }
}'

4. 创建snapshot

Elasticsearch创建数据快照是以index为单位进行的,可以使用缺省模式默认创建所有index的副本,也可以进行指定。
对所有index创建snapshot:

curl -XPUT 'http://localhost:9200/_snapshot/backup/snapshot_1?wait_for_completion=true'

指定index创建snapshot:

curl -XPUT 'http://localhost:9200 /_snapshot/backup/snapshot_2' -d 
{
  "indices": "index_name1,index_name2",
  "ignore_unavailable": true,
  "include_global_state": false
}

快照创建时不会影响搜索查询,并且快照创建过程启动后,新的数据不会被记录到快照中,同一时刻只能有一份快照被创建。


5. 删除snapshot

删除指定快照

curl -XDELETE 'http://172.24.63.16:9200/_snapshot/backup/snapshot_1?pretty'

删除整个仓库

curl -XDELETE 'http://172.24.63.16:9200/_snapshot/backups?pretty'

删除操作还可以终止一个正在进行的快照备份。


6. 恢复snapshot

在两个不同的ES集群中迁移恢复数据时,我们需要保证一些条件。

  • 新集群版本应该比创建snapshot的集群版本更高
  • 新集群应该有足够的空间存储快照中的所有index,当然也可以指定部分index恢复以适应小集群
  • 如果旧集群中有index的shard分配到指定的节点上,那么新集群恢复时也会遵循此规则,因此如果新集群不包含指定节点时,这一部分index将无法恢复

恢复指令:

curl -XPOST 'http://localhost:9200/_snapshot/backup/snapshot_1/_restore?pretty'

溪渠
2017 年 03月 13日

你可能感兴趣的:(Elasticsearch数据备份与恢复)