【Doris】MySQL数据同步至Doris问题记录

在进行数据从MySQL到Doris的同步过程中,由于Doris的varchar字段以UTF-8存储,对英文字符占1字节,中文字符占3字节的特性不熟悉,导致了数据丢失。问题源于源数据varchar字段过长,超过了Doris表的字段长度限制。解决方案是将Doris表的varchar字段长度调整为原字段长度的3倍,以适应包含全中文字符的情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

项目场景:

最近接到一个数据同步的任务,需要基于 DataInLong 将数据从 MySQL 同步至 Doris 中。


问题描述

数据迁移过程中,一部分表数据出现丢失的情况。


原因分析:

经排查发现,有报错源数据中的 varchar 类型字段太长,导致Doris 表数据插入失败。而本人在创建 Doris 表时,字段长度均是直接沿用 MySQL 源数据表中定义的字段长度。

于是从 Doris 官网上找到了其 varchar 类型的描述:

VARCHAR(M)
变长字符串,M代表的是变长字符串的字节长度。M的范围是1-65533。

注意:变长字符串是以UTF-8编码存储的,因此通常英文字符占1个字节,中文字符占3个字节。

而在 MySQL 中 varchar(n) 中括号中 n 代表字符的个数,并不代表字节个数。


解决方案:

直接将现有 Doris 表中 varchar 类型字段长度调整为原来的 3 倍。(即能兼容全是中文字符的情况)

### 使用 DataX 实现 MySQL 数据同步Doris #### 配置环境需求 为了成功运行 DataX 工具并实现 MySQLDoris数据同步,需满足以下软件依赖条件: - Linux 或 Windows 操作系统 - JDK 版本 1.8 及以上,建议使用 1.8 版本[^3] - Python 2 或者 Python 3 均可支持 - Apache Maven 3.x (仅用于编译 DataX) 对于已经安装好上述环境的操作系统来说,可以直接下载预编译好的 DataX 工具包来简化部署过程。 #### 下载与安装 DataX 可以通过官方提供的链接直接获取最新版的 DataX 工具包。解压后即可获得完整的执行文件及相关文档资料。 #### 准备 MySQL 数据源 确保目标 MySQL 数据库已准备好待迁移的数据表结构以及必要的权限设置。这一步骤通常涉及创建数据库连接字符串、授予适当访问权限给应用程序用户等操作[^1]。 #### 编写 JSON 配置文件 DataX 使用 JSON 文件定义读取端(Reader)、写入端(Writer)以及其他参数配置。下面是一个简单的例子展示如何构建这样的配置文件以完成从 MySQLDoris数据传输任务: ```json { "job": { "content": [ { "reader": { "name": "mysqlreader", "parameter": { "username": "your_mysql_username", "password": "your_password", "column": ["*"], "connection": [{ "jdbcUrl": ["jdbc:mysql://localhost:3306/your_database_name"], "table": ["source_table"] }] } }, "writer": { "name": "doriswriter", "parameter": { "feNodes": ["http://<FE_HOST>:8030/api/_sql?db=your_db&user=your_user&passwd=your_pwd"], "table": "target_table", "columns": ["col1", "col2", ...], "maxRetryTimes": 3, "batchSize": 10000 } } } ], "setting": { "speed": { "channel": 3 } } } } ``` 此配置指定了 `mysqlreader` 和 `doriswriter` 插件分别作为输入输出插件,并设置了相应的连接信息和其他必要选项。注意替换其中的具体值为你自己的实际情况下的相应值。 #### 执行数据同步作业 当一切就绪之后,在命令行界面切换到 DataX 解压缩后的目录下,通过如下指令启动数据同步流程: ```bash python datax.py your_config_file.json ``` 这里假设当前路径存在名为 `datax.py` 的脚本文件和自定义命名的 `.json` 格式的配置文件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值