'commit'
This commit is contained in:
222
DataX/说明.md
222
DataX/说明.md
@@ -1,102 +1,120 @@
|
||||
# DataX 同步部署与使用说明
|
||||
|
||||
#### 一、下载与安装 DataX
|
||||
|
||||
1. **下载 DataX 包**
|
||||
官方下载地址:https://datax-opensource.oss-cn-hangzhou.aliyuncs.com/202309/datax.tar.gz
|
||||
|
||||
2. **部署到服务器**
|
||||
将压缩包上传并解压到 `/usr/local/` 目录:
|
||||
```shell
|
||||
cd /usr/local
|
||||
tar zxvf datax.tar.gz
|
||||
# 解压后应当存在 /usr/local/datax 目录
|
||||
```
|
||||
|
||||
#### 二、配置部署
|
||||
|
||||
本方案包含**全量同步**和**增量同步**两套策略,请按以下步骤部署配置文件和脚本。
|
||||
|
||||
1. **上传文件**
|
||||
请将本地 `d:\dsWork\aiData\Doc\6、DataX配置\` 目录下的以下内容上传至服务器 `/usr/local/datax/` 根目录下:
|
||||
|
||||
* 文件夹 `json_full/` (存放全量JSON配置)
|
||||
* 文件夹 `json_inc/` (存放增量JSON配置)
|
||||
* 脚本 `run_jobs_full.sh`
|
||||
* 脚本 `run_jobs_inc.sh`
|
||||
* 脚本 `setup_cron.sh`
|
||||
|
||||
**上传后的服务器目录结构应如下所示:**
|
||||
```text
|
||||
/usr/local/datax/
|
||||
├── bin/
|
||||
├── conf/
|
||||
├── json_full/ <-- 新增:全量配置目录
|
||||
├── json_inc/ <-- 新增:增量配置目录
|
||||
├── run_jobs_full.sh <-- 新增:全量执行脚本
|
||||
├── run_jobs_inc.sh <-- 新增:增量执行脚本
|
||||
└── setup_cron.sh <-- 新增:定时任务安装脚本
|
||||
```
|
||||
|
||||
2. **赋予执行权限**
|
||||
```shell
|
||||
cd /usr/local/datax
|
||||
chmod +x *.sh
|
||||
```
|
||||
|
||||
3. **修改数据库密码 (如有需要)**
|
||||
脚本中已配置好默认的数据库连接信息。如需修改,请编辑 `run_jobs_full.sh` 和 `run_jobs_inc.sh` 中的 `PARAMS` 变量:
|
||||
```bash
|
||||
PARAMS="-Dsrc_user=... -Dsrc_pwd=... -Ddest_user=... -Ddest_pwd=..."
|
||||
```
|
||||
|
||||
#### 三、运行策略说明
|
||||
|
||||
**1. 全量同步 (Full Sync)**
|
||||
* **适用场景**:系统初始化,或数据出现严重偏差需要彻底重跑时。
|
||||
* **同步逻辑**:
|
||||
1. 执行 `TRUNCATE` 清空 Doris 目标表。
|
||||
2. 从 MySQL 读取全量数据写入 Doris。
|
||||
* **手动执行命令**:
|
||||
```shell
|
||||
cd /usr/local/datax
|
||||
./run_jobs_full.sh
|
||||
```
|
||||
|
||||
**2. 增量同步 (Incremental Sync)**
|
||||
* **适用场景**:日常持续数据同步(高频)。
|
||||
* **同步逻辑**:
|
||||
1. **不删除**任何历史数据(无空窗期)。
|
||||
2. 读取 MySQL 中 ID 最大的 **10000条** 记录(覆盖新增和最近更新的数据)。
|
||||
3. 推送到 Doris,利用 Doris 的 **Unique Key** 主键模型自动完成“存在即更新,不存在即插入” (Upsert)。
|
||||
* **手动执行命令**:
|
||||
```shell
|
||||
cd /usr/local/datax
|
||||
./run_jobs_inc.sh
|
||||
```
|
||||
|
||||
#### 四、自动化定时任务配置
|
||||
|
||||
我们提供了一键配置脚本,用于在 Rocky Linux 9 / CentOS 等系统中设置自动调度。
|
||||
|
||||
1. **执行安装脚本**
|
||||
```shell
|
||||
cd /usr/local/datax
|
||||
./setup_cron.sh
|
||||
```
|
||||
*该脚本会自动添加 Crontab 任务,配置为每 10 分钟执行一次增量同步。*
|
||||
|
||||
2. **验证与日志**
|
||||
* **查看任务**:`crontab -l`
|
||||
* **查看日志**:自动同步的日志会保存在 `/usr/local/datax/logs/datax_inc_cron.log`
|
||||
```shell
|
||||
tail -f /usr/local/datax/logs/datax_inc_cron.log
|
||||
```
|
||||
|
||||
#### 五、重要注意事项
|
||||
|
||||
1. **Doris 表模型要求**
|
||||
目标 Doris 表必须使用 **Unique Key** 模型(建表时指定 `UNIQUE KEY(id)`),否则增量同步会导致大量重复数据。
|
||||
|
||||
2. **Python 环境**
|
||||
DataX 依赖 Python 环境(推荐 Python 2.7 或 3.x)。脚本默认调用 `/usr/bin/python`,如果您的 Python 路径不同,请修改脚本头部的 `DATAX_PY` 变量。
|
||||
# DataX 同步部署与使用说明
|
||||
|
||||
本方案基于 DataX 实现从 MySQL 源端数据库到 **Doris** 或 **MySQL** 目标端的同步。支持全量和增量两种同步模式,并提供了一套模板化的配置与脚本。
|
||||
|
||||
---
|
||||
|
||||
#### 一、 目录结构
|
||||
|
||||
```text
|
||||
/usr/local/datax/
|
||||
├── bin/ # DataX 二进制程序
|
||||
├── json/ # 统一的配置模板目录 (包含 15 个表的 JSON 模板)
|
||||
├── db_config.sh # 数据库连接配置文件 (所有配置在此修改)
|
||||
├── logs/ # 自动创建的同步日志目录
|
||||
├── run_jobs_full.sh # 全量同步脚本 (支持参数: doris | mysql)
|
||||
├── run_jobs_inc.sh # 增量同步脚本 (支持参数: doris | mysql)
|
||||
├── start_cron.sh # 开启增量定时同步 (支持参数: doris | mysql)
|
||||
├── stop_cron.sh # 停止增量定时同步 (支持参数: doris | mysql)
|
||||
├── scheme/ # 表结构生成工具目录
|
||||
│ ├── generate_schema.py # 自动生成 DDL 脚本
|
||||
│ └── output/ # 生成的 SQL 文件存放处
|
||||
└── 说明.md # 本说明文档
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
#### 二、 部署步骤
|
||||
|
||||
1. **部署 DataX**
|
||||
- 下载并解压 DataX 到 `/usr/local/datax`。
|
||||
- 确保系统已安装 Python (2.7 或 3.x)。
|
||||
|
||||
2. **上传配置文件**
|
||||
- 将本地 `DataX/` 目录下的 `json/`, `*.sh`, `scheme/` 等文件上传至服务器 `/usr/local/datax/`。
|
||||
|
||||
3. **赋予权限**
|
||||
```bash
|
||||
cd /usr/local/datax
|
||||
chmod +x *.sh
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
#### 三、 运行同步任务
|
||||
|
||||
所有脚本均支持通过第一个参数指定目标系统:`doris` 或 `mysql`。
|
||||
|
||||
##### 1. 全量同步 (Full Sync)
|
||||
全量同步会先执行 `TRUNCATE TABLE` 清空目标表,然后导入全部数据。
|
||||
```bash
|
||||
# 同步到 Doris
|
||||
./run_jobs_full.sh doris
|
||||
|
||||
# 同步到 MySQL
|
||||
./run_jobs_full.sh mysql
|
||||
```
|
||||
|
||||
##### 2. 增量同步 (Incremental Sync)
|
||||
增量同步默认采集最近 10000 条数据(按 ID 倒序),利用目标端的 **Unique Key (Doris)** 或 **Primary Key (MySQL)** 机制实现自动覆盖更新。
|
||||
```bash
|
||||
# 同步到 Doris
|
||||
./run_jobs_inc.sh doris
|
||||
|
||||
# 同步到 MySQL
|
||||
./run_jobs_inc.sh mysql
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
#### 四、 自动化调度 (Crontab)
|
||||
|
||||
使用提供的管理脚本一键配置每 10 分钟一次的增量同步任务。
|
||||
|
||||
1. **启动定时任务**
|
||||
```bash
|
||||
# 为 Doris 同步启动定时任务
|
||||
./start_cron.sh doris
|
||||
|
||||
# 为 MySQL 同步启动定时任务
|
||||
./start_cron.sh mysql
|
||||
```
|
||||
|
||||
2. **停止定时任务**
|
||||
```bash
|
||||
./stop_cron.sh doris # 或 mysql
|
||||
```
|
||||
|
||||
3. **查看日志**
|
||||
日志保存在 `logs/` 目录下,文件名为 `datax_inc_{target}_cron.log`。
|
||||
```bash
|
||||
tail -f logs/datax_inc_doris_cron.log
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
#### 五、 辅助工具:表结构生成
|
||||
|
||||
在同步数据前,如果目标端尚未建表,可以使用 `scheme/` 下的工具生成建表语句。
|
||||
|
||||
1. **生成 DDL**
|
||||
```bash
|
||||
cd scheme
|
||||
# 自动处理 json/ 目录下的所有表
|
||||
python generate_schema.py
|
||||
```
|
||||
|
||||
2. **获取 SQL**
|
||||
生成的 SQL 文件位于 `scheme/output/`,包含 MySQL 和 Doris 两个版本。
|
||||
- **Doris 建表特性**:采用 Unique Key 模型,单副本 (`replication_num=1`),单分桶,适合单机部署。
|
||||
|
||||
---
|
||||
|
||||
#### 六、 常见问题与注意事项
|
||||
|
||||
1. **数据库密码修改**:
|
||||
- 所有数据库连接信息(源端 MySQL、目标端 Doris、目标端 MySQL)均集中在 [db_config.sh](file:///d:/dsWork/aiData/DataX/db_config.sh) 中。**修改该文件即可同步应用到所有同步任务**,无需修改 `.sh` 脚本。
|
||||
2. **Doris 负载地址**:
|
||||
- Doris 同步依赖 `loadUrl` (FE 的 8030 端口) 和 JDBC (FE 的 9030 端口)。
|
||||
3. **网络连通性**:
|
||||
- 请确保 DataX 部署机能够访问源端 RDS 和目标端数据库。
|
||||
|
||||
Reference in New Issue
Block a user