项目要求将Oracle中数据迁移到mysql中,采用dataX,mysql的存储过程实现的。
数据结构:
数据源层(Oracle)
备份层(mysql)
映射层(mysql)
项目实际可操作性:数据库备份,回退脚本,数据验证
主要内容:
第一次上线:
1.远程操作安装dataX,需要配置conf来确定日志通过时间目录划分表名作为每张表的文件名。
2.通过dataX将Oracle数据传输到mysql中,传输两种形式的数据,第一种全量数据直接导入,第二种是根据任务号字段的枚举值标记已完成的和该任务相应时间字段在dataX写入过滤条件实施传输。
3.对mysql进行备份,防止第二次上线用dataX进行传输时无法回退。
第二次上线:
1.仍然通过dataX将Oracle数据传输到mysql中,传输两种形式的数据,第一种是将两次上线之间时间段完成的任务号导入到mysql中,第二种整个Oracle库中未完成的任务数据进行传输。
2.上述过程将整个Oracle数据传输至被备份层中,接下来是实现字段映射,新的系统中是在原有老系统中添加不少新功能,所以字段映射分为两种,一种是原表全字段映射,一种是多表部分字段映射到一张表中。这个过程中采取的是mysql的存储过程实现,通过每个任务所属分公司,按分公司分批次调用。所以,此时存在第一次调用某个分公司,再调用另一个分公司出错,必须要有回退脚本,回退脚本有两种方式,一种写一个存储过程来根据分公司删除其中数据,通过调用这个存储过程输入分公司实现,第二种在执行分公司调用脚本时,前面加入关闭事务,结束时加入打开事务。
3.在上述存储过程中植入了,每张表的映射来源,字段名,哪几张张表,映射前后的数据条数,用来验证映射前后是否出现数据丢失。
4.随机验证脚本,随机抽取每张新表是三条数据,通过任务号对比映射前后数据值是否一致。