文档首页/ MapReduce服务 MRS/ 最佳实践/ 数据迁移/ 通过CCR脚本迁移Doris数据到MRS集群
更新时间:2025-08-14 GMT+08:00
分享

通过CCR脚本迁移Doris数据到MRS集群

Doris历史元数据、增量元数据、历史数据和增量数据都是通过Syncer服务,从源集群获取Binlog ,目标集群再实时同步Binlog数据,实现全量和增量数据的迁移。

约束与限制

  • 使用CCR迁移数据时,Doris版本限制

    Doris 2.0的最低版本为2.0.15,Doris 2.1的最低版本为2.1.6。

  • 元数据和数据迁移过程中会占用源端资源,需避开客户业务高峰期
  • 组件版本限制

    Syncer版本 ≥ 目的端Doris版本 ≥ 源端Doris版本

  • 从Syncer 2.1.8和3.0.4版本开始,Syncer不再支持Doris 2.0。
  • 只支持将源端低版本Doris数据迁移至目的端高版本Doris中。
  • CCR会自动创建元数据,不能提前创建元数据,否则容易导致失败。
  • 参数配置详情请参见 Apache Doris官网限制配置说明

方案架构

图1 Doris数据迁移
  • 全量元数据和数据迁移:CCR任务会首先进行全量同步,将源端数据一次性完整地复制到目的端。
  • 增量元数据和数据迁移:在全量同步完成后,CCR任务会继续进行增量同步,保持源端和目的端数据的一致性。

迁移方案支持各种网络选型:公网、VPN、专线等。根据实际情况选择网络方案,两端网络互通即可迁移。

表1 网络方案

迁移网络类型

优点

缺点

专线

  • 性能稳定:时延低至毫秒级。
  • 带宽选择范围可达几十Gbit/s。
  • 数据传输安全性高。
  • 成本高:一般是包年包月。
  • 源端和目的端私网IP地址不能重叠。
  • 开通时间长:一般需提前1个月申请。

VPN

  • 组网灵活,随时搭建。
  • 稳定性较好,安全性较好。
  • 成本适中:公网费用+VPN费用。
  • 时延较高。
  • 源端和目的端私网IP地址不能重叠。

公网IP

  • 支持源端和目的端私网IP一致的情况下实施迁移。
  • 带宽任意选择(Mbit/s~Gbit/s)。
  • 即买即用,快速绑定。
  • 成本低。
  • 稳定性差:带宽可能无法全部利用,迁移速率相对较慢。
  • 公网传输数据有泄漏风险。

全量、增量元数据和数据迁移

  1. 打开Doris源端和目的端的binlog配置。

    1. 在源端Doris的“fe.conf”和“be.conf”中添加以下内容并保存:
      enable_feature_binlog=true
    2. 登录目的端MRS集群的Manager页面,选择“集群 > 服务 > Doris > 配置 > 全部配置”,在左侧导航栏选择“FE(角色) > 自定义”。

      登录MRS集群Manager页面的具体操作请参见访问MRS集群Manager

    3. 在自定义参数文件“fe.conf”中新增自定义参数“enable_feature_binlog”,值为“true”。
    4. 在左侧导航栏选择“BE(角色) > 自定义”,在自定义参数文件“be.conf”中新增自定义参数“enable_feature_binlog”,值为“true”。
    5. 单击“保存”保存配置。单击“概览”,选择页面右上方的“更多 > 滚动重启服务”,输入当前用户密码并单击“确定”,滚动重启Doris服务使配置生效。

  2. 创建一个Linux系统的弹性云服务器,对应ECS的安全组、虚拟私有云、子网需要和迁移目的端MRS集群保持一致,具体操作请参见自定义购买ECS

    还需根据实际环境打通该ECS与源端Doris集群的网络。并确保ECS节点的glibc为2.28及之后版本,可执行以下命令查看glibc的版本:

    ldd --version

  3. 从Doris官网跨集群数据同步概述中下载Syncer压缩包,例如“ccr-syncer-*-rc02-x64.tar.xz”,并上传至步骤 2创建的ECS节点的目录下。
  4. 使用root用户登录上传了Syncer压缩包的ECS节点,执行以下命令解压Syncer压缩包:

    1. 切换至压缩包所在目录:
      cd 压缩包目录
    2. 解压Syncer压缩包:
      tar -xvf ccr-syncer-*-rc02-x64.tar.xz
    3. 切换至“bin”目录下:
      cd ccr-syncer-*-rc02-x64/bin
    4. 开启需要迁移的指定数据库中所有表的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的用户名和密码。

  5. 启动Syncer:

    bash start_syncer.sh –daemon

  6. 登录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

  7. 使用MySQL客户端连接目的端Doris集群,执行以下命令查看迁移任务状态:

    show restore\G

    如下图所示,“State”为“FINISHED”则表示迁移任务运行成功。

  8. 数据迁移后,可使用MgC Agent校验迁移后的Doris数据的一致性,具体操作请参见Doris数据迁移校验

相关文档