通过CCR脚本迁移Doris数据到MRS集群
Doris历史元数据、增量元数据、历史数据和增量数据都是通过Syncer服务,从源集群获取Binlog ,目标集群再实时同步Binlog数据,实现全量和增量数据的迁移。
约束与限制
- 使用CCR迁移数据时,Doris版本限制
- 元数据和数据迁移过程中会占用源端资源,需避开客户业务高峰期
- 组件版本限制
- 从Syncer 2.1.8和3.0.4版本开始,Syncer不再支持Doris 2.0。
- 只支持将源端低版本Doris数据迁移至目的端高版本Doris中。
- CCR会自动创建元数据,不能提前创建元数据,否则容易导致失败。
- 参数配置详情请参见 Apache Doris官网限制配置说明。
方案架构

- 全量元数据和数据迁移:CCR任务会首先进行全量同步,将源端数据一次性完整地复制到目的端。
- 增量元数据和数据迁移:在全量同步完成后,CCR任务会继续进行增量同步,保持源端和目的端数据的一致性。
迁移方案支持各种网络选型:公网、VPN、专线等。根据实际情况选择网络方案,两端网络互通即可迁移。
迁移网络类型 |
优点 |
缺点 |
---|---|---|
专线 |
|
|
VPN |
|
|
公网IP |
|
|
全量、增量元数据和数据迁移
- 打开Doris源端和目的端的binlog配置。
- 在源端Doris的“fe.conf”和“be.conf”中添加以下内容并保存:
enable_feature_binlog=true
- 登录目的端MRS集群的Manager页面,选择“集群 > 服务 > Doris > 配置 > 全部配置”,在左侧导航栏选择“FE(角色) > 自定义”。
登录MRS集群Manager页面的具体操作请参见访问MRS集群Manager。
- 在自定义参数文件“fe.conf”中新增自定义参数“enable_feature_binlog”,值为“true”。
- 在左侧导航栏选择“BE(角色) > 自定义”,在自定义参数文件“be.conf”中新增自定义参数“enable_feature_binlog”,值为“true”。
- 单击“保存”保存配置。单击“概览”,选择页面右上方的“更多 > 滚动重启服务”,输入当前用户密码并单击“确定”,滚动重启Doris服务使配置生效。
- 在源端Doris的“fe.conf”和“be.conf”中添加以下内容并保存:
- 创建一个Linux系统的弹性云服务器,对应ECS的安全组、虚拟私有云、子网需要和迁移目的端MRS集群保持一致,具体操作请参见自定义购买ECS。
还需根据实际环境打通该ECS与源端Doris集群的网络。并确保ECS节点的glibc为2.28及之后版本,可执行以下命令查看glibc的版本:
ldd --version
- 从Doris官网跨集群数据同步概述中下载Syncer压缩包,例如“ccr-syncer-*-rc02-x64.tar.xz”,并上传至步骤 2创建的ECS节点的目录下。
- 使用root用户登录上传了Syncer压缩包的ECS节点,执行以下命令解压Syncer压缩包:
- 切换至压缩包所在目录:
cd 压缩包目录
- 解压Syncer压缩包:
tar -xvf ccr-syncer-*-rc02-x64.tar.xz
- 切换至“bin”目录下:
cd ccr-syncer-*-rc02-x64/bin
- 开启需要迁移的指定数据库中所有表的binlog:
bash enable_db_binlog.sh -h host -p port -u user -P password -d db
其中:
- “host”为连接源端Doris FE节点的服务器IP地址。
- “port”为连接源端Doris FE节点的query_port端口号,默认为9030。
- “db”为指定的源端Doris数据库名称。
- “user”和“password”分别为连接源端Doris的用户名和密码。
- 切换至压缩包所在目录:
- 启动Syncer:
bash start_syncer.sh –daemon
- 登录ECS节点,执行以下命令全量、增量迁移元数据和数据:
curl -X POST -H "Content-Type: application/json" -d '{ "name": "ccr_test", "src": { "host": "源端FE IP地址", "port": "9030", "thrift_port": "9020", "user": "root", "password": "", "database": "db_name", "table": "table_name" }, "dest": { "host": "目的端FE IP地址", "port": "9030", "thrift_port": "9020", "user": "root", "password": "", "database": "db_name", "table": "table_name" } }' http://127.0.0.1:9190/create_ccr;
相关参数说明请参见表2。
- 迁移前不用手动创建数据库和表。
- CCR任务启动后如果不停止此任务,会一直自动同步增量元数据和数据。
表2 CCR迁移任务参数说明 参数
参数说明
示例
name
CCR同步任务的名称,自定义且唯一即可。
ccr_test
src
表示以下信息为源端信息。
-
dest
表示以下信息为目的端信息。
-
host
Master FE IP地址。
10.10.xxx.xxx
port
连接Doris FE节点的query_port端口号。
9030
thrift_port
连接Doris FE节点的rpc_port端口号。
9020
user
访问Doris的用户名。
root
password
用户对应的密码。
********
database
数据库名称。
db_name
table
迁移的表名称,如果是库级别同步,“table”参数值为空即可。
table_01
- 使用MySQL客户端连接目的端Doris集群,执行以下命令查看迁移任务状态:
show restore\G
如下图所示,“State”为“FINISHED”则表示迁移任务运行成功。
- 数据迁移后,可使用MgC Agent校验迁移后的Doris数据的一致性,具体操作请参见Doris数据迁移校验。