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. c# 结构的使用

    类的定义的是引用类型,重点在堆上创建,有的时候类只包含极少的数据,因为管理堆而造成的开销是很大的.这时候更好的做法就是将类型定义成结构.结构是值类型,在栈上存储,能有效的减小内存管理的开销.c#基元类 ...

  2. Hdu2015 偶数求和

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2015 偶数求和 Time Limit: 2000/1000 MS (Java/Others)    M ...

  3. js 清空html input file的值

    在做上传图片预览时,利用input onchange事件触发函数,但是type=file时,一定记得新建要清空原来的图片,因为原来的图片还存在在input里面,再选重复的图片没有change,故不会触 ...

  4. docker基本管理

    一.docker基本命令 1.docker 获取镜像 将从 Docker Hub 仓库下载一个 Ubuntu 12.04 操作系统的镜像 docker pull ubuntu:12.04 Pullin ...

  5. python 装饰器(语法糖)

    def  login(func):    def testlogin():        for  i in range(3):            _username="abc" ...

  6. SQL Server 2012安装时报错,错误 0x80070422怎么解决?解决方法。

    步骤一: Win+R打开运行窗口,输入services.msc 打开服务窗口 步骤二: 找到并启用"Windows Update" 成功进入下一步!

  7. final修饰符与多态

    知识点一.final 最终的可以修饰属性.方法.类1.final修饰的属性,表示常量,初始化以后值不能改变.final修饰引用数据类型的变量,引用地址不能改变.2.final修饰类,不能被继承.比如: ...

  8. Java基础学习-注释的概述和分类

    /*     注释:用于解释说明程序的文字          分类:             单行://             多行:/**/       作用:解释说明程序,提高程序的阅读性 */ ...

  9. HDU 6166 Senior Pan(k点中最小两点间距离)题解

    题意:n个点,m条有向边,指定k个点,问你其中最近的两点距离为多少 思路:这题的思路很巧妙,如果我们直接枚举两点做最短路那就要做C(k,2)次.但是我们换个思路,我们把k个点按照二进制每一位的0和1分 ...

  10. SAP Fiori Client

    iPhone资源->iPhone商务软件 SAP Fiori Client 固件要求:需要 iOS 9.0 或更高版本.与 iPhone.iPad 和 iPod touch 兼容. 利用适用于 ...