注册快照仓库

ES是通过快照的方式来实现数据备份,并且是以增量的方式,所以一般第一次做的话会花费较长的时间。为了做快照,那么就需要注册一个快照仓库,告诉ES我们的快照应该如何保存以及将快照保存到哪里.

ES的快照仓库支持如下几种形式:

  • 共享的文件系统,如NAS
  • Amazon S3
  • HDFS (Hadoop Distributed File System)
  • Azure Cloud

通常选择注册第一种形式。

任意选择一个节点,执行如下命令

$ curl -XPUT  http://192.168.0.1:9200/_snapshot/my_backup -d '
{
"type": "fs",
"settings": {
"location": "/data/backups/elasticsearch"
}
}
'

这样就注册了一个名为my_backup的仓库,这里的location需要注意,最好是设置一个每个节点都能访问并且有写权限的共享目录,如smb目录等(如果整个集群就一个节点那么设置为本地目录也无所谓)。 我自己在做的时候由于设置了本地目录/data/backups/elasticsearch, 最后做出来发现快照被分别保存在集群每个节点的/data/backups/elasticsearch目录下,并且一个节点保存了一些信息。最后做数据迁移的时候,不得不从每个节点将快照文件拷贝出来,然后合并到一起。

除了location外,还有一些其他选项可以设置:

  • compress 是否压缩
  • max_snapshot_bytes_per_sec 制作快照的速度,默认20mb/s
  • max_restore_bytes_per_sec 快照恢复的速度,默认20mb/s

更新仓库设置如下:

curl -XPOST http://192.168.0.1:9200/_snapshot/my_backup/
{
"type": "fs",
"settings": {
"location": "/data/backups/elasticsearch",
"max_snapshot_bytes_per_sec" : "50mb",
"max_restore_bytes_per_sec" : "50mb",
"compress" : true
}
}

这里需要注意一点是,注册仓库用的是PUT, 而更新仓库设置用的是POST.

检查注册的仓库信息

$ curl -XGET http://192.168.0.1:9200/_snapshot/my_backup

开始备份

指定快照名称为snapshot_20150812

$ curl -XPUT  http://192.168.0.1:9200/_snapshot/my_backup/snapshot_20150812

执行上面的上面的命令会马上返回,并在后台执行备份操作, 如果想等到备份完成,可以加上参数wait_for_completion=true

$ curl -XPUT  http://192.168.0.1:9200/_snapshot/my_backup/snapshot_20150812?wait_for_completion=true

默认是备份所有的索引indices, 如果要指定index,可以

curl -XPUT http://192.168.0.1:9200/_snapshot/my_backup/snapshot_20150812
{
"indices": "index_1,index_2"
}

这个备份过程需要的时间视数据量而定.

查看备份状态

整个备份过程中,可以通过如下命令查看备份进度

curl -XGET http://192.168.0.1:9200/_snapshot/my_backup/snapshot_20150812/_status

主要由如下几种状态:

  • INITIALIZING 集群状态检查,检查当前集群是否可以做快照,通常这个过程会非常快
  • STARTED 正在转移数据到仓库
  • FINALIZING 数据转移完成,正在转移元信息
  • DONE 完成
  • FAILED 备份失败

取消备份

curl -XDELETE http://192.168.0.1:9200/_snapshot/my_backup/snapshot_20150812

恢复备份

curl -XPOST http://192.168.0.1:9200/_snapshot/my_backup/snapshot_20150812/_restore

同备份一样,也可以设置wait_for_completion=true等待恢复结果

curl -XPOST http://192.168.0.1:9200/_snapshot/my_backup/snapshot_20150812/_restore?wait_for_completion=true

默认情况下,是恢复所有的索引,我们也可以设置一些参数来指定恢复的索引,以及重命令恢复的索引,这样可以避免覆盖原有的数据.

curl -XPOST http://192.168.0.1:9200/_snapshot/my_backup/snapshot_20150812/_restore
{
"indices": "index_1",
"rename_pattern": "index_(.+)",
"rename_replacement": "restored_index_$1"
}
  • 上面的indices, 表示只恢复索引’index_1’
  • rename_pattern: 表示重命名索引以’index_’开头的索引.
  • rename_replacement: 表示将所有的索引重命名为’restored_index_xxx’.如index_1会被重命名为restored_index_1.

查看恢复进度

# 查看所有索引的恢复进度
curl -XGET http://192.168.0.1:9200/_recovery/ # 查看索引restored_index_1的恢复进度
curl -XGET http://192.168.0.1:9200/_recovery/restored_index_1
取消恢复,只需要删除索引,即可取消恢复
curl -XDELETE http://192.168.0.1:9200/restored_index_1
备份快照迁移

如果需要将快照迁移到另一个集群.只需要将备份文件全部拷贝到要迁移的机器上, 然后再在新的集群上注册一个快照仓库,设置location的位置为备份文件所在的地方,然后执行恢复备份的命令即可。

查看所有索引:

curl 'http://30.0.0.232:9200/_cat/indices?v'
curl 'http://30.0.0.232:9200/_cat/indices?v' -s |less

查看单个索引:

curl 10.0.67.23:/_cat/indices/ad-.*

查看快照信息:

curl -XGET "10.0.67.21:9200/_snapshot/es_backup/snapshot-20171123-16"

恢复快照:

curl -XPOST "10.0.67.21:9200/_snapshot/es_backup/snapshot-20171123-16/_restore" -d'{ "indices": "ad-2017.11.19" }'

