Files
oceanbase/docs/docs-cn/7.developer-guide-1/5.migrate-data-to-oceanbase/4.use-datax-to-full-migration-data-to-oceanbase.md
2022-02-10 14:51:49 +08:00

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"
]
}
]
}
}
}
]
}
```