Elasticsearch也提供了备份集群中索引数据的策略——snapshot API.
它会备份整个集群的当前状态和数据,并保存到集群中各个节点共享的仓库中。
这个备份的进程是增量备份的,在第一次备份的基础上进行的第二次备份只备份新变化的数据。

创建elasticsearch快照进行备份。

1、 建立NFS文件共享服务
2、修改elasticsearch配置文件elasticsearch.yml,path.repo: **共享目录挂载的路径**,
3、创建快照仓库
4、创建快照
5、恢复快照到elasticsearch集群

建立NFS文件共享服务

服务端:
1、 安装NFS服务软件:

 yum install rpcbind nfs-utils -y 

2、 建立需要共享的目录,并修改文件权限为666client用户访问id,在server中有,且对共享文件夹有rw权限

 mkdir /udisk/elasticsnapshot
chmod /udisk/elasticsnapshot -R

3、修改NFS服务配置文件, /etc/exports

/udisk/elasticsnapshot 10.9.121.211/(rw,sync,all_squash) 10.9.134.110/(rw,sync,all_squash) 10.9.90.103/(rw,sync,all_squash) 10.19.36.230/(rw,sync,all_squash) 10.19.63.103/(rw,sync,all_squash)
# /udisk/elasticsnapshot 为共享的目录, 10.9.121.211/ 为可以挂载此共享目录的IP,
# 参数说明:
# rw  ro 该目录分享的权限是可擦写 (read-write) 或只读 (read-only),但最终能不能读写,还是与文件系统的 rwx 及身份有关。
# sync  async sync 代表数据会同步写入到内存与硬盘中,async 则代表数据会先暂存于内存当中,而非直接写入硬盘!
# no_root_squash  root_squash 客户端使用 NFS 文件系统的账号若为 root 时,系统该如何判断这个账号的身份?预设的情况下,客户端 root 的身份会由 root_squash 的设定压缩成 nfsnobody, 如此对服务器的系统会较有保障。但如果你想要开放客户端使用 root 身份来操作服务器的文件系统,那么这里就得要开 no_root_squash 才行!
# all_squash 不论登入 NFS 的使用者身份为何, 他的身份都会被压缩成为匿名用户,通常也就是 nobody(nfsnobody) 啦!
# anonuid  anongid anon 意指 anonymous (匿名者) 前面关于 *_squash 提到的匿名用户的 UID 设定值,通常为 nobody(nfsnobody),但是你可以自行设定这个 UID 的值!当然,这个 UID 必需要存在于你的 /etc/passwd 当中! anonuid 指的是 UID 而 anongid 则是群组的 GID 啰。

4、 配置生效 exportfs -r
5、 启动服务

 systemctl start rpcbind
systemctl start nfs

客户端:
1、安装客户端软件:

 yum install nfs-utils -y 

2、新建挂载目录:mkdir /mnt/es
3、挂载共享目录: **为了提高NFS的稳定性,使用TCP协议挂载,NFS默认用UDP协议**

 mount -t nfs 10.10.10.10:/udisk/elasticsnapshot /mnt/es -o proto=tcp -o nolock

4、每台ES机器为客户端,进行客户端配置

修改elasticsearch的配置文件elasticsearch.yml,添加下面配置,并重启

path.repo: '/mnt/es'
创建快照仓库
PUT /_snapshot/my_backup
{
"type": "fs",
"settings": {
"location": "/mnt/es",
"compress": true, # 是否压缩
"max_snapshot_bytes_per_sec": "50mb",
"max_restore_bytes_per_sec": "50mb"
}
}

创建快照

PUT /_snapshot/my_backup/back---
{
"indices": "*", # * 表示所有index, 可以具体写哪些"logstash-iis-2017-01-07,logstash-httperr-2017-01-07",
"ignore_unavailable": true,
"include_global_state": false
}

上面的代码会将所有正在运行的索引,备份到my_backup仓库下一个叫snapshot_1的快照中。上面的api会立刻返回,然后备份工作在后台运行。如果你想api同步执行,可以加wait_for_completion标志:

PUT /_snapshot/my_backup/snapshot_1?wait_for_completion=true 

查看快照

 get _snapshot/my_backup/back---
# 会出现一下结果
{
"snapshots": [
{
"snapshot": "logstash-2017-01-07",
"uuid": "0XM7X-HcR4u9Ou7-Gjzj5w",
"version_id": ,
"version": "5.0.2",
"indices": [
"logstash-iis-2017-01-07",
"logstash-httperr-2017-01-07"
],
"state": "SUCCESS",
"start_time": "2017-01-09T09:04:03.983Z",
"start_time_in_millis": ,
"end_time": "2017-01-09T09:05:37.524Z",
"end_time_in_millis": ,
"duration_in_millis": ,
"failures": [],
"shards": {
"total": ,
"failed": ,
"successful":
}
}
]
}

1、查看所有索引的信息,使用如下api:

GET http://127.0.0.1:9200/_snapshot/my_backup/_all 

2、另外还有个一api可以看到更加详细的信息:

GET http://127.0.0.1:9200/_snapshot/my_backup/snapshot_3/_status 

快照恢复

post /_snapshot/my_backup/logstash---/_restore

1、 此api额外参数:

