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日

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,062评论 19 139
  • 翻译自官网, 水平有限,用于自查。转载请注明网址: http://www.jianshu.com/p/f53ce0...
    朱柏霖阅读 5,037评论 0 1
  • 我们的系统中大部分都是时序数据,一些数据被清洗后,过期的数据意义已经不大,但是保不齐哪天需要重新清洗或者查阅历史,...
    RomainXie阅读 11,686评论 0 1
  • 长期运维elasticsearch时,你可能会遇到一个非常实用的需求:elasticsearch集群的存储空间有限...
    king_wang阅读 9,861评论 1 1
  • 枫林诗话-诗与存在 海德格尔说:“人的本质是诗意的,人是诗意地栖息在大地上的”,又说:“人活在自己的语言中,语言是...
    柳枫林阅读 1,625评论 8 7

友情链接更多精彩内容