目录
源数据库:Oracle 11g
目标数据库:MySQL 5.7.28
操作环境:Windows 7
扫描二维码关注公众号,回复: 17607830 查看本文章![]()
迁移工具:OracleSync2MySQL
一、下载迁移工具
下载和操作平台相对应的OracleSync2MySQL工具,这里选择下载windows相关,下载后解压。
OracleSync2MySQL 是一款在线迁移工具,支持将Oracle数据库迁移到多种MySQL内核目标数据库,包括 MySQL、PolarDB、Percona Server MySQL、MariaDB、OceanBase、TiDB、GaussDB for MySQL。
二、编辑配置文件
打开example.yml文件,编辑相应数据库的连接信息。
src:
host: 192.168.1.200
port: 1521
database: orcl
username: admin
password: oracle
dest:
host: 192.168.1.37
port: 3306
database: test
username: root
password: 11111
pageSize: 100000
maxParallel: 100
batchRowSize: 1000
tables:
test:
- select * from test
exclude:
operationlog
params: { charset:utf8, maxAllowedPacket:0 }
配置项解析:
- src:源数据库oracle配置
- dest:目标数据库mysql配置
- pageSize:分页查询每页记录数
- maxParallel:可以同时运行goroutine的最大并发数(golang语言开发的)
- batchRowSize:批量插入目标表的行数
- tables:自定义迁移表和自定义表数据查询,以yml格式缩进
- exclude:不迁移到目标数据库的表,以 yml 格式缩进
三、完整数据库迁移
以管理员身份运行cmd窗口,进入到工具解压目录
运行以下命令,执行完整数据库迁移
# 完整数据库迁移
OracleSync2MySQL.exe --example.yml
整个数据库迁移完成后会生成迁移摘要,观察是否有失败的对象,通过查询迁移日志可以分析失败的对象。
+-------------------------+---------------------+-------------+----------+
| SourceDb | DestDb | MaxParallel | PageSize |
+-------------------------+---------------------+-------------+----------+
| 192.168.149.37-sourcedb | 192.168.149.33-test | 30 | 100000 |
+-------------------------+---------------------+-------------+----------+
+-----------+----------------------------+----------------------------+-------------+--------------+
|Object | BeginTime | EndTime |FailedTotal |ElapsedTime |
+-----------+----------------------------+----------------------------+-------------+--------------+
|Table | 2023-07-21 17:12:51.680525 | 2023-07-21 17:12:52.477100 |0 |796.579837ms |
|TableData | 2023-07-21 17:12:52.477166 | 2023-07-21 17:12:59.704021 |0 |7.226889553s |
+-----------+----------------------------+----------------------------+-------------+--------------+
Table Create finish elapsed time 5.0256021s
四、比较源数据库和目标数据库
迁移完成后,可以比较源表和目标数据库表的行,仅显示失败的表。
# 比较源表和目标数据库表的行
OracleSync2MySQL.exe --config example.yml compareDb
显示比较失败的表,没有迁移成功的表可以自行手动迁移
Table Compare Result (Only Not Ok Displayed)
+-----------------------+------------+----------+-------------+------+
|Table |SourceRows |DestRows |DestIsExist |isOk |
+-----------------------+------------+----------+-------------+------+
|abc_testinfo |7458 |0 |YES |NO |
|log1_qweharddiskweqaz |0 |0 |NO |NO |
|abcdef_jkiu_button |4 |0 |YES |NO |
|abcdrf_yuio |5 |0 |YES |NO |
|zzz_ss_idcard |56639 |0 |YES |NO |
|asdxz_uiop |290497 |190497 |YES |NO |
|abcd_info |1052258 |700000 |YES |NO |
+-----------------------+------------+----------+-------------+------+
INFO[0040] Table Compare finish elapsed time 11.307881434s
五、部分表迁移
只迁移部分表而非整个数据库,需要先配置example.yml中自定义的表名和表数据查询语句。
运行以下命令,执行部分表迁移
# 部分表迁移
OracleSync2MySQL.exe --config example.yml -s
六、其他迁移模式
# 完整表结构迁移
OracleSync2MySQL.exe --config example.yml createTable -t
# 部分表结构迁移
OracleSync2MySQL.exe --config example.yml createTable -s -t
# 完整表数据迁移
OracleSync2MySQL.exe --config example.yml onlyData
# 部分表数据迁移
OracleSync2MySQL.exe --config example.yml onlyData -s
# 不迁移任何数据,仅转储 DDL 语句,输出到日志文件中的 createSql.log
OracleSync2MySQL.exe --config example.yml -m