近年来,陆金所通过创新技术实现了金融系统从Oracle迁移至开源数据库的成功案例。本次分享总结了陆金所在无停机、不降级的情况下完成数据库替换的关键步骤和技术要点,为金融领域的系统升级提供了宝贵的经验。
一、项目背景:为什么要去Oracle?
陆金所在2018年启动了“去O”(去Oracle)项目,旨在降低数据库成本、避免被单一厂商绑定,并提升系统架构的灵活性。传统Oracle数据库的许可费用和高昂的硬件要求给公司带来了巨大的运营负担,同时其架构在业务迅速扩展时也出现了瓶颈。通过迁移到MySQL及其他开源数据库,陆金所降低了系统成本,且构建了弱依赖于特定数据库的架构,使未来的升级更加灵活。
二、数据库选型与性能评估
在数据库选型过程中,陆金所主要选择了MySQL,同时结合TiDB、Redis等其他数据库,以匹配Oracle在不同业务场景中的性能要求。为确保MySQL的性能达到要求,陆金所进行了严格的压测,并通过真实数据对比Oracle与MySQL的读写能力,最终确认MySQL能够在主要业务中承担Oracle的角色。
三、去Oracle的技术方案
在去Oracle的技术实现上,陆金所设计了“双写与流量切换”方案:在Oracle保持运行的情况下,搭建实时同步的MySQL库,且在MySQL完成事务提交后,数据会同步回Oracle,形成Oracle和MySQL之间的双主架构。此架构中,写流量在任何时间只能在Oracle或MySQL中的一个库进行,以确保数据一致性。
为了支持双写架构的快速实现,陆金所开发了自动化平台,简化了从数据同步、表结构转化到数据校验的全过程。通过这套自动化工具,仅需两个DBA即可完成全站表的数据迁移。
四、流量切换与无缝切换机制
陆金所在系统流量切换上也进行了精细化设计:在低峰期完成从Oracle至MySQL的快速切换,并将流量自动回滚至Oracle,以应对突发问题。流量切换机制通过主备数据库的实时同步实现,使切换对用户无感知。
五、稳妥的推进策略
在推进过程中,陆金所将数据库切换细化为多个批次,每批次包含具备业务相关性的表。通过小步迭代,实现改造难度和风险的逐步可控,从而在核心业务不中断的情况下完成系统的无缝切换。
在切换的整个周期内,陆金所的部分表在Oracle中运行,部分表在MySQL中运行。此过程中,高频的版本迭代和数据库切换需要精细的变更管理,陆金所依靠自研工具实现了去O的全程监控和风险控制。
六、系统架构的全面升级
去Oracle不仅意味着数据库的更替,更包含了整个系统的架构升级。通过微服务化和分布式架构,陆金所实现了数据库的水平扩展,同时也将数据层进行解耦,从而提升了系统的弹性和扩展性。
七、经验总结:金融系统去Oracle的意义
陆金所的去Oracle项目不仅大幅节省了成本,也实现了系统架构的现代化改造,为未来业务发展打下了坚实的基础。对许多金融机构而言,去Oracle的目标应包括降低成本、避免技术绑架、提升系统扩展性及应变能力。陆金所的经验表明,稳妥的实施策略和强大的工具支持,是去Oracle顺利落地的关键。