前文
崖山迁移平台(Yashan Migration Platform,YMP)是YashanDB提供的数据库迁移产品,支持异构RDBMS与YashanDB之间进行迁移评估、离线迁移、数据校验的能力。 YMP提供可视化服务,用户只需通过简单的界面操作,即可完成从评估到迁移整个流程的执行与监控,实现低门槛、低成本、高效率的异构数据库迁移实施。
YMP解决了什么问题
YMP全称是yashan-migrate-platform
,它是YashanDB实现去O, 替换旧信息系统架构的 强大神器。如果把数据库比喻成一个容器,数据是水,Oracle、MySQL、PostgreSQL因为内部数据结构不同,对水的处理存储不同。我们把水从一个容器切换到另外一个容器,没有工具的前提下,我们是怎么做的?
传统的数据迁移通过人工操作去做,第一步把源数据库的 里面DDL相关的数据库对象都导出来,识别表、触发器、索引、约束等数据结构,这些东西在目标数据库应该改造成什么? 确定数据源的相关的数据库对象在目标库都可以成功改造,那么第二步就是把源数据库的数据导入到 目标数据库里面。
现代化的数据迁移解决方案以自动化代替繁重的人工脚本操作,以WEB系统为入口,可以自由定义数据源,自由定义数据目标,内嵌知识库识别不同的数据源的数据结构变化,根据目标数据库对源数据库有规则进行转换。说起来做起来复杂,oracle11G、oracle12c的技术架构各有不同,同理mysql5.7和mysql8虽然都是mysql,但是内模式侧重各有各不同。
优秀的数据库产品能够连接不同DBMS的数据结构,包括表结构、存储过程、约束、视图等等,并且能够把它成功转化到对应的目标DBMS上面。YMP就是这样一套现代化数据迁移工具!
安装使用
简单安装
YMP的安装依赖 yashandb介质 和 OCI介质
YashanDB介质和YMP介质从这里下载, YashanDB Personal 23.2.1及YMP 23.2.1安装包
https://download.yashandb.com/download
OCI介质从这里下载
https://www.oracle.com/cn/database/technologies/instant-client/linux-x86-64-downloads.html
#笔者在这里只简最重要的一步, YMP执行安装ymp.sh命令,代入YashanDB介质的以及 OCI介质的目录,如下
sh bin/ymp.sh install --db ../yashandb-personal-23.2.1.100-linux-x86_64.tar.gz --path ../oci目录/
#启动ymp服务
[root@server128 bin]# ./ymp.sh start
start yasom successfully
start local agent successfully!
type | uuid | name | hostid | index | status | return_code | progress | cost
--------------------------------------------------------------------------------------------------------
task | 1026412a24dc11a0 | StartYasdbCluster | - | ymp | SUCCESS | 0 | 100 | 11
------+------------------+-------------------+--------+-------+---------+-------------+----------+------
task completed, status: SUCCESS
YMP started successfully!
#访问方式:http://IP:PORT/,PORT默认8090,初始账户名和密码是(admin/admin)
http://xxxxx:8090
快捷使用
数据迁移工具的操作使用三步走来介绍, 第一步定义数据源【源端】,第二步定义数据源【目标端】,第三步执行迁移。如果用两步走来表示,第一步定义数据源【源端、目标端】,第二就是执行迁移。
YMP的定义数据源就是数据源管理,执行迁移就是创建任务。简单明了,对新手友好。
测试目标及过程
- 准备Oracle12C单机环境,已经就位
- 准备Oracle19c单机环境,已经就位
- 准备一个yashandb 23.2.1单机环境,已经就位
现在以Oracle为数据源,测试环境两套数据,一套在12C上面,一套在19C上面,要把c##henley和c##henley2的数据迁移到 目标yashandb 23.2.1单机的henley上面。
出师不利,oracle12c最后执行报错OCI版本检查:OCI版本(19.22.0.0.0)与预期版本(19.19.0.0.0)不一致, 数据迁移时可能有风险。
,经检测YMP可能无法与Oracle12 兼容。只余下oracle19c能够正常数据导入。
三个数据源 oracle19c c##henley 、 oracle19c c##henley 、yashanDB henley
定义三个数据源后,操作任务,按照下面的步骤下一步下一步执行, 创建任务-----> 迁移评估-----> 迁移配置-----> 离线迁移 -----> 校验初始化-----> 一致性校验,最后就把oracle19c的数据迁移到yashandb上面去了。
迁移评估后会列出图形报告,必须 要100%满足【对象兼容统计、PL/sql代码统计】才能进行下一步
点击 对象详情,点击最后一页,可以看到 不兼容的对象名称
点击查看DDL,可以看到进一步的详情
针对不兼容的数据对象,可以选择忽略,然后刷新报告,直到100%兼容 ,这样数据迁移工作可以往下一步进行
亮点与期望
亮点
-
YMP简单易用,无论是安装还是使用,安装仅用了3个步骤,操作使用一眼就懂,即使是小白例如我,通过 下一步或者全选, 也可以把它用起来
-
数据迁移传输高性能,由于使用的是oracle的OCI的原生接口,所以对数据访问能够很快,500G的数据在60秒内传输完成。
-
迁移评估功能界面较点睛,一眼宏观Oracle的对象状况,快速浏览左边对象兼容统计和PL/SQL代码统计作为 数据源中关键的数据结构让DBA知道还需要什么。
-
评估后,针对不能兼容的对象类型和SQL语句的建议改进,可以对不能迁移的对象采取忽略的方式,继续进行数据迁移
-
自由选择迁移的数据对象,可以做细粒度针对性的小目标小范围 迁移,例如对表、约束、索引、视图、序列、自定义函数按需选择
-
支持日志和图形报告形式 ,立体化显示迁移数据任务的状态。
-
前中后的监测手段较能符合DBA的预期和需求,迁移前支持迁移评估【类型、长度、SQL改写、表重设】,迁移中可以观测数据迁移状态【包括数据对象空间、表、索引、约束】以及完成状态、性能读写状态,迁移后可以对数据进行校验【完整对比、校验对比】。
期望
- Oracle12C报错,
OCI版本检查:OCI版本(19.22.0.0.0)与预期版本(19.19.0.0.0)不一致, 数据迁移时可能有风险。
,切换成Oracle19c不会发生这样的错误,初步判断 YashanDB不支持Oracle12c,假设是这样的话不应该,毕竟客户的生产环境大部分是老版本利旧的,YashanDB应该与 更多的Oracle版本适配兼容。 - 迁移评估的时间响应,假设数据源的对象很多,扫描的时间会很慢,我觉得这方面需要提升一下。
- Oracle OCI需要根据数据源的版本去到互联网官方里面查找, 这个体验不好
- 跨任务使用同一个数据源,迁移任务在进行中的话, 再开第二个迁移任务,第二个迁移涉及的数据源正在使用中,会导致无法实现第二个迁移任务的创建。
- 数据迁移过程, 笔者试了一下,数据源依然可以插入数据,会存在两边数据一致性的问题,未来的技术路径可以考虑基于源端数据迁移时,提前加个轻量级的锁,保障两边数据的一致性
- 目前仅支持离线迁移的方式 ,不支持CDC的实时数据跟踪 ,CDC实时数据跟踪未来是数据亮点
- 异构数据库迁移是迁移工具的基本功能,将应用集成进来联调测试是高阶功能, 理想的迁移工具测试后,可以观测到旧应用对数据库的兼容程度
总结,综合体验来看,YMP基于YashanDB基础上不错的数据迁移产品,可以给DBA节省大量的时间,同时也能提升效率,希望以后持续增强。