Apache Doris数据迁移:在线迁移与离线迁移
你是否还在为海量数据迁移耗时过长、业务中断风险高而困扰?本文将系统介绍Apache Doris的两种核心迁移方案,帮助你实现零停机数据迁移。读完本文你将掌握:在线迁移与离线迁移的技术选型、完整操作流程、工具配置方法及避坑指南。
迁移方案对比
| 迁移模式 | 适用场景 | 核心工具 | 数据延迟 | 业务影响 |
|---|---|---|---|---|
| 在线迁移 | 实时数据同步 | DataX、Kettle | 毫秒级 | 低 |
| 离线迁移 | 历史数据批量迁移 | mysql_to_doris、Stream Load | 小时级 | 中 |
离线迁移:文件导入方案
1. MySQL全量迁移工具
使用mysql_to_doris工具可快速实现从MySQL到Doris的离线迁移,支持自动建表和数据校验。
配置文件路径:extension/mysql_to_doris/conf/env.conf
# 配置示例
fe_master_host=192.168.1.100
fe_master_port=9030
mysql_host=192.168.1.200
mysql_port=3306
迁移步骤:
# 创建外部表
sh bin/run.sh --create-external-table -t JDBC
# 创建目标表并同步数据
sh bin/run.sh --create-olap-table --insert-data
2. 本地文件导入
通过Stream Load协议实现CSV/Parquet文件导入,支持断点续传和数据压缩。
Python示例代码:samples/connect/python/connector.py
# 数据导入核心代码
cursor.execute("""
LOAD LABEL db_test.label1
(
DATA INFILE('hdfs://path/to/file.csv')
INTO TABLE table_test
FORMAT AS 'csv'
(siteid, citycode, pv)
)
WITH BROKER 'hdfs_broker'
(
"username"="hadoop",
"password"=""
)
PROPERTIES
(
"max_filter_ratio"="0.1"
);
""")
在线迁移:实时同步方案
1. DataX增量同步
DataX的doriswriter插件支持从多种数据源实时同步数据,通过CDC(变更数据捕获)捕获增量更新。
插件路径:extension/DataX/doriswriter
JSON配置示例:
{
"job": {
"content": [
{
"reader": {
"name": "mysqlreader",
"parameter": {
"username": "root",
"password": "123456",
"column": ["id", "name"],
"connection": [{"table": ["sales"], "jdbcUrl": ["jdbc:mysql://192.168.1.200:3306/test"]}]
}
},
"writer": {
"name": "doriswriter",
"parameter": {
"loadUrl": ["192.168.1.100:8030"],
"username": "root",
"password": "",
"table": "sales_doris",
"database": "test"
}
}
}
]
}
}
2. Kettle可视化迁移
使用Kettle的Doris Stream Loader插件构建可视化迁移任务,支持定时调度和失败重试。
插件编译路径:extension/kettle
# 编译插件
mvn clean package -DskipTests
cp assemblies/plugin/target/doris-stream-loader ${KETTLE_HOME}/plugins/
迁移后验证
数据一致性校验
-- 行数对比
SELECT COUNT(*) FROM mysql_external_table;
SELECT COUNT(*) FROM doris_olap_table;
-- 抽样对比
SELECT * FROM mysql_external_table LIMIT 10
EXCEPT
SELECT * FROM doris_olap_table LIMIT 10;
性能优化建议
- 分区表迁移时按分区并行导入
- 大表迁移前启用临时分区
- 迁移窗口选择业务低峰期
总结
Apache Doris提供了灵活的数据迁移方案,离线迁移适合全量历史数据,在线迁移满足实时同步需求。实际应用中可组合使用两种方案,通过extension/mysql_to_doris完成初始化迁移,再通过DataX实现增量同步。迁移过程中建议开启conf/be.conf中的迁移模式参数,降低对查询性能的影响。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考




