美文网首页工作专题
Elasticsearch数据备份与恢复

Elasticsearch数据备份与恢复

作者: anvoid | 来源:发表于2017-03-16 13:49 被阅读0次

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

    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数据备份与恢复

        本文链接:https://www.haomeiwen.com/subject/rvfjnttx.html