前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >腾讯云ES分批融合迁移方案

腾讯云ES分批融合迁移方案

原创
作者头像
岳涛
修改2023-07-25 17:41:26
7330
修改2023-07-25 17:41:26
举报
文章被收录于专栏:大数据生态

说明

本文描述问题及解决方法同样适用于 腾讯云 Elasticsearch Service(ES)

方案名称

ES多轮分批融合迁移方案(ES索引级别融合迁移方案)

方案风险

  • 集群融合期间,云上集群不可进行变更,比如升降配置、版本升级,否则会有集群不可用的风险;
  • 集群融合期间,不可新建索引,否则分片会被分配到云上,将无法迁回到自建;
  • 两个集群分离后,该云上集群不可再重新融合。如集群分离后有新的迁移需求,云上需要再新建集群进行融合操作,否则会有数据丢失的风险;
  • 此方案除非是业务强需求,原则上不推荐。

环境配置

自建ES环境

版本

Elasticsearch版本:7.7.0

配置

节点数量:3

内存:4G

硬盘:高性能云盘 50G

CPU核心数:2

云上ES环境

版本

Elasticsearch版本:7.10.1(腾讯云 Elasticsearch Service 基础版)

配置

节点数量:3

内存:4G

硬盘:高性能云盘 20G

CPU核心数:2

1. 集群信息收集

集群名称

集群版本

节点信息

云上ID

迁移方案

tencent-drill(自建)

7.7.0

10.0.0.10 node-0110.0.0.29 node-0210.0.0.45 node-03

/

/

tencent-drill

7.10.1

10.0.0.42 166791864200329513210.0.0.36 166791864200329493210.0.0.33 1667918642003295032

es-7k9lokog

首次融合迁移

tencent-drill-once

7.10.1

10.0.0.41 166791956600329993210.0.0.35 166791956600329983210.0.0.32 1667919566003300032

es-fqetcgvk

二次融合迁移

2. 自建集群情况

集群情况:

一共3个节点

索引情况:

一共20个索引,数据在持续写入

3. 首次融合迁移

1、锁定源端数据

对自建集群设置索引分片分配属性策略

代码语言:javascript
复制
curl -H "Content-Type: application/json" -XPUT 10.0.0.10:9200/_all/_settings?pretty -d '{
  "index.routing.allocation.include._name" : "node-01, node-02, node-03"
}'

2、集群融合

集群融合,修改云上集群的配置文件,追加自建集群的节点ip

该操作执行完,集群不会正式融合,还需要统一集群元数据

代码语言:javascript
复制
curl localhost:5100/cluster/update -d '{
    "cluster_name": "es-7k9lokog",
    "operator": "daemonyue",
    "es_config": {
        "discovery.seed_hosts": "[\"10.0.0.10:9300\", \"10.0.0.29:9300\", \"10.0.0.45:9300\", \"10.0.0.42:9300\", \"10.0.0.36:9300\", \"10.0.0.33:9300\"]"
    },
    "restart_type": "full_cluster_restart"
}'

3、初始化元数据

重启后,在腾讯云集群的cvm上执行

代码语言:javascript
复制
su - c_log
killall /data/c_log/repository/jdk/kona11.0.9.1.b1/bin/java
cd /data1/containers/*/es/
./bin/elasticsearch-node detach-cluster (选择y)

初始化完云上集群元数据之后,自建与云上集群融合成功

4、开始迁移数据

这里首次融合迁移我们只迁5个索引:

代码语言:javascript
复制
curl -H "Content-Type: application/json" -XPUT 10.0.0.10:9200/es_index-1,es_index-2,es_index-3,es_index-4,es_index-5/_settings?pretty -d '{
  "index.routing.allocation.include._name" : "1667918642003295132, 1667918642003294932, 1667918642003295032"
}'

发起迁移之后,数据迁移到了云上。

5、分离集群

代码语言:javascript
复制
curl localhost:5100/cluster/update -d '{
    "cluster_name": "es-7k9lokog",
    "operator": "daemonyue",
    "es_config": {
        "gateway.auto_import_dangling_indices": "true",
        "discovery.seed_hosts": "null"
    },
    "restart_type": "full_cluster_restart"
}'

6、初始化元数据

重启后,在腾讯云集群的cvm上执行

代码语言:javascript
复制
su - c_log
killall /data/c_log/repository/jdk/kona11.0.9.1.b1/bin/java
cd /data1/containers/*/es/
mkdir ~/_statebak
mv data/nodes/0/_state/* ~/_statebak

成功分离后,索引正常,符合预期。

4. 二次融合迁移

1、锁定源端数据

对自建集群设置索引分片分配属性策略

代码语言:javascript
复制
curl -H "Content-Type: application/json" -XPUT 10.0.0.10:9200/_all/_settings?pretty -d '{
  "index.routing.allocation.include._name" : "node-01, node-02, node-03"
}'

2、集群融合

修改云上集群的配置文件,追加自建集群的节点ip

该操作执行完,集群不会正式融合,还需要统一集群元数据

代码语言:javascript
复制
curl localhost:5100/cluster/update -d '{
    "cluster_name": "es-fqetcgvk",
    "operator": "daemonyue",
    "es_config": {
        "discovery.seed_hosts": "[\"10.0.0.10:9300\", \"10.0.0.29:9300\", \"10.0.0.45:9300\", \"10.0.0.41:9300\", \"10.0.0.35:9300\", \"10.0.0.32:9300\"]"
    },
    "restart_type": "full_cluster_restart"
}'

3、初始化元数据

重启后,在腾讯云集群的cvm上执行

代码语言:javascript
复制
su - c_log
killall /data/c_log/repository/jdk/kona11.0.9.1.b1/bin/java
cd /data1/containers/*/es/
./bin/elasticsearch-node detach-cluster (选择y)

