zoukankan      html  css  js  c++  java
  • ElasticSearch快照备份及恢复

    工作步骤:

    1:建立备份快照数据挂载点,即共享文件目录(Shared Filesystem);

    2:建立快照仓储repository;

    3:建立snapshot快照备份;

    4:恢复snapshot快照数据;


    1:建立数据挂载点

    1)ES所有节点安装sshfs,可通过yum源安装,依赖epel;

    2)安装sshfs后,规划共享目录挂载点,并确定目标挂载点,注意这里要为每个节点的共享目录分配读写权限,如不确定,直接chmod 777 -共享目录路径;

    3)通过如下指令挂载共享目录至目标主机路径:

        #sshfs root@10.200.XX.XXX:/data1/esdata /data1/backups -o allow_other

        指令里的【用户名@IP地址:路径】为实际挂载节点路径及用户,后一个路径为本地节点挂载路径;

    4)将ES每个节点上的相同路径均挂载至远端的同一地址,完毕后确认已将所有节点的备份目录挂载为同一目标主机的路径下;


    2:建立快照仓储repository

    1)通过es的api建立仓储,注意body内容的单引号别丢了否则会报400 bad request

        #curl -XPUT http://10.200.XXX.XXX:9200/_snapshot/backup_38 -d 

          '{

        "type": "fs",

        "settings":

        {

          "compress": true,

          "location": "/data1/backups"    # 这里的路径就是第1步里建立的共享目录挂载路径 

        }

      }'

    执行后返回200则为成功建立;

    2)通过API可获取刚才建立的repository:

      #curl http://10.200.XXX.XXX:9200/_snapshot/backup_38

    正确返回repository信息则通过。

    2016-12-5 补充:在创建仓储过程中可能会提示如下错误说repository不在repos:

    需要在elasticsearch集群中每个节点的配置文件(/etc/elasticsearch/elasticsearch.yml)中加入如下配置项:

    path.repo: ["/data1/backups"]

    其中指定的repo路径为节点本地挂载点的路径(指向远端共享目录)

        


    3:建立snapshot快照备份

    1)通过ES的API建立snapshot:

    #curl -XPUT http://10.200.XXX.XXX:9200/_snapshot/backup_38/snapshot_20160628 -d

    '{
      "indices": "ld.*.stats,ld.log-*",

      "ignore_unavailable": true,

      "include_global_state": false

    }'

    这里的参数分别指定需要快照的index(支持*通配符),遇到不可用的index的策略(ignore),以及选择不备份公共信息。

    2)验证快照

    #curl http://10.200.XXX.XXX:9200/_snapshot/backup_38/snapshot_20160628 | python -mjson.tool

    正常情况下将返回刚才建立的快照信息。


    4:恢复snapshot快照数据

     1)拷贝备份文件

    文件服务器(及所有ES节点挂载的文件系统指向的地址)挂载目录下的内容都属于需要备份的内容,如下图所示:

    2)建立共享文件系统

    • 在拷贝了备份快照信息的主机上以相同的方式建立共享系统,步骤与之前相同;

    3)建立快照仓储repository

    • 以同样的方式建立仓储repository;

    4)数据恢复

    以下列的API来恢复数据:

    curl -XPOST http://192.168.0.1:9200/snapshot/backup_38/snapshot_20160628/_restore

    也可以通过加入如下参数来定制恢复:

    {
    "indices": "index1",
    "rename_pattern": "index_(.+)",
    "rename_replacement": "restored_index_$1"
    }

    5)查看数据恢复进度

    curl -XGET http://192.168.0.1:9200/snapshot/backup_38/snapshot_20160628/status

    注:

    数据恢复后,需要注意数据恢复的目标ES集群的插件情况(如IK分词插件)需要与原集群保持一致,恢复后通过关闭索引(head插件直接可以关闭)并启用,即可重新建立恢复后的索引。

  • 相关阅读:
    京东商城招聘自动调价系统架构师 T4级别
    MVVM架构~Knockoutjs系列之对象与对象组合
    MVVM架构~Knockoutjs系列之text,value,attr,visible,with的数据绑定
    MVVM架构~mvc,mvp,mvvm大话开篇
    JS~delegate与live
    DDD~我们应该知道的Model,DomainModel和ViewModel
    uva-11111 Generalized Matrioshkas
    盒子模型(非常形象)
    SQL Server提高并发查询效率
    uva-11234 Expressions
  • 原文地址:https://www.cnblogs.com/you-you-111/p/5623863.html
Copyright © 2011-2022 走看看