使用OMA评估MySQL兼容性
OMA快速上手
OMA是一个集采集,评估,回放,验证为一体的OceanBase评估工具,在将数据库从Oracle/MySQL迁移到OB的过程中进行功能和性能的评估,帮助
用户快速了解整个系统的迁移难度。
首先先阅读官方提供的文档使用手册
https://www.oceanbase.com/docs/oceanbase-migration-assessment/oma/V3.2.1/product-features
文档说明非常全
评估 MySQL 实例
官方提供的样例:
sh bin/start.sh --name task_name \ # 任务的名称,可以随意取值
--mode ANALYZE \ # 分析模式
--from-type DB \ # 来源为数据库
--evaluate-mode SOURCE_TARGET \ # 评估⽅式
--source-db-type MYSQL \ # 源数据库的类型
--source-db-version 5.6/5.7/8.0 \ # 源数据库的版本
--source-db-host 10.10.10.1 \ # 源数据库的地址
--source-db-port 3306 \ # 源数据库的端⼝
--source-db-user user \ # 源数据库的⽤⼾名
--source-db-password pass \ # 源数据库的密码
--schemas "yewu_test" \ # 需要评估的 Schema,MySQL 暂不⽀持评估多个 Schema
--target-db-type OBMYSQL \ # ⽬标端的类型,固定值 OBMYSQL
--target-db-version 2.2.x # ⽬标端的版本,固定值 2.2.x
实验鸡
192.168.1.11使用docker启动一个MySQL5.7
并创建库创建表最后写入一些数据。
最后再安装一个不小于1.8版本的jdk
安装OMA
去官方下载oma-3.3.0.tar
解压并进入目录
tar xvf oma-3.3.0.tar -C /usr/local
cd oma-3.3.0.tar
验证MySQL
如何获取MySQL schemas ?
https://www.yiibai.com/mysql/show-databases.html
sh bin/start.sh --name MoveDatabase \
--mode ANALYZE \
--from-type DB \
--evaluate-mode SOURCE_TARGET \
--source-db-type MYSQL \
--source-db-version 5.7 \
--source-db-host 192.168.1.11 \
--source-db-port 3306 \
--source-db-user root \
--source-db-password 123456 \
--schemas "test" \
--target-db-type OBMYSQL \
--target-db-version 2.2.x
执行输出
[root@node1 oma-3.3.0]# sh bin/start.sh --name MoveDatabase --mode ANALYZE --from-type DB --evaluate-mode SOURCE_TARGET --source-db-type MYSQL --source-db-version 5.7 --source-db-host 192.168.1.11 --source-db-port 3306 --source-db-user root --source-db-password 123456 --schemas "test" --target-db-type OBMYSQL --target-db-version 2.2.x
____ ____ __ __ _ _ _ _
/ __ \ | _ \ | \/ (_) | | (_) /\ | |
| | | | ___ ___ __ _ _ __ | |_) | __ _ ___ ___ | \ / |_ __ _ _ __ __ _| |_ _ ___ _ __ / \ ___ ___ ___ ___ ___ _ __ ___ ___ _ __ | |_
| | | |/ __/ _ \/ _` | '_ \| _ < / _` / __|/ _ \ | |\/| | |/ _` | '__/ _` | __| |/ _ \| '_ \ / /\ \ / __/ __|/ _ \/ __/ __| '_ ` _ \ / _ \ '_ \| __|
| |__| | (_| __/ (_| | | | | |_) | (_| \__ \ __/ | | | | | (_| | | | (_| | |_| | (_) | | | | / ____ \\__ \__ \ __/\__ \__ \ | | | | | __/ | | | |_
\____/ \___\___|\__,_|_| |_|____/ \__,_|___/\___| |_| |_|_|\__, |_| \__,_|\__|_|\___/|_| |_| /_/ \_\___/___/\___||___/___/_| |_| |_|\___|_| |_|\__|
__/ |
|___/
OceanBase Migration Assessment version : 3.3.0
Power by Ant Group
[INFO ] 10:38:43.774 [main] c.a.oceanbase.oma.command.Commander - Start OceanBase Migration Assessment version [3.3.0] ...
[INFO ] 10:38:43.776 [main] c.a.oceanbase.oma.command.Commander - command parameters :
--name MoveDatabase
--mode ANALYZE
--from-type DB
--evaluate-mode SOURCE_TARGET
--source-db-type MYSQL
--source-db-version 5.7
--source-db-host 192.168.1.11
--source-db-port 3306
--source-db-user root
--source-db-password 123456
--schemas test
--target-db-type OBMYSQL
--target-db-version 2.2.x
[INFO ] 10:38:43.788 [main] c.a.o.o.s.ScheduleServiceImpl - local jdbc jdbc:sqlite:/usr/local/oma-3.3.0/db/oma.sqlite
[INFO ] 10:38:43.812 [main] c.a.o.oma.common.ds.conf.JdbcHelper - [SQLITE_3.2.0] URL:[jdbc:sqlite:/usr/local/oma-3.3.0/db/oma.sqlite] connect count init:[5] : max[20] properties [{}]
[INFO ] 10:38:44.067 [main] c.alibaba.druid.pool.DruidDataSource - {dataSource-1} inited
[INFO ] 10:38:44.098 [ScheduleTask] c.a.o.o.scheduler.tasks.ScheduleTask - start process objects/sql now ...
[INFO ] 10:38:44.102 [ScheduleTask] c.a.o.oma.common.ds.conf.JdbcHelper - [MYSQL_5.7] URL:[jdbc:mysql://192.168.1.11:3306/test] connect count init:[5] : max[20] properties [{autoReconnect=true, useUnicode=true, characterEncoding=utf8, useSSL=false, testWhileIdle=false, failOverReadOnly=true}]
[INFO ] 10:38:44.268 [ScheduleTask] c.alibaba.druid.pool.DruidDataSource - {dataSource-2} inited
[INFO ] 10:38:44.287 [PerfEvaluateTask] c.a.o.o.s.t.PerformanceEvaluateTask - start performance evaluate now ...
[INFO ] 10:38:44.333 [work-thread-3] c.alipay.oceanbase.oma.scanner.c.a.a - ALL BASE TABLE COUNT [1]
[INFO ] 10:38:44.334 [work-thread-3] c.alipay.oceanbase.oma.scanner.c.a.a - ALL VIEW COUNT [0]
[INFO ] 10:38:44.341 [work-thread-3] c.alipay.oceanbase.oma.scanner.c.a.a - ALL TRIGGER COUNT [0]
[INFO ] 10:38:44.344 [work-thread-3] c.alipay.oceanbase.oma.scanner.c.a.a - ALL FUNCTION COUNT [0]
[INFO ] 10:38:44.346 [work-thread-3] c.alipay.oceanbase.oma.scanner.c.a.a - ALL PROCEDURE COUNT [0]
[INFO ] 10:38:44.348 [work-thread-3] c.alipay.oceanbase.oma.scanner.c.a.a - ALL EVENT COUNT [0]
[INFO ] 10:38:44.348 [work-thread-3] c.alipay.oceanbase.oma.scanner.c.a.a - ALL OBJECTS COUNT [ 1 ]
[WARN ] 10:38:44.348 [work-thread-3] c.a.o.o.scheduler.tasks.CollectTask - scan cost 61 ms
[INFO ] 10:38:44.348 [work-thread-3] c.a.o.o.scheduler.tasks.CollectTask - ready to collect 1 objects
[INFO ] 10:38:44.353 [work-thread-3] c.a.o.o.scheduler.tasks.CollectTask - scan finish ...
[INFO ] 10:38:44.354 [work-thread-3] c.a.o.o.scheduler.tasks.ScheduleTask - task : collect-DB -- 01143 finish ...
[INFO ] 10:38:44.355 [ConvertTask] c.a.o.o.scheduler.tasks.ConvertTask - convert process finish ...
[INFO ] 10:38:44.356 [ConvertTask] c.a.o.o.scheduler.tasks.ScheduleTask - task : convert-task -- 28e4a finish ...
[ test(0|0) ] Progress: |0% [INFO ] 10:38:45.227 [EvaluateTask] c.a.o.o.scheduler.tasks.EvaluateTask - evaluate process finish ...
[WARN ] 10:38:45.228 [EvaluateTask] c.a.o.o.scheduler.tasks.EvaluateTask - evaluateCostTime 873 ms dumpCostTime 0 ms
[INFO ] 10:38:45.228 [EvaluateTask] c.a.o.o.scheduler.tasks.ScheduleTask - task : evaluate-DB -- b96e8 finish ...
[ test(0|1) ] Progress: |0% [INFO ] 10:38:45.230 [PerfEvaluateTask] c.a.o.o.s.t.PerformanceEvaluateTask - performance evaluate process finish ...
[WARN ] 10:38:45.230 [PerfEvaluateTask] c.a.o.o.s.t.PerformanceEvaluateTask - performanceEvaluateCostTime 0 ms dumpCostTime 0 ms
[INFO ] 10:38:45.230 [PerfEvaluateTask] c.a.o.o.scheduler.tasks.ScheduleTask - task : performance-DB -- 4ec2b finish ...
[ test(0|1) ] Progress: |0% [INFO ] 10:38:45.235 [work-thread-1] c.a.o.oma.scheduler.tasks.TuningTask - tuning process finish ...
[WARN ] 10:38:45.235 [work-thread-1] c.a.o.oma.scheduler.tasks.TuningTask - turningCostTime 0 ms
[INFO ] 10:38:45.235 [work-thread-1] c.a.o.o.scheduler.tasks.ScheduleTask - task : tuning-DB -- 6bddd finish ...
[INFO ] 10:38:45.466 [ReportTask] c.a.o.oma.scheduler.tasks.ReportTask - evaluate process finish ...
[INFO ] 10:38:45.467 [ReportTask] c.a.o.oma.scheduler.tasks.ReportTask - report task finish report-DB-da723 finish...1
[INFO ] 10:38:45.467 [ReportTask] c.a.o.o.scheduler.tasks.ScheduleTask - task : report-DB -- da723 finish ...
[INFO ] 10:38:49.288 [ScheduleTask] c.a.o.o.s.ScheduleServiceImpl - finished ...
[INFO ] 10:38:49.288 [ScheduleTask] c.a.o.o.s.ScheduleServiceImpl - finished running...
[INFO ] 10:38:49.288 [ScheduleTask] c.a.o.o.s.ScheduleServiceImpl - finished create report...
[ test(0|1) ] Progress: #################################################################################################### |100%
[INFO ] 10:38:49.288 [ScheduleTask] c.a.o.oma.reporter.ReportServiceImpl - report get count : 1
SCHEMA : test 评估耗时 : 5218 毫秒
+-------------------------------------------------------------------+
| schema: schema | source: sourceDB | target: targetDB |
+-----------------+---------+---------+---------+---------+---------+
| Object Type | pass | convert | failure | total | percent |
+-----------------+---------+---------+---------+---------+---------+
| TABLE | 1 | 0 | 0 | 1 | 100.0% |
+-----------------+---------+---------+---------+---------+---------+
================================================================
[INFO ] 10:38:50.338 [ScheduleTask] c.a.o.o.s.ScheduleServiceImpl - all schema finished ...start Time : [ 2022.03.10 10:38:44 ] end Time : [ 2022.03.10 10:38:50 ] cost time : 6 Sec
[INFO ] 10:38:50.339 [ScheduleTask] c.a.o.o.s.ScheduleServiceImpl - 评估完成,压缩评估报告,可能需要一定时间,请耐心等待...
评估程序OMA运行完成,评估报告简报:
任务 : MoveDatabase_20220310_103843 开始时间 : 2022.03.10 10:38:44 结束时间 : 2022.03.10 10:38:50
SCHEMA : test 评估耗时 : 5218 毫秒
+-------------------------------------------------------------------+
| schema: schema | source: sourceDB | target: targetDB |
+-----------------+---------+---------+---------+---------+---------+
| Object Type | pass | convert | failure | total | percent |
+-----------------+---------+---------+---------+---------+---------+
| TABLE | 1 | 0 | 0 | 1 | 100.0% |
+-----------------+---------+---------+---------+---------+---------+
================================================================
[root@node1 oma-3.3.0]#
咳咳,数据量比较小,这个实验仅用于记录。
评估报告
命令运行完成后,可在终端查看评估报告的概览,同时也会在 report 目录下生成对应 Task 的评估
报告。