陆金所去Oracle转MySQL全过程(上)
InfoQ编辑田晓旭
讲述:丁婵大小:7.33M时长:05:20
你好,欢迎收听极客视点。
很多企业都会依赖于云厂商或者其它已经去 Oracle 成功企业的帮助,真正凭借自己力量去 Oracle 的企业并不多,而陆金所恰恰就是凭借自己力量去 Oracle 的一家企业。
陆金所去 Oracle 实践历时 18 个月,将全站 90% 的数据库、数千张表从 Oracle 无缝切换至 MySQL,并且将在 6 月底前下线最后一台 Oracle。InfoQ 记者为此独家采访陆金所去 Oracle 实践的负责人王英杰,试图还原全过程。
陆金所的业务场景与去 Oracle 节奏
陆金所的去 Oracle 从 2018 年年中开始启动,涉及大几百个子系统,总数据量超过 PB 级。据王英杰介绍,“陆金所全部的研发和技术运营部门都参与了全站去 Oracle,至少有 500 人以上的开发、测试和运维工程师参与其中。”
如果从整个实践过程来看,陆金所去 Oracle 实践有三个比较关键的阶段:
一是通过边缘系统进行方案验证阶段;
二是去“O”自动化工具平台构建和优化阶段;
三是全自动化标准化去“O”落地阶段。
去 Oracle 方案的选择
与大多数企业去 Oracle 的原因相同,陆金所选择去 Oracle 也是因为原有的 Oracle 数据库架构扩展性很差,并且 Oracle 软件授权费用太高,无法支撑陆金所从 2013 年到现在交易量井喷式暴增下的业务需求。
替代方案选定了 MySQL,同时因为 MySQL 无法支撑 Oracle 的所有场景,还引入了 Elasticsearch、Redis、TiDB、HBase 等多种存储引擎。陆金所现在的数据库架构图如下:
陆金所对于去 Oracle 的核心诉求是在外部用户不感知的情况下,更换掉核心数据库。因此,陆金所研发了一套数据同步工具,以表为粒度,把 MySQL 作为 Oracle 的备库,实时同步 Oracle 的 DDL 和 DML 变更。同时在应用层实现 Oracle 和 MySQL 两套访问数据库的 DAO 层,以及开关模式的动态数据源,便于流量在 Oracle 和 MySQL 之间快速切换,在确保流量切换到 MySQL 之后,数据还能够反向向 Oracle 同步,保证数据一致性。
去 Oracle 的准备工作:按域拆分
为了顺利完成去 Oracle 工作,陆金所在 2016 年到 2018 年期间进行了数据库的按域拆分。其主要目的有三个,分别是:
细粒度拆分数据库、分片化,实现数据库容量的水平扩展;
应用解耦、服务化,让应用访问数据库的调用更加清晰和规范;
严禁应用跨域访问数据库,严禁数据库之间产生数据交互,从业务角度呈现出一个更加完善的数据库架构。
整个按域拆分过程中比较大的难点是大事务拆分和多表关联复杂查询。王英杰表示:“单库上原有的大事务拆分后是通过应用层的分布式事务机制在多库上实现,而单库上原有的多表关联复杂查询在拆分之后,是在应用层实现或在特殊场景中通过分布式存储引擎来支持。”
据了解,陆金所的数据库按域拆分主要有四个关键阶段:
第一阶段,应用改造实现逻辑拆分。按表为粒度对大库的数据库对象进行梳理,把每张表归属于不同的应用域。在应用层根据梳理的结果对操作表的代码进行改造,包括:拆分复杂的大查询、拆分庞大的事务以及将操作表的代码全部封装在属主应用的代码中,非属主应用无法直接操作表,通过调用服务接口的方式实现非常规范的应用访问数据库的调用链。
第二阶段,逻辑拆分完成后,以数据库的角度对应用改造的结果进行验证。在同一个物理库,使用逻辑 schema 的方式对数据库对象的授权进行调整,验证应用改造符合预期。
第三阶段是数据库迁移和实时同步。逻辑层拆分验证完成后,通过实时同步把待拆分的数据库对象实时同步到另外一个物理库。上述所有改造步骤对应用层无感知。
第四阶段是物理拆分和切换流量。源端和目标端保持实时同步后,在某个时间点推送配置并切换流量。整个过程最好有一套完善的自动化运维确保各个细节工作的无缝落地。流量切换操作,必须确保可以随时前滚和回滚。
以上就是陆金所去 Oracle 实践过程中的方案选择与准备工作,受篇幅所限,去 Oracle 的具体实践与经验总结将在下文分享,欢迎持续关注。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
该免费文章来自《极客视点》,如需阅读全部文章,
请先领取课程
请先领取课程
免费领取
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(6)
- 最新
- 精选
- 小斧第一阶段,应用改造实现逻辑拆分。 第二阶段,逻辑拆分完成后,以数据库的角度对应用改造的结果进行验证。 第三阶段是数据库迁移和实时同步。 第四阶段是物理拆分和切换流量。4
- 终结者999号陆金所选择去 Oracle 也是因为原有的 Oracle 数据库架构扩展性很差,有例子吗?2
- 小哪吒费用+水平扩展不方便+新创国产化归属地:广东
- 梁像Oracle12c以后的分片技术,就不能再说它差了吧?也是Shared-Nothing的技术
- undefinedOracle不好用?客户就要求必须用Oracle怎么无感知切换
- 邓呵呵为何要迁移?省钱?
收起评论