初始化完云上集群元数据之后,自建与云上集群融合成功

4、开始迁移数据

二次融合迁移我们迁7个索引:

代码语言:javascript
复制
curl -H "Content-Type: application/json" -XPUT 10.0.0.10:9200/es_index-6,es_index-7,es_index-8,es_index-9,es_index-10,es_index-11,es_index-12/_settings?pretty -d '{
  "index.routing.allocation.include._name" : "1667919566003299932, 1667919566003299832, 1667919566003300032"
}'

发起迁移之后,数据迁移到了云上。

5、分离集群

代码语言:javascript
复制
curl localhost:5100/cluster/update -d '{
    "cluster_name": "es-fqetcgvk",
    "operator": "daemonyue",
    "es_config": {
        "gateway.auto_import_dangling_indices": "true",
        "discovery.seed_hosts": "null"
    },
    "restart_type": "full_cluster_restart"
}'

6、初始化元数据

重启后,在腾讯云集群的cvm上执行

代码语言:javascript
复制
su - c_log
killall /data/c_log/repository/jdk/kona11.0.9.1.b1/bin/java
cd /data1/containers/*/es/
mkdir ~/_statebak
mv data/nodes/0/_state/* ~/_statebak

成功分离后,索引正常,符合预期。

5. 通过快照迁移数据

二次融合迁移之后,数据迁移到了云上新建的小集群里,但由于数据还需要整合到云上主集群,所以还有一步快照迁移的操作。

1、 在云上小集群创建快照仓库

代码语言:javascript
复制
PUT _snapshot/tencent-drill
{
  "type": "cos",
  "settings": {
    "app_id": "xxxxxxxxxx",
    "access_key_id": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
    "access_key_secret": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
    "bucket": "dy-escos",
    "region": "ap-shanghai",
    "compress": true,
    "chunk_size": "500mb",
    "base_path": "/tencent-drill"
  }
}

2、 发起快照备份

代码语言:javascript
复制
PUT _snapshot/tencent-drill/tencent-drill1
{
  "indices": "es_index-6,es_index-7,es_index-8,es_index-9,es_index-10,es_index-11,es_index-12,es_index-13,es_index-14,es_index-15,es_index-16,es_index-17,es_index-18,es_index-19"
}

备份成功:

3、在云上主集群创建快照仓库

4、发起快照恢复

代码语言:javascript
复制
POST _snapshot/tencent-drill/tencent-drill1/_restore
{
  "ignore_index_settings": [
    "index.routing.allocation.include._name"
  ]
}

恢复完成,数据条数符合预期:

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 说明
  • 方案名称
  • 方案风险
  • 环境配置
    • 自建ES环境
      • 云上ES环境
      • 1. 集群信息收集
      • 2. 自建集群情况
      • 3. 首次融合迁移
        • 1、锁定源端数据
          • 2、集群融合
            • 3、初始化元数据
              • 4、开始迁移数据
                • 5、分离集群
                  • 6、初始化元数据
                  • 4. 二次融合迁移
                    • 1、锁定源端数据
                      • 2、集群融合
                        • 3、初始化元数据
                          • 4、开始迁移数据
                            • 5、分离集群
                              • 6、初始化元数据
                              • 5. 通过快照迁移数据
                                • 1、 在云上小集群创建快照仓库
                                  • 2、 发起快照备份
                                    • 3、在云上主集群创建快照仓库
                                      • 4、发起快照恢复
                                      相关产品与服务
                                      Elasticsearch Service
                                      腾讯云 Elasticsearch Service(ES)是云端全托管海量数据检索分析服务,拥有高性能自研内核,集成X-Pack。ES 支持通过自治索引、存算分离、集群巡检等特性轻松管理集群,也支持免运维、自动弹性、按需使用的 Serverless 模式。使用 ES 您可以高效构建信息检索、日志分析、运维监控等服务,它独特的向量检索还可助您构建基于语义、图像的AI深度应用。
                                      领券
                                      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档