2. 快速开始
本章包含下载、配置、运行 三个步骤,用户可遵循本章的步骤快速开始使用 LightDB-ETL。
另外,本章节总结了基本的使用,特殊的一些需求如如果只迁移单个表、如果迁移单个schema、如何在迁移时排除指定的表可参考第三章。
2.1. 环境准备
2.1.1. Java 11
需要 Java 11 及以上版本, 下载地址
2.1.2. 内存
具体所需内存根据迁移开启的线程数量(concurrentThreadCount)、每次迁移数据的行数(batchCount)、表每行的数据大小(由列的数量、数据类型等确定)。 以下是一个实际的内存占用情况,可供计算迁移所需内存大小:
前提:每个表500M,每次读取20万行数据,每行数据0.1kb。
线程数 |
内存 |
|---|---|
1 |
600M |
2 |
1.2g |
2.1.3. LightDB-ETL
下载迁移工具 LightDB-ETL。
2.2. 修改配置
修改 config 目录下的application.properties 配置文件,配置源端数据库、目标端数据库、迁移选项、日志选项。详细配置参数的含义参考第四章配置参数的说明。
2.2.1. 修改迁移的数据库类型
etl.global.sourceDatabase=oracle
etl.global.targetDatabase=lightdb
2.2.2. 修改源库Oracle连接
etl.source.jdbc.url=数据库连接地址
etl.source.jdbc.username=数据库用户名
etl.source.jdbc.password=数据库密码
2.2.3. 修改目标库LightDB连接
etl.target.jdbc.url=数据库连接地址
etl.target.jdbc.username=数据库用户名
etl.target.jdbc.password=数据库密码
2.2.4. 修改 keywords 配置
该选项是如果列名有关键字如by,需要配置etl.global.keywords。没有则可忽略此项
etl.global.keywords=by,commit
2.2.5. 修改迁移功能和迁移的模式
详细参数说明参考第四章配置选项说明参数。特别注意,如果数据库存在依赖关系,需要分多次步骤迁移,如存储过程依赖函数,则需要先迁移函数,在迁移存储过程。
etl.global.transferSchemas=schema1
etl.global.targetSchemas=schema2
etl.global.enableFunctions=TransferTable,TransferSequence,TransferTableData,TransferIndex,TransferView,TransferTrigger,TransferPackage,TransferType,TransferProcedure,TransferFunction,TableCompare,TableDataCompare,TypeCountCompare
2.3. 运行
执行 java -jar <jar包名> 命令运行迁移程序。如jar包名是lightdb-etl.jar,则执行java -jar lightdb-etl.jar
2.4. 校验查看
在logs/lightdb-etl/lightdb-etl.log文件里面搜索不一致。如果有不一致信息,表明迁移出错。详细例子,可看第五章。迁移出错问题分析可查看 lightdb-etl oracle迁移到lightdb的常见问题和解决方法
2.5. Oracle 到 OceanBase MySQL 数据迁移操作指南
本文档以 oracle2ocean_base_mysql 场景为例,详细介绍使用 LightDB-ETL 工具进行数据迁移的操作步骤。
2.5.1. 一、环境准备
下载迁移工具
请前往官网下载最新版的 LightDB-ETL 工具包。
创建目标数据库
在 OceanBase MySQL 模式下创建用于接收数据的数据库,建议字符集设置为
utf8mb4:CREATE DATABASE etl_test CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
处理大小写敏感问题(可选)
若源端 Oracle 中存在表名大小写混合的情况,建议在 Oracle 端创建临时视图以简化迁移过程。例如:
CREATE VIEW TINSTRUCTION_copy AS SELECT * FROM "TINSTRUCTION_copy";
2.5.2. 二、配置文件修改
请进入 lightdb/config/ 目录,依次修改以下配置文件。
修改 application.properties
编辑
application.properties文件,配置运行模式、数据库连接及迁移策略:# 全局运行配置 etl.global.runModel=0 server.port=2023 logging.config=classpath:log4j2.xml # 数据库类型定义 etl.global.sourceDatabase=oracle etl.global.targetDatabase=ocean_base_mysql # 调试与容错配置 etl.global.showSql=true etl.global.fastFail=false etl.global.removeDoubleQuote=true # 性能配置 etl.global.batchCount=10000 etl.global.concurrentThreadCount=6 # 功能开关 etl.global.compileOracleProcedure=false etl.global.pwdEncrypted=false etl.global.syncTableDataOpenTruncate=true etl.global.ignoreCase=true etl.global.ignoreCaseMixing=true # 启用迁移功能模块 etl.global.enableFunctions=TransferTable,TransfertableFK,TransferIndex,TransferTablePK,TransferTableData,TableCompare,TableDataCompare,TypeCountCompare ################## Oracle 源端配置 ######################### etl.source.jdbc.url=jdbc:oracle:thin:@<ip>:<port>/<service_name> etl.source.jdbc.username=<username> etl.source.jdbc.password=<password> ################## OceanBase MySQL 目标端配置 ############### etl.target.jdbc.url=jdbc:oceanbase://<ip>:<port>/<dbname>?rewriteBatchedStatements=true etl.target.jdbc.username=<username> etl.target.jdbc.password=<password> ################## Schema 映射配置 ################## # 格式:源Schema=目标Schema (多个可用逗号分隔) etl.global.transferSchemas=<source_username> etl.global.targetSchemas=<target_username> # 保留字/关键字配置 etl.global.keywords=group,desc,order,collation,describe,DESCRIBE,PRECISION,MAXVALUE,date,nav,time,LEFT,CALL
备注
请将上述配置中的
<ip>,<port>,<service_name>,<username>,<password>,<dbname>,<source_username>,<target_username>替换为实际的数据库连接信息。修改 unisql.conf
编辑
unisql.conf文件,配置 SQL 解析的关键字行为及非空约束处理策略:unisql.keyword.doublequotes = group,desc,order,collation,describe,DESCRIBE,PRECISION,MAXVALUE,date,nav,time,LEFT,CALL unisql.notnull.behavior = 3
2.5.3. 三、执行迁移
完成配置后,在终端执行以下命令启动迁移任务:
java -jar lightdb-etl-25.4.0.4.jar
2.5.4. 四、清理工作
迁移任务成功完成后,若之前在 Oracle 端创建了临时视图,请执行以下 SQL 进行清理:
DROP VIEW TINSTRUCTION_copy;
2.5.5. 五、查看迁移结果
迁移任务结束后,系统会自动生成比对报告。
报告位置:程序运行目录下的
report文件夹。详细内容:具体的校验结果和差异分析,请参阅文档章节
7. 校验结果。