POST http://127.0.0.1:9200/_snapshot/my_backup/snapshot_1/_restore
{
"indices": "index_1",
"rename_pattern": "index_(.+)",
"rename_replacement": "restored_index_$1"
}

参数indices 设置只恢复index_1索引,参数rename_pattern 和rename_replacement 用来正则匹配要恢复的索引,并且重命名。和备份一样,api会立刻返回值,然后在后台执行恢复,使用wait_for_completion 标记强制同步执行。
2、 另外可以使用下面两个api查看状态:

GET http://127.0.0.1:9200/_recovery/restored_index_3
GET http://127.0.0.1:9200/_recovery/

3 取消恢复: 如果要取消恢复过程(不管是已经恢复完,还是正在恢复),直接删除索引即可

elasticsearch 使用快照进行备份的更多相关文章

  1. es快照和备份

    注册前要注意配置文件加上 path.repo: ["/data/es_backup"] 然后重启es 不然会报错doesn't match any of the locations ...

  2. mysql数据库基于LVM快照的备份

    lvm-snapshot: 基于LVM快照的备份 1.事务日志跟数据文件必须在同一个卷上          2.创建快照卷之前,要请求mysql的全局锁,在快照创建完成之后释放锁          3 ...

  3. MySQL的备份和恢复-基于LVM快照的备份(lvm-snapshot)

    MySQL的备份和恢复-基于LVM快照的备份(lvm-snapshot) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.什么是快照卷 如上图所示,原卷和快照卷可以不一样大,因为 ...

  4. 快照方式备份MySQL数据库及举例

    快照方式备份MySQL数据库及举例 作者: 红豆殺 日期: 2011 年 03 月 17 日发表评论7条评论查看评论   一.创建逻辑卷 依照如下连接的文档创建一个逻辑卷 http://www.178 ...

  5. 将Elasticsearch的快照备份到HDFS

    1.安装Elasticsearch插件repository-hdfs 下载地址:https://artifacts.elastic.co/downloads/elasticsearch-plugins ...

  6. elasticsearch snapshot快照备份和恢复

    环境:mac   使用brew 安装elasticsearch   1.在 /usr/local/etc/elasticsearch/elasticsearch.yml 文件中配置快照地址     p ...

  7. Elasticsearch的快照备份

    该文档适用于备份使用NAS的仓库类型.所有Elasticsearch集群中的服务通过挂载NAS目录来存放备份快照数据. 1.创建备份仓库 创建一个仓库名称:backup curl -H "C ...

  8. Elasticsearch 简单快照备份

    创建仓库 POST http://10.10.14.201:9200/_snapshot/backup { "type": "fs", "settin ...

  9. centos下Elasticsearch数据迁移与备份

    ########### ### 共享创建es官方网站就一句话 ########   1.下载 文件共享 .. rpm -i http://mirror.symnds.com/distributions ...

随机推荐

  1. 51nod1432贪心

    n个人,已知每个人体重.独木舟承重固定,每只独木舟最多坐两个人,可以坐一个人或者两个人.显然要求总重量不超过独木舟承重,假设每个人体重也不超过独木舟承重,问最少需要几只独木舟? Input 第一行包含 ...

  2. BIOS备忘录之IIC(touchpad)设备

    简述BIOS中对IIC device的支持,以touchpad为例. 信息收集 收集平台的硬件信息: 1. IIC controller number(PCH一般包含多个controller,我们使用 ...

  3. 3. Dubbo原理解析-Dubbo内核实现之动态编译 (转)

    转载自  斩秋的专栏  http://blog.csdn.net/quhongwei_zhanqiu/article/details/41577159 我们运行的Java代码,一般都是编译之后的字节码 ...

  4. asp.net json,对象,字符串的相互转换

    //object 转json格式字符串 public static string ObjectToJsonString(this object obj) { return JsonConvert.Se ...

  5. (转载)Unity UGUI点击不同Button执行不同的方法(无参方法)

      将脚本随意挂在任何位置 但是这个btnParent一定是 按钮的父节点   脚本很简单自己敲一遍就全都明白了 上脚本 OnClickTest using UnityEngine; using Un ...

  6. 编码原则 之 Separation of Concerns

    相关链接: Separation of Concerns 原文 The Art of Separation of Concerns Introduction In software engineeri ...

  7. Learning-Python【34】:进程之生产者消费者模型

    一.什么是生产者消费者模型 生产者指的是生产数据的任务,消费者指的是处理数据的任务,在并发编程中,如果生产者处理速度很快,而消费者处理速度很慢,那么生产者就必须等待消费者处理完,才能继续生产数据.同样 ...

  8. jsp/servlet学习三之会话管理初解

    由于http的无状态性,使得会话管理或会话跟踪成为web应用开发一个无可避免的主题.默认下,一个web服务器无法区分一个http请求是否为第一次访问.例如,一个web邮件应用要求用户登陆后才能查看邮件 ...

  9. OC的反射机制

    反射机制主要是指程序可以访问.检测和修改它本身状态或行为的一种能力.反射机制是指在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法.对于人一个对象,都能够调用这个对象的任意方法和属性.这种 ...

  10. 【Python】【内置函数】

    [fromkeys()] -- coding: utf-8 -- python 27 xiaodeng python之函数用法fromkeys() fromkeys() 说明:用于创建一个新字典,以序 ...