推荐一款阿里的数据库迁移工具,从 Oracle 数据迁移到 MySQL ,非常强大(带私活源码)

 在近几年做的很多项目里面,客户很在乎软件的的“信创”背景。

那么在做产品的时候,我们更多的要考虑数据库的开放性,去 IOE 已经搞了这么多年,这几年在一些行业的软件采购上更是在政策上大力支持国产化,提倡自主性。

图片

软件国产化是必然趋势,新系统开发之初直接适配就可以,但是对于存量系统数据迁移常规就需要一些软件或者第三方工具。

今天呢,就给大家推荐一款阿里的数据库迁移工具,在Github上代码是开源,他就是---yugong(愚公)。

项目背景

2008年,阿里巴巴开始尝试使用 MySQL 支撑其业务。

开发了围绕 MySQL 相关的中间件和工具,Cobar/TDDL(目前为阿里云DRDS产品),解决了单机 Oracle 无法满足的扩展性问题,当时也掀起一股去IOE项目的浪潮,愚公这项目因此而诞生。

图片

其要解决的目标就是帮助用户完成从 Oracle 数据迁移到 MySQL 上,完成去 IOE 的重要一步工作。

项目介绍

  • 名称:   yugong

  • 译意:   愚公移山

  • 语言:   纯java开发

  • 定位:   数据库迁移 (目前主要支持oracle / mysql / DRDS)

整个数据迁移过程,分为两部分:全量迁移 和 增量迁移

图片

过程描述:

  1. 增量数据收集 (创建oracle表的增量物化视图)

  2. 进行全量复制

  3. 进行增量复制 (可并行进行数据校验)

  4. 原库停写,切到新库

架构

图片

方案设计

全量方案

业界常用的全量方案有:

  • 数据文件导入/导出,比如EXPDP/IMPDP, mysqldump/source, xtrabackup等

  • ETL数据导入/导出,主要原理为使用JDBC数据查询接口

yugong在项目设计之初考虑去IOE数据迁移的灵活性和自定义能力,最终选择的方案为基于JDBC接口遍历数据.

相比于数据文件导入/导出,其优点

灵活数据同步 

支持异构数据 

实现相对简单

缺点:

全量拉取需要配合增量使用,会有部分数据重复同步 性能和影响,一次性全量拉取,如果持续时间过长,如果此时数据库变更过多,会导致segment过大

增量方案

业界常用的增量方案有:

  • 基于时间戳定时dump

  • oracle日志文件,比如LogMiner,OGG

  • oracle CDC(Change Data Capture)

  • oracle trigger机制,比如DataBus , SymmetricDS

  • oracle 物化视图(materialized view)

  • ... yugong在项目设计之初考虑去IOE数据迁移的灵活性,支持多种oracle版本,同时为降低DBA的运维成本,最终选择oracle物化视图作为我们的增量方案.

优点:

  • 原理简单,方便理解和学习,用户可以理解为一种固化的简易trigger模式

  • 运维简单,DBA一次账户授权后,程序可按需create一张物化视图表即可完成增量订阅

  • 相对透明,不需要像时间戳sql扫描依赖数据库表设计,也不需要关注oracle版本和服务器存储等缺点:

  • 性能和影响,类似于trigger机制会对源库的数据写入造成一定的性能影响。

快速开始

当然了,官网也提供了很详细的使用说明。

图片

图片

小结

软件行业国产化的趋势不可避免,阿里的这款工具也可以帮助大家进行数据的转换。

当然了,现如今数据转换的工具选择也很多了,大家可以自由选择。对于阿里纯开源的这个工具,使用纯java开发,也是值得学习的。

写在最后(私活源码)

最近有一些读者问我有没有完整的基于Springboot+Vue的在线考试系统项目源码,今天给大家整理了一下,并且录制了搭建的教程,无偿分享给大家。

一、系统运行图

1、登陆页面

图片

2、后台管理

图片

3、全套环境资源

图片

​源码文件部分截图,带视频教程

源码免费领取方式

扫码关注本号,后台回复 考试

扫码关注本号,后台回复 考试

持续关注本号,分享更多项目源码

分享一些关于学习Java编程方面的经验

在实际工作中,开发Java项目是一项重要且常见的任务。为了帮助您更好地进行Java项目开发,本文将分享一些实践经验和技巧,以帮助您顺利完成项目。

1. 需求分析与设计

在开始项目之前,首先需要进行需求分析和设计。明确项目的目标和功能,并根据需求设计出合理的系统架构和数据库结构。这个阶段的工作对于后续的开发和测试非常关键,务必认真对待。

2. 选择合适的开发工具和框架

Java有许多优秀的开发工具和框架可供选择,如Eclipse、IntelliJ IDEA、Spring等。根据项目的特点和需求,选择适合的工具和框架可以提高开发效率和代码质量。

3. 模块化开发

将项目拆分成多个模块,每个模块负责一个特定的功能。通过模块化开发,可以提高代码的可维护性和复用性。同时,合理划分模块也便于团队协作和并行开发。

4. 使用版本控制工具

使用版本控制工具(如Git)管理项目代码是一个良好的习惯。通过版本控制,可以方便地进行代码的追踪、回滚和合并,同时也便于多人协作开发。

5. 编写高质量的代码

编写高质量的代码是每个开发者的追求。遵循编码规范,使用有意义的变量和方法命名,注重代码的可读性和可维护性。同时,及时进行代码的重构和优化,以提高代码的性能和可靠性。

6. 单元测试和集成测试

在开发过程中,及时编写单元测试和集成测试是保证代码质量的有效手段。通过测试,可以验证代码的正确性和稳定性,减少后期的调试和修复工作。

7. 持续集成与部署

借助持续集成工具(如Jenkins),实现自动化的构建、测试和部署流程。持续集成可以提高开发效率,减少人为错误,并确保项目的稳定性和可靠性。

8. 文档和知识管理

在项目开发过程中,及时编写文档记录项目的设计思路、开发过程和技术方案。同时,建立知识库或内部论坛,方便团队成员之间的交流和学习。

以上是关于Java项目开发的一些实践经验和技巧。希望这些内容对您有所帮助,祝您在实际工作中取得成功!

  • 13
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值