oracle dg无法实时同步_陆金所去Oracle全过程 | 泉石内参
发布日期:2021-06-25 19:30:22
浏览次数:9
分类:技术文章
本文共 4239 字,大约阅读时间需要 14 分钟。
去Oracle是一个漫长而艰难的过程。陆金所是为数不多的凭借自身力量完成此项任务的企业之一。本篇是陆金所去"O"负责人王英杰的采访纪要,试图为大家还原完整过程,看看他们是如何做到的。
来源:公众号“ InfoQ Pro”;作者:张晓楠
陆金所去 Oracle 实践开始于 2018 年年中,历时 18 个月,将全站 90% 的数据库、数千张表从 Oracle 无缝切换至 MySQL,并在6月底前下线最后一台 O racle 。 1 陆金所的业务场景与去 Oracle 节奏 陆金所的去 Oracle 从 2018 年年中开始启动,涉及大几百个子系统,总数据量超过 PB 级,去除的 Oracle 数据库覆盖基金、网贷、信托、资管、银行理财、证 券、保险、主账户等全金融场景,全程使用自动化平台管控和推荐去 Oracle 实践。 据王英杰介绍,“陆金所全部的研发和技术运营部门都参与了全站去 Oracle,至少有 500 人以上的开发、测试和运维工程师参与其中。 ” 如果从整个实践过程来看,陆金所去 Oracle 实践有三个比较关键的阶段:- 一是通过边缘系统进行方案验证阶段;
- 二是去”O“自动化工具平台构建和优化阶段;
- 三是全自动化标准化去”O“落地阶段。
- 细粒度拆分数据库、分片化,实现数据库容量的水平扩展;
- 应用解耦、服务化,让应用访问数据库的调用更加清晰和规范;
- 严禁应用跨域访问数据库,严禁数据库之间产生数据交互,从业务角度呈现出一个更加完善的数据库架构。
- 应用改造实现逻辑拆分:
- 逻辑拆分完成后,以数据库的角度对应用改造的结果进行验证:在同一个物理库,使用逻辑 schema 的方式对数据库对象的授权进行调整,验证应用改造符合预期。
- 数据库迁移和实时同步:逻辑层拆分验证完成后,通过实时同步把待拆分的数据库对象实时同步到另外一个物理库。上述所有改造步骤对应用层无感知。
- 物理拆分和切换流量:源端和目标端保持实时同步后,在某个时间点推送配置并切换流量。整个过程最好有一套完善的自动化运维确保各个细节工作的无缝落地。流量切换操作,必须确保可以随时前滚和回滚。
- 被拆解成简单查询,在代码层实现部分复杂的关联逻辑;
- 通过陆金所的数据总线平台,把数据实时同步到 Elasticsearch 里,在 Elasticsearch 里实现复杂且高效的关联搜索;
- 部分在 Oracle 读库上支撑的复杂业务逻辑查询(支持业务监控和实时对账等),通过数据总线平台同步到 TiDB 里,在 TiDB 里实现复杂的关联查询。
- Oracle SQL 代码自动转 MySQL SQL 代码工具
- O to M 数据字典转化和管理工具
- O to M 数据自动迁移和双写工具
- 去 O 流量一键切换
- 跨机房一键切换去 O 自愈工具
- 首先去 Oracle 平台会解析 Oracle 表结构,并转化成 MySQL 表结构部署到 MySQL 上。之后,Oracle 有任何数据字典变更,去 Oracle 平台都会对 MySQL 进行同步;
- 将 Oracle 的数据全量同步至 MySQL,因为 Oracle 库还在对外提供服务,所以会记录同步开始时间点,发生过变更的 Oracle 数据;
- 在全量同步完成后,解析 Oracle 的 redo log,把同步期间发生过变更的数据进行增量追平;
- 增量追平后,比对 Oracle 和 MySQL 每一笔记录和每一个字段的数据一致性,因为 Oracle 还处在不断更新中,去 Oracle 平台会使用增量补偿重试的方式不断对记录进行一致性校验;
- 当 Oracle 和 MySQL 数据完全追平且校验一致后,去 Oracle 平台会开始尝试解析 MySQL binlog,建立从 MySQL 到 Oracle 的数据同步通道;
- 因为 Oracle to MySQL 和 MySQL to Oracle 的双向数据同步链路都会被自动建立起来,为了防止数据回流,必须区分好是应用层写入的数据还是同步框架写入的数据,确保一份数据无论在 Oracle 还是 MySQL 提交,都会同步到对端,且仅写入一次。
- 对于严苛的金融系统来说,去 Oracle 是个非常复杂的系统工程,涉及到开发、测试、架构和 DBA 等几乎全部技术部门的通力合作;
- 整个去 Oracle 改造过程需要在各个阶段都总结出一套完善的方法论,确保各个细节改造工作能稳妥落地;
- 需要有一套完善的去 Oracle 工具平台来落地整套方法论,让开发、测试和 DBA 在上面开展去 Oracle 工作,通过工具无缝衔接好这些团队在去 Oracle 改造中的协同工作,通过工具来确保从代码改造、到压测、到数据迁移、到流量切换等横跨多个团队、长周期的工作风险可控,效果如期。
转载地址:https://blog.csdn.net/weixin_39622901/article/details/111668762 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
路过,博主的博客真漂亮。。
[***.116.15.85]2024年04月22日 15时21分25秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
机器学习经典书籍-《贝叶斯推理与机器学习》
2021-06-30
欧洲计算机视觉国际会议ECCR20最新论文整理分享
2021-06-30
20年6月最新-《深度神经网络的高效处理技术综述》
2021-06-30
BiliBili 100+国际名校免费公开课整理分享
2021-06-30
清华大学计算机学科推荐学术会议和期刊列表
2021-06-30
【组队学习】【24期】Docker教程
2021-06-30
Datawhale组队学习周报(第010周)
2021-06-30
【直播】杨毅远:集成学习答疑直播之六 -- 幸福感预测案例实战
2021-06-30
如何使用Python的进度条?
2021-06-30
如何利用情感词典做中文文本的情感分析?
2021-06-30
【青少年编程】【Scratch】06 侦测模块
2021-06-30
【直播】李祖贤:集成学习答疑直播之八-- 集成知识点回顾与补充
2021-06-30
Datawhale组队学习周报(第013周)
2021-06-30
如何设置matplotlib中x,y坐标轴的位置?
2021-06-30
【第15周复盘】B站是个学习的网站
2021-06-30
黄家懿:河北高校邀请赛 -- 二手车交易价格预测决赛答辩
2021-06-30
如何利用pyecharts绘制酷炫的桑基图?
2021-06-30
王朝阳:河北高校邀请赛 -- 二手车交易价格预测决赛答辩
2021-06-30
Scratch等级考试(二级)模拟题
2021-06-30
如何在Jupyter Lab中显示pyecharts的图形?
2021-06-30