工作步骤:

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插件直接可以关闭)并启用,即可重新建立恢复后的索引。

最新文章

  1. 用CSS绘制最常见的形状和图形
  2. zend studio 使用总结
  3. 关于jquery-validate验证表单
  4. javascript笔记01:javascript入门介绍
  5. 使用wfastcgi在IIS上部署Python Flask应用
  6. HDU 4622 Reincarnation(后缀自动机)
  7. Android单元测试Junit (一)
  8. Android业务组件化之Gradle和Sonatype Nexus搭建私有maven仓库
  9. 【JavaScript的五种基本数据类型及转换】
  10. laravel view not found
  11. JVM 内部原理(三)— 基本概念之类文件格式
  12. 使用java调用fastDFS客户端进行静态资源文件上传
  13. oracle数据库cmd导出数据和导入数据
  14. python 第三方库下载地址
  15. cesium 加载shp格式的白模建筑
  16. React后台管理系统-file-uploader组件
  17. Selenium-java 中 对于下拉框 对于网页上的下拉框 如何定位
  18. python- python内置模块 面向对象
  19. 详解window.history
  20. python hashlib模块 logging模块 subprocess模块

热门文章

  1. 第14章 位图和位块传输_14.4 GDI位图对象(2)
  2. 社交化分享SDK for Unity
  3. Flex(flash)检测摄像头的3种状态(是否被占用,没安装摄像头,正常)
  4. jqueryUI小案例
  5. 全面解读python web 程序的9种部署方式
  6. 关于Xcode7.2版本访问相册问题
  7. Nginx 启用 https
  8. 傅盛:如何快慢“炼”金山?(转)
  9. ORACLE查出表所有的触发器及触发器详细信息
  10. 傻瓜看完都可以简单使用Git