5.5 KiB
		
	
	
	
	
	
	
	
			
		
		
	
	
			5.5 KiB
		
	
	
	
	
	
	
	
使用 DataX 向 OceanBase 数据库全量迁移数据
您可以使用离线数据同步工具 DataX向 OceanBase 数据库全量迁移数据。DataX 是 DataWorks 数据集成的开源版本,支持多种异构数据源之间的数据同步。目前,OceanBase Reader 和 Writer 插件均已开源。但是由于 DataX 缺少公司内部的依赖,因此 DataX 中的 OceanBase Reader 和 Writer 仅保留了最核心的功能。
由于 DataX 与其内部版的核心组件不同,因此 OceanBase 插件不能直接在 DataX 中使用。建议您根据 DataX 文档,使用源代码为 DataX 编译可执行的二进制文件。DataX 文档详情,参考 DataX 用户指南。
编译 DataX 可执行二进制文件
按以下步骤编译 DataX 可执行二进制文件:
- 
运行以下命令,下载源代码。 git clone git@github.com:alibaba/DataX.git
- 
注释 DataX/pom.xml文件中的以下内容。<module>oscarwriter</module> <module>mongodbreader</module> <module>mongodbwriter</module>
- 
运行以下命令,使用 Maven 将 DataX 打包。 $ cd {DataX_source_code_home} $ mvn -U clean package assembly:assembly -Dmaven.test.skip=true
数据迁移示例
将数据从 MySQL 迁移到 OceanBase 数据库
运行以下命令启动 DataX:
python datax.py  sample.json
sample.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:
python datax.py sample.json
sample.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"
                                ]
                            }
                        ]
                    }
                }
            }
        ]
    }
