通过读写分离插件实现华为云Elasticsearch集群间数据迁移
通过CSS服务的读写分离插件可以实现华为云Elasticsearch集群间的数据迁移。
应用场景
7.6.2和7.10.2版本的华为云Elasticsearch集群默认安装了CSS服务的读写分离插件,通过配置读写分离可以实现Elasticsearch集群间的索引数据近实时同步。
通过读写分离插件实现华为云Elasticsearch集群间数据迁移仅适用于源集群和目标集群都是CSS服务的集群。常用于以下场景:
- 跨地域或跨账号迁移:将其他Region或账号下的Elasticsearch集群迁移到当前集群中。
- 集群合并:将两个Elasticsearch集群的索引数据合并到一个集群中。
方案架构
通过CSS服务的读写分离插件迁移华为云Elasticsearch集群(源集群)至华为云Elasticsearch(目标集群)的数据迁移流程如图1所示。
- 通过读写分离插件建立源集群和目标集群的连接。
- 在目标集群配置索引自动同步,实现源集群的数据自动同步到目标集群。同步周期默认是30秒,支持修改。
- 查询自动同步状态,确认集群数据是否迁移完成。
更多关于CSS服务的读写分离功能的介绍请参见配置Elasticsearch集群读写分离。
方案优势
- 数据一致性高:利用读写分离的主从复制机制,确保数据在不同分片之间的同步,提高数据的一致性 。
- 迁移速度快:读写分离的自动同步速度依赖带宽,不受源集群和目标集群的影响,同步快。
- 实时性可控:读写分离的默认同步周期为30秒,支持修改,可以控制数据迁移的实时性,减少数据同步过程中的延迟 。
约束限制
- 集群间需要保证网络连通。
如果源集群和目标集群在不同VPC,则需要先打通VPC网络建立对等连接。具体操作请参见对等连接简介。
- 源集群和目标集群的版本必须一致,都是7.6.2或7.10.2版本。
前提条件
源Elasticsearch集群和目标Elasticsearch集群处于可用状态,且都安装了读写分离插件(Elasticsearch 7.6.2和7.10.2版本默认安装了读写分离插件)。
操作步骤
- 获取Elasticsearch集群信息,用于配置迁移任务。
表1 需要获取的Elasticsearch集群信息 集群来源
要获取的信息
获取方式
源集群
华为云Elasticsearch集群
- 源集群的访问地址
- 访问源集群的用户名和密码(仅安全集群涉及)
- 获取集群的访问地址请参见1.c。
- 用户名和密码请联系服务管理员获取。
自建Elasticsearch集群
- 源集群的公网访问地址
- 访问源集群的用户名和密码(仅安全集群涉及)
联系服务管理员获取。
第三方Elasticsearch集群
- 源集群的访问地址
- 访问源集群的用户名和密码(仅安全集群涉及)
联系服务管理员获取。
目标集群
华为云Elasticsearch集群
- 目标集群的访问地址
- 访问目标集群的用户名和密码(仅安全集群涉及)
- 获取访问地址请参见1.c。
- 用户名和密码请联系服务管理员获取。
- 登录云搜索服务管理控制台。
- 在左侧菜单栏选择 。
- 在Elasticsearch集群列表,获取集群的访问地址。
图2 获取集群信息
- 登录目标Elasticsearch集群的Kibana操作页面。
- 在CSS服务的Elasticsearch集群列表,选择目标集群,单击操作列的“Kibana”,登录Kibana。
- 单击左侧导航栏的“Dev Tools”进入操作页面。
- 通过读写分离插件,在目标集群建立与源集群的连接。
执行如下命令,在目标集群配置源集群的信息。
PUT /_cluster/settings { "persistent" : { "cluster" : { "remote.rest" : { "leader1" : { "seeds" : [ "http://10.0.0.1:9200", "http://10.0.0.2:9200", "http://10.0.0.3:9200" ] , "username": "elastic", "password": "*****" } } } } }
表2 请求体参数说明 参数名
说明
leader1
配置任务的名称,由用户自定义,在后续读写分离配置时会用到该名称。
seeds
源集群的访问地址。当集群开启HTTPS访问时,URI schema需要对应使用https。
username
源集群的用户名,仅主集群是安全集群时才需要配置。
password
源集群的密码,仅主集群是安全集群时才需要配置。
当返回结果中,“acknowledged”为“true”时,表示配置成功。
- 在目标集群配置索引自动同步,实现源集群的数据自动同步到目标集群。
执行如下命令,创建匹配模式同步索引,将源集群中匹配的索引同步到目标集群中。
PUT auto_sync/pattern/pattern1 { "remote_cluster": "leader1", "remote_index_patterns": "log*", "local_index_pattern": "{{remote_index}}", "apply_exist_index": true }
表3 请求体参数说明 参数名
说明
pattern1
自定义同步集群配置的pattern名字,用于区分多个不同的匹配模式。
remote_cluster
配置任务的名称,例如上一步的“leader1”。
remote_index_patterns
源集群待同步索引模式,支持通配符“*”。
local_index_pattern
同步到目标集群的索引模式,支持模板替换。例如取值为“{{remote_index}}”时,待同步索引为“log1”,同步过来的索引为“log1”。
apply_exist_index
是否同步主集群上已存在的索引,默认为“true”。
- 在目标集群查询集群的自动同步状态,同步周期默认是30秒。
执行如下命令,获取匹配索引的同步状态。
GET auto_sync/stats
当返回结果中,“failed_count”为“0”时,表示同步完成。
- 集群同步完成后,检查目标Elasticsearch集群和源集群数据的一致性。
例如,分别在源集群和目标集群登录Kibana,进入Dev Tool,执行GET cat/indices命令,对比两者的索引信息是否一致。