es数据跨集群迁移(HDSF方法)

es 备份存储方式支持以下几种方式:

fs 文件挂载

url 网络协议存储 (http,https,ftp)

s3 亚马逊

hdfs

azure 微软

gcs 谷歌

本篇文章采用hdfs方式存储

1.repository(仓库)

     es集群中,想要备份数据,必须创建仓库,用来存储快照,一个集群可以创建多个仓库

2.snapshot (快照)

     创建仓库后,我们可以创建快照,创建快照时必须指定一个仓库,需要依附某个仓库

     某个快照包含多个index(数据库,schemea),默认备份整个集群index;当然可以指定备份的索引

3.restore (恢复)

     备份后导入到hdfs,进行快照恢复.

 

 

关闭集群安全(否则没有办法获取hdfs的权限)

源集群

1.修改配置文件

修改yml属性,禁用安全管理
     security.manager.enabled:false
启动ES集群。

2.安装repository-hdfs插件

将repository-hdfs插件解压缩到/etc/search1/conf/plugins/目录(每个节点都要装)。

重启ES集群。

 

3.创建hdfs文件目录并修改属主属组

假设仓库放在/testt/es目录。

hdfs --config /etc/hdfs1/conf dfs -mkdir -p /testt/es

hdfs --config /etc/hdfs1/conf dfs -chown -R elasticsearch:elasticsearch /testt/es

 

 

4.创建仓库

注:建议每个库建一个快照,防止快照索引信息混乱,造成快照恢复的时候出现快照不存在或者快照恢复成功0个失败0个成功的问题

HDFS Namenode: hdfs://10.1.42.165:8020

仓库路径:/testt/es

HDFS 配置文件: /etc/hdfs1/conf/hdfs-site.xml

curl -XPUT http://10.1.42.165:9200/_snapshot/backup100 -d '
{
    "type": "hdfs",
    "settings": {
            "uri": "hdfs://10.1.42.165:8020",
            "path": "/testt/es",
            "conf_location": "/etc/hdfs1/conf/hdfs-site.xml"
    }
}
'

 

5.创建对应仓库的快照

要备份的index: test_es

curl -XPUT http://10.1.42.165:9200/_snapshot/backup100/snapshot_1 -d '
{
    "indices": "test_es",
    "ignore_unavailable": "true",
    "include_global_state": "false",
    "partial": "false"
}
'

 

6.用MapReduce将数据传输到目标集群的hdfs上(注:先跨集群传输到tmp

目录下,在移动到目标集群的目标目录下,为了安全)

Hadoop distcp /testt/es hdfs://10.1.42.16:8020/tmp

 

 

 

目标集群

 

1.移动到目标集群的目标目录下

Hdfs dfs -mv /tmp/es  /testt

 

2.更改属名属组

hdfs --config /etc/hdfs1/conf dfs -chown -R elasticsearch:elasticsearch /testt/es

 

3.创建目标集群的仓库

curl -XPUT http://10.1.42.7:9200/_snapshot/backup100 -d '
{
    "type": "hdfs",
    "settings": {
            "uri": "hdfs://10.1.42.16:8020",
            "path": "/testt/es",
            "conf_location": "/etc/hdfs1/conf/hdfs-site.xml"
    }
}
'

4.恢复快照

要恢复的index: test_es

恢复成index: restored_index_test_es

curl -XPOST http://10.1.42.7:9200/_snapshot/backup100/snapshot_1/_restore -d '
{
  "indices": "test_es",
  "ignore_unavailable": "true",
  "include_global_state": "false",
  "rename_pattern": "test_es",
  "rename_replacement": "restored_index_test_es"
}
'

 

辅助性操作

 查看快照状态

 curl localhost:9200/_snapshot/backup_test/snapshot_1/_status?pretty

查看恢复状态

curl localhost:9200/index1/_recovery?pretty

删除快照

curl -XDELETE localhost:9200/_snapshot/backup_test/snapshot_1

查看仓库信息

GET /_snapshot/my_backup

当前所有仓库信息

GET /_snapshot

GET /_snapshot/_all

删除仓库信息:仅仅删除index,不会删除hdfs数据

DELETE /_snapshot/my_backup

查询快照

     GET /_snapshot/my_backup/snapshot_1  //查询指定快照

     GET /_snapshot/my_backup/snapshot_*,otherSnapshot //支持通配符

     GET /_snapshot/my_backup/_all //查询所有快照

删除一个快照:仅删除引用,未删除hdfs数据

     DELETE /_snapshot/my_backup/snapshot_1

补充:

     es1.x备份索引可以直接在es2.x恢复

     es2.x备份索引可以直接在es5.x恢复

     但是es1.x不可以在es5.x恢复,兼容只垮一个版本

问题:

恢复快照数据,如果目标集群已经存在同名索引,需要先close索引

         恢复某个快照所有数据

         curl -XPOST  localhost:9200/_snapshot/backup_test/snapshot_1/_restore?wait_for_completion=trues

         恢复某个快照部分索引数据

         curl -XPOST  localhost:9200/_snapshot/backup_test/snapshot_1/_restore?wait_for_completion=true  -d '

         {

             "indices": "index1,index2"

         }

         '

 

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值