ES跨集群数据迁移方案

文章介绍

提示:Snapshot方案一:磁盘作为快照仓库。

该方式的不足之处:

  1. es表使用快照迁移,单表的数据量如果过大,磁盘空间是瓶颈;
  2. 如果是5.x以上的集群,还需要考虑ES服务下用于快照repo的backup目录必须和物理机上的目录对应上,否则数据访问不到,这样能操作单表的数据大小进一步受限,受限于/var/log/search1/…的空间。(docker模式下的磁盘挂载大小影响)。

一、基础环境配置

安装fuse*

在各个节点(两个ES集群的所有节点)执行:

yum install –y fuse*

安装sshfs包

在各个节点(两个ES集群的所有节点)执行,安装sshfs包:

rpm -ivh fuse-sshfs-2.5-1.el7.rf.x86_64.rpm

创建共享目录

在单个节点上创建共享目录(建议选择磁盘空间大的磁盘),两个集群分别挑选一个节点创建这个数据快照目录即可。

mkdir /mnt/disk1/backup

创建ES服务的数据目录

此步骤为可选项,如果现场的ES部署方式为docker+k8s的部署方式,需要在镜像里面创建和宿主机互通的一个目录。
在所有节点上创建目录(5.x以上的需要建立能够对应docker内的目录):

mkdir /var/log/search1/backup

建立共享目录

每个节点执行,将各个节点的目录指向上述创建的共享目录。两个集群分别指向各自集群的单个节点的共享目录。

sshfs root@ct-45:/mnt/disk1/backup /var/log/search1/backup -o allow_other

添加额外参数

在es服务上添加参数各个节点上添加参数,并配置服务-重启服务。(dcoker模式下需要) 不然创建快照报错

path.repo: /var/log/search1/backup
文件:elasticsearch.yml

注意:页面添加参数(不能在各个节点elasticsearch.yml中修改,不然配置服务会被还原)
在这里插入图片描述

二、源端功能验证

创建快照的repository

创建快照的repository

curl -XPUT 'http://172.18.9.45:9200/_snapshot/my_backup?pretty' -d '{
    "type": "fs",
    "settings": {
        "location": "/var/log/search1/backup",
        "compress": true
    }
}'

查看repository

curl -XGET 'http://localhost:9200/_snapshot/my_backup?pretty'

在这里插入图片描述

对单个表进行备份

curl -XPUT "localhost:9200/_snapshot/my_backup/snapshot_1?wait_for_completion=true&pretty" -d '{
    "indices": "test.tb_es",
    "ignore_unavailable": true,
    "include_global_state": false
}'

在这里插入图片描述

对所有表进行备份

curl -XPUT http://localhost:9200/_snapshot/my_backup/snapshot_20200622

在这里插入图片描述

查看共享目录

备份创建好之后,在共享目录/mnt/disk1/backup里是这样的:
在这里插入图片描述

在迁移目标的集群上重复上面创建仓库的操作

目标端功能验证

目标端功能验证同源端一样

拷贝备份数据

将源集群的备份内容(/mnt/disk1/backup里的所有文件),复制到迁移目标的集群仓库目录里。

scp -r 172.18.9.45:/mnt/disk1/backup/* /mnt/disk1/backup/

目标集群数据恢复

在目标集群上执行以下命令恢复数据
恢复单张表test.tb_es,名字为restored_test.tb_es

curl -XPOST "localhost:9200/_snapshot/my_backup/snapshot_1/_restore?pretty" -d '{
    "indices": "test.tb_es",
    "ignore_unavailable": true,
    "include_global_state": false,
    "rename_pattern": "test.tb_es",
    "rename_replacement": "restored_test.tb_es"
}'

查看数据是否恢复成功:

curl -XGET http://localhost:9200/restored_test.tb_es/_recovery?pretty=true

查看index状态

curl -XGET 'localhost:9200/restored_test.tb_es/_settings?pretty'

在这里插入图片描述
在这里插入图片描述

数据校验

数据校验:

curl –XGET http://localhost:9200/restored_test.tb_es/_search?pretty=true

条数校验:

curl –XGET http://localhost:9200/restored_test.tb_es/_count?pretty=true

在这里插入图片描述

查看备份状态

curl -XGET 'localhost:9200/_snapshot/_status?pretty'

欢迎大家的点赞、收藏和支持,有疑问可以在评论区打出来

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值