194 lines
5.5 KiB
Markdown
194 lines
5.5 KiB
Markdown
使用 DataX 向 OceanBase 数据库全量迁移数据
|
|
===================================================
|
|
|
|
|
|
|
|
您可以使用离线数据同步工具 [DataX](https://github.com/alibaba/DataX)向 OceanBase 数据库全量迁移数据。DataX 是 DataWorks 数据集成的开源版本,支持多种异构数据源之间的数据同步。目前,OceanBase Reader 和 Writer 插件均已开源。但是由于 DataX 缺少公司内部的依赖,因此 DataX 中的 OceanBase Reader 和 Writer 仅保留了最核心的功能。
|
|
|
|
由于 DataX 与其内部版的核心组件不同,因此 OceanBase 插件不能直接在 DataX 中使用。建议您根据 DataX 文档,使用源代码为 DataX 编译可执行的二进制文件。DataX 文档详情,参考 [DataX 用户指南](https://github.com/alibaba/DataX/blob/master/userGuid.md)。
|
|
|
|
编译 DataX 可执行二进制文件
|
|
--------------------------------------
|
|
|
|
按以下步骤编译 DataX 可执行二进制文件:
|
|
|
|
1. 运行以下命令,下载源代码。
|
|
|
|
```bash
|
|
git clone git@github.com:alibaba/DataX.git
|
|
```
|
|
|
|
|
|
|
|
2. 注释 `DataX/pom.xml` 文件中的以下内容。
|
|
|
|
```xml
|
|
<module>oscarwriter</module>
|
|
<module>mongodbreader</module>
|
|
<module>mongodbwriter</module>
|
|
```
|
|
|
|
|
|
|
|
3. 运行以下命令,使用 Maven 将 DataX 打包。
|
|
|
|
```bash
|
|
$ cd {DataX_source_code_home}
|
|
$ mvn -U clean package assembly:assembly -Dmaven.test.skip=true
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
数据迁移示例
|
|
---------------------------
|
|
|
|
### 将数据从 MySQL 迁移到 OceanBase 数据库
|
|
|
|
运行以下命令启动 DataX:
|
|
|
|
```bash
|
|
python datax.py sample.json
|
|
```
|
|
|
|
|
|
|
|
`sample.json` 文件是数据迁移任务的示例配置文件。配置如下:
|
|
|
|
```json
|
|
{
|
|
"job": {
|
|
"setting": {
|
|
"speed": {
|
|
"channel": 2,
|
|
},
|
|
"errorLimit": {
|
|
"record": 10
|
|
}
|
|
},
|
|
"content": [
|
|
{
|
|
"reader": {
|
|
"name": "mysqlreader",
|
|
"parameter": {
|
|
"username": "xxx",
|
|
"password": "xxx",
|
|
"splitPk": "c01",
|
|
"column": [
|
|
"*"
|
|
],
|
|
"connection": [
|
|
{
|
|
"jdbcUrl": [
|
|
"jdbc:mysql://xxxx:3306/datax_test"
|
|
],
|
|
"table": [
|
|
"shuju_test"
|
|
]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"writer": {
|
|
"name": "oceanbasev10writer",
|
|
"parameter": {
|
|
"writeMode": "replace",
|
|
"username": "xxx",
|
|
"password": "xxx",
|
|
"writerThreadCount": 5,
|
|
"column": [
|
|
"*"
|
|
],
|
|
"connection": [
|
|
{
|
|
"jdbcUrl": "||_dsc_ob10_dsc_||集群:租户||_dsc_ob10_dsc_||jdbc:mysql://xxxx:2883/datax_test?useUnicode=true&characterEncoding=utf-8",
|
|
"table": [
|
|
"shuju_test"
|
|
]
|
|
}
|
|
]
|
|
}
|
|
}
|
|
}
|
|
]
|
|
}
|
|
}
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### 将数据从 OceanBase 数据库迁移到 MySQL
|
|
|
|
运行以下命令启动 DataX:
|
|
|
|
```bash
|
|
python datax.py sample.json
|
|
```
|
|
|
|
|
|
|
|
`sample.json` 文件是数据迁移任务的示例配置文件。配置如下:
|
|
|
|
```json
|
|
{
|
|
"job": {
|
|
"setting": {
|
|
"speed": {
|
|
"channel":3
|
|
},
|
|
"errorLimit": {
|
|
"record": 0
|
|
}
|
|
},
|
|
"content": [
|
|
{
|
|
"reader": {
|
|
"name": "oceanbasev10reader",
|
|
"parameter": {
|
|
"username": "xxx",
|
|
"password": "xxx",
|
|
"column": [
|
|
"*"
|
|
],
|
|
"weakRead": "false",
|
|
"readBatchSize": 30,
|
|
"connection": [
|
|
{
|
|
"jdbcUrl": ["||_dsc_ob10_dsc_||集群.admin:租户||_dsc_ob10_dsc_||jdbc:oceanbase://xxxx:2883/datax_test"],
|
|
"table": [
|
|
"shuju_test"
|
|
]
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"writer": {
|
|
"name": "mysqlwriter",
|
|
"parameter": {
|
|
"writeMode": "insert",
|
|
"username": "xxx",
|
|
"password": "xxx",
|
|
"column": [
|
|
"*"
|
|
],
|
|
"connection": [
|
|
{
|
|
"jdbcUrl": "jdbc:mysql://xxxx:3306/datax_test",
|
|
"table": [
|
|
"shuju_test"
|
|
]
|
|
}
|
|
]
|
|
}
|
|
}
|
|
}
|
|
]
|
|
}
|
|
```
|
|
|
|
|