elasticsearch 使用快照方式迁移数据的更多相关文章

  1. 【Oracle】使用dblink+minus方式迁移数据

    一.需求说明 1.数据库a104的表syssde.a4_syssde_department中有1000条数据: 2.数据库a230的表syssde.a4_syssde_department中有800条 ...

  2. ELK数据迁移,ES快照备份迁移

    通过curl命令或者kibana快照备份,恢复的方式进行数据迁移 环境介绍 之前创建的ELK 因为VPC环境的问题,需要对ELK从新部署,但是还需要保留现有的数据,于是便有了这篇文档. 10.0.20 ...

  3. 本地ES集群数据通过_reindex方式迁移到腾讯云服务器(亲测有效)

    本地ES集群数据通过_reindex方式迁移到腾讯云服务器(亲测有效) 随着业务量的增加,本地的ES集群服务器性能和磁盘空间有点不够使用,项目组考虑使用腾讯云服务器,以下是我测试的使用_reindex ...

  4. elasticsearch REST API方式批量插入数据

    elasticsearch REST API方式批量插入数据 1:ES的服务地址  http://127.0.0.1:9600/_bulk 2:请求的数据体,注意数据的最后一行记得加换行 { &quo ...

  5. elasticsearch迁移数据到新索引中

    因为业务原因,需要修改索引的映射的某个字段的类型,比如更改Text为Keyword. 需要如下步骤: 1).先新建索引,映射最新的映射实体 2).迁移老索引的数据到新索引中(数据较大的话,可以分批迁移 ...

  6. Redis 通过 RDB 方式进行数据备份与还原

    Redis 通过 RDB 方式进行数据备份与还原 Intro 有的时候我们需要对 Redis 的数据进行迁移,今天介绍一下通过 RDB(快照)文件进行 Redis 数据的备份和还原 Redis 持久化 ...

  7. Oracle impdp通过network_link不落地方式导入数据

    --Oracle impdp通过network_link不落地方式导入数据 -----------------------------------------------------2014/01/1 ...

  8. Redis学习——Redis持久化之AOF备份方式保存数据

    新技术的出现一定是在老技术的基础之上,并且完善了老技术的某一些不足的地方,新技术和老技术就如同JAVA中的继承关系.子类(新技术)比父类(老技术)更加的强大! 在前面介绍了Redis学习--Redis ...

  9. 从mysql向HBase+Phoenix迁移数据的心得总结

    * 转载请注明出处 - yosql473 - 格物致知,经世致用 mysql -> HBase + Phoenix 1.总体方案有哪些? 1)通过Sqoop直接从服务器(JDBC方式)抽取数据到 ...

随机推荐

  1. CSU 1337 搞笑版费马大定理【优化枚举】

    费马大定理:当n>2时,不定方程an+bn=cn没有正整数解.比如a3+b3=c3没有正整数解.为了活跃气氛,我们不妨来个搞笑版:把方程改成a3+b3=c3,这样就有解了,比如a=4, b=9, ...

  2. Maven学习笔记3

    好了,按照笔记2的方法我们创建好一个web项目(使用maven:java项目还是java项目,web项目还是web项目,唯一的变化既是我们在pom.xml中配置了我们本应该先下载然后导入的jar包,这 ...

  3. LCA【SP913】Qtree - Query on a tree II

    Description 给定一棵n个点的树,边具有边权.要求作以下操作: DIST a b 询问点a至点b路径上的边权之和 KTH a b k 询问点a至点b有向路径上的第k个点的编号 有多组测试数据 ...

  4. noi 题库1.7字符串 第16至20题

    16:忽略大小写的字符串比较 一般我们用strcmp可比较两个字符串的大小,比较方法为对两个字符串从前往后逐个字符相比较(按ASCII码值大小比较),直到出现不同的字符或遇到'\0'为止.如果全部字符 ...

  5. ( 转 ) MySQL高级 之 explain执行计划详解

    使用explain关键字可以模拟优化器执行SQL查询语句,从而知道MySQL是如何处理你的SQL语句的,分析你的查询语句或是表结构的性能瓶颈. explain执行计划包含的信息 其中最重要的字段为:i ...

  6. luogu P1009 阶乘之和

    题目描述 用高精度计算出S=1!+2!+3!+…+n!(n≤50) 其中“!”表示阶乘,例如:5!=5*4*3*2*1. 输入输出格式 输入格式: 一个正整数N. 输出格式: 一个正整数S,表示计算结 ...

  7. 【分块】【链表】bzoj2738 矩阵乘法

    http://www.cnblogs.com/jianglangcaijin/p/3460012.html 首先将矩阵的数字排序.设置size,每次将size个数字插入.插入时,我们用h[i][j]记 ...

  8. 【OpenJudge9268】【递推】酒鬼

    酒鬼 总时间限制: 2000ms 单个测试点时间限制: 1000ms 内存限制: 131072kB [描述] Santo刚刚与房东打赌赢得了一间在New Clondike 的大客厅.今天,他来到这个大 ...

  9. IntelliJ IDEA导入Maven之后强制刷新项目解决无法识别为Maven项目的问题

    先点击左下角按钮以显示Maven Project 再点击右侧Maven Project 点击刷新按钮,当然也可以点击加号选择pom.xml文件. 最后是等待项目的更新.

  10. CentOS 6.9下的Setup工具(用于管理服务/防火墙/网络配置/验证服务)

    说明:Setup工具套件好像是CentOS下特有的用于管理服务/防火墙/网络配置等,其实就是基于命令行模式界面的GUI工具.唯一特点就是方便. 安装: #安装Setup命令工具 yum -y inst ...