es通过快照方式迁移数据

自建es之间数据迁移

本文主要讲述快照方式,其他方式可自行百度


下面是在自建es中操作迁移数据,操作的时候可借助与kibana进行操作,也可通过postman或者curl命令操作

源es

1.先在es配置文件中添加仓库配置

docker exec -it elastic-dev /bin/bash
cd config/

vi elasticsearch.yml

cluster.name: "docker-cluster"
network.host: 0.0.0.0
path.repo: ["/usr/share/elasticsearch/data/back"]

然后退出重启容器生效

2.创建仓库

kibana:

PUT /_snapshot/new_cs
{
    "type": "fs",
    "settings":{
        "location": "new_cs"
    }
}

3.查看仓库

GET /_snapshot

4.创建快照备份(指定索引或者备份整个,看自己需要)

指定索引:

PUT /_snapshot/new_cs/data
{
  "indices": "index1,index2",
  "include_global_state": true
}

备份整个es:

PUT /_snapshot/new_cs/data

5.查看快照进度

GET /_snapshot/new_cs/data/_status

目标es

1.将源es备份的快照目录打包并发送到目标es服务器

源服务器操作
docker exec -it elastic-1 /bin/bash
cd data/back/
tar czf new_cs.tar.gz new_cs
exit

docker cp c897bd3c016d:/usr/share/elasticsearch/data/back/new_cs.tar.gz ./
scp new_cs.tar.gz root@172.16.0.11:/root

2.在目标es中创建仓库目录并重启生效

目标服务器操作
docker exec -it elastic-2 /bin/bash
cd config/

vi elasticsearch.yml

cluster.name: "docker-cluster"
network.host: 0.0.0.0
path.repo: ["/usr/share/elasticsearch/data/back"]

然后退出重启容器生效

3.将发送过来的备份文件拷贝到容器对应的仓库中

docker cp new_cs.tar.gz fa8fdsa92b162:/usr/share/elasticsearch/data/back/
docker exec -it elastic-2 /bin/bash
cd data/back/
tar xf new_cs.tar.gz

4.同样的建立一个仓库

    PUT /_snapshot/new_cs
{
    "type": "fs",
    "settings":{
        "location": "new_cs"
    }
}

注意:两边的仓库目录和备份名称一定要一样

5.执行恢复数据

POST /_snapshot/new_cs/data/_restore?wait_for_completion=true

同步自建es数据到腾讯云es

自建es执行

1.安装腾讯云提供的备份快照到cos的插件(因为腾讯云es必须通过块存储去同步数据,所以要先将备份数据备份到cos)

插件地址:https://github.com/tencentyun/elasticsearch-repository-cos/releases

尽量下载和你es版本一样的插件

docker cp repository-cos-7.9.2.zip c897bd3c016d:/usr/share/elasticsearch/plugins/
docker exec -it elastic-1 /bin/bash
cd plugin/
unzip -d repository-cos repository-cos-7.9.2.zip
rm -rf repository-cos-7.9.2.zip
chown elasticsearch repository-cos
exit

docker restart elastic-1
必须要重启es插件才能生效

2.通过repository-cos插件调用腾讯云cos创建仓库

PUT _snapshot/my_cos_backup
{
    "type": "cos",
    "settings": {
        "app_id": "xxxxxxx",
        "access_key_id": "xxxxxx",
        "access_key_secret": "xxxxxxx",
        "bucket": "xxxxxx",
        "region": "ap-guangzhou",
        "compress": true,
        "chunk_size": "500mb",
        "base_path": "/es_prod"
    }
}
  • app_id:腾讯云账号 APPID。在账号信息里面可以找到
  • access_key_id:腾讯云 API 密钥 SecretId。
  • access_key_secret:腾讯云 API 密钥 SecretKey。
  • bucket:COS Bucket 名字,不带 appId 后缀的 bucket 名。这个需要先创建
  • region:COS Bucket 地域,必须与 ES 集群同地域。
  • base_path:备份目录。

3.创建快照

PUT _snapshot/my_cos_backup/snapshot_1

4.查看快照进度

GET _snapshot/my_cos_backup/snapshot_1
返回结果中的state字段为SUCCESS则说明快照已经备份成功

腾讯云es执行

1.创建仓库(和前面一样)

PUT _snapshot/my_cos_backup
{
    "type": "cos",
    "settings": {
        "app_id": "xxxxxxx",
        "access_key_id": "xxxxxx",
        "access_key_secret": "xxxxxxx",
        "bucket": "xxxxxx",
        "region": "ap-guangzhou",
        "compress": true,
        "chunk_size": "500mb",
        "base_path": "/es_prod"
    }
}

2.执行恢复数据

POST /_snapshot/my_cos_backup/snapshot_1/_restore
{
"indices": "*,-.*"
}

"indices": "*,-.*"这个匹配规则的意思是恢复所有除了以.开头的索引,也就是排除那些kibana建立的索引

  • indices:只恢复 某些 索引,忽略快照中存在的其他索引。
  • rename_pattern:查找所提供的模式能匹配上的正在恢复的索引。
  • rename_replacement:将匹配的索引重命名成替代的模式。

3.查看恢复状态

查看执行索引状态
GET index_1/_recovery
查看指定索引的状态,返回结果中 status 为 green,则说明索引已经完全恢复
GET _cluster/health/index_1
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值