使用 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 oscarwriter mongodbreader mongodbwriter ``` 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" ] } ] } } } ] } ```