【前言】
近年来,各大行业去O运动愈演愈烈,一方面是基于对数据库安全可控的考虑,另一方面分布式数据库逐渐占据了OLTP领域较大的市场,尤其在互联网领域,MySQL、PG等分布式数据库的应用非常广泛。
在进行Oracle向MySQL迁移时会遇到很多难点,那么,从Oracle迁移至MySQL会遇到哪些问题?这些问题是否能顺利解决?
一、为什么是MySQL?
MySQL具备如下优势:
丰富的实践经验和蓬勃生态,阿里等行业巨头已成功地使用MySQL替
换Oracle并支撑了庞大的业务。
支持行锁和事务的Innodb存储引擎越来越强大,对于高并发下OLTP
优势明显;
灵活的逻辑复制搭建主从可以在架构设计上有更多的空间。
丰富的开源中间件搭配MySQL可以提供更高的业务需求。
二、Oracle数据能否无损迁移至MYSQL数据库?
首先需要非常熟悉MySQL和Oracle的差别,如果单纯的考虑表的数据,那么需要详细对比不同数据的字段类型的兼容性。迁移前需要梳理清楚,应该就不会有太大问题。
另外需要考虑迁移后的维护问题,高可用的方案,而不是单纯的说无损迁移。
DSG的同步软件也能进行数据的迁移,但是在实际使用中,用DSG的来做全库的初始化效率稍微有点差。
三、Oracle数据库迁移至MYSQL过程中如何保障系统稳定性?
很大程度上取决于能多大程度上接受业务中断。
正式迁移前需要反复测试、试运行,尽可能保证正式迁移稳、准、快。如果业务允许可以尝试切割方式,分几次迁移,两边都同步运行一小段时间。
也可以在应用层面控制数据一致性,通过应用双写,确保异构数据库都能运行正常,最后停掉迁移之前的DB。
四、数据一致性还比较容易保证,业务逻辑(存储过程、触发器、自定义函数等)方面如何改造,兼容性如何保障?
遵循以下原则:
五、Oracle迁移至 MYSQL表的限制、数据类型映射关系,如何处理? Oracle->MySQL的对照表:MySQL | Oracle |
bigint | number(19,0) |
bit | raw |
blob | blob,raw |
char | char |
date | date |
datetime | date |
decimal | float(24) |
double | float(24) |
enum | varchar2 |
float | float |