当前位置: 首页 > news >正文

中原银行:从“小机+传统数据库”升级为“OceanBase+通用服务器”,30 +系统成功上线|OceanBase DB大咖说(十五)

OceanBase《DB 大咖说》第 15 期,我们邀请到了中原银行金融科技部数据团队负责人,吕春雷。本文为本期大咖说的精选。

吕春雷是一位资历深厚的数据库专家,从传统制造企业、IT企业、甲骨文公司到中原银行,他在数据库技术与运维管理方面积累了丰富经验,这些经验在带领中原银行数据库团队从传统数据库向原生分布式数据库平稳升级的过程中起到了至关重要的作用。

吕春雷认为,要在DBA的职业道路上持续进步,首要的是对数据库怀有源自心底的热爱与兴趣,这是推动DBA不断前行的永恒动力;其次,需保持坚持不懈的学习态度,它如同登山者的拐杖,帮助DBA不断超越自我;最后,还需具备对生产环境的深切敬畏,这份敬畏能确保DBA对工作保持高度的责任心。

吕春雷正是将这三点贯穿在自己的工作中。在中原银行的数据库升级过程中,吕春雷是主要的技术负责人。他主导了中原银行从“小机+传统数据库”升级为“OceanBase+通用服务器”的迁移过程,目前已经完成了 30 多套系统的上线,初战告捷。本期《DB 大咖说》,吕春雷老师将分享中原银行如何顺利完成这一数据库升级,帮助银行实现从封闭架构转向开放架构。

1735026880

中原地区是华夏文明的发源地和经济中心,孕育了开封、洛阳、安阳等古都的辉煌历史,在中国文明版图中拥有超然的地位。

中原银行就诞生在这样一片土地上。中原银行是河南省属城市商业银行,成立于 2014 年 12 月,拥有 18 家分行,2017 年 7 月在香港联交所主板挂牌上市,目前全行总资产突破 1.3 万亿、员工人数近 2 万名。

2021 年年底,中原银行正式启动传统数据库升级,目前,已经先后将 30 多套 MySQL、Oracle 数据库上的应用系统成功升级到 OceanBase数据库之上,为中原银行通过数据洞察客户、市场、业务,指导日常经营管理决策发挥了关键支撑作用。

一、业务面临挑战,数据库亟待升级

升级之前,中原银行的数据库主要以 MySQL、Oracle 数据库为主,均属于传统集中式数据库。这些系统虽曾稳固支撑银行业务,但随着中原银行金融业务的成长,IT 系统交易并发量和数据量不断增长,传统集中式数据库无法快速扩展来满足系统对性能、容量的需求,迫切需要具备高扩展、高性能等关键特性的数据库支撑业务持续发展。 

同时,为了支撑中原银行的数字化转型战略,微服务和分布式架构先后得到了快速应用,基础软件如分布式中间件、分析型分布式数据库在行内均已部署,面向交易类的集中式数据库也已经成为转型瓶颈。

而成本也是此次数据库升级的一个驱动力。此前的信息系统数据库采用“小型机+集中存储+ Oracle ”模式,IT 运营成本长期居高不下,且近年来部分重要信息系统面临重构,亟需在兼顾基础设施成本前提下,提高重构后系统整体的处理能力。

另外,数据库作为关键基础软件之一,中原银行还需要在保证系统稳定运行前提下加快国产数据库升级进程,提高 IT 基础设施自主掌控能力。 

基于上述原因,2020 年 12 月,中原银行启动了新一代数据库选型工作,吕春雷作为中原银行数据库团队负责人,重点负责本次数据库选型。

多年负责数据库运维工作的吕春雷深知其中的挑战。过去这些年,银行先后上线了大量的系统,应用类型复杂,包括自研类、外采类,还有为银行量身定制的系统,这些系统来自不同开发商,开发习惯和代码质量存在显著差异,导致升级工作非常复杂。

“虽然银行有统一的开发规范和要求,但由于各开发商的能力及代码水平的不同,系统改造和数据库升级工作复杂度较高。特别是对于那些深度使用 Oracle 数据库特性的系统,可能涉及大量复杂 SQL 语句改写,这就更需要数据库原厂的大力支持。”吕春雷说。

此外,对于深度绑定 Oracle 特性的系统改造,中原银行需要在保证系统稳定运行的前提下,探索成本更低的解决方案,以实现业务的可持续发展。

二、6 大项、79 小项测试,敲定 OceanBase

根据中原银行信息系统建设需求,结合中国人民银行的《分布式数据库技术金融应用规范技术架构》以及同业的选型经验,中原银行总结了选择数据库的核心要求:具备高稳定性、高可用、扩展性、运维性、高性能、兼容性六大特性,同时兼顾综合成本、工具平台和生态发展。

“其中,稳定性和高可用是我们最为看重的两大要求。金融业务稳定是前提,特别是在出现故障时,比如机房级故障或者服务器级故障,必须有自愈机制,这样对应用的影响才会相对最小。”吕春雷说。

其次是扩展性,需要有在线横向添加或删除节点的能力,以提高数据库性能、容量能力。吕春雷解释,扩展能力是考虑选择分布式数据库的重要原因之一。过去中原银行部署了 Oracle RAC,虽然可以通过扩容来提升存储和计算资源,但 Share everything 架构决定了 IO 处理能力无法有效扩展。

根据数据库的选型要求,中原银行对国内领先的数据库产品开展了全方位测评工作,包括基础能力测试、性能测试、高可用能力、运维能力测试、兼容性测试、安全能力测试共 6 大项、79 小项的 POC 测试工作。在这场激烈的角逐中,OceanBase 凭借其在性能、高可用、运维效率等方面的良好表现脱颖而出,成为中原银行的最终选择。

“OceanBase 不仅在性能、高可用、运维性等方面充分满足我们的需求。同时,在总体使用成本方面也具有优势。综合评定之后,我们最终选定了它。”吕春雷表示。

除此外,吕春雷还提到中原银行非常看重的若干特性。如高度兼容 Oracle 和 MySQL,并提供自动迁移工具,支持迁移评估和反向同步以保障数据迁移安全,可支撑行业核心场景升级。此外 OceanBase 的透明水平扩展能力,让业务轻松实现扩缩容,其准内存处理架构助力系统保持高性能,保证最高能支持数千节点集群,单表行数轻松突破万亿级。

三、规范先行,技术赋能,国产升级迈进一大步

数据库选型只是数据库升级的第一步,数据的迁移和业务系统的重新上线才是项目组面临的真正考验。为此,中原银行制订了周密的数据库迁移计划,大体分为系统选择、改造分析、代码改造、测试、上线、分析总结等 6 个步骤。

选择系统是第一步。吕春雷介绍,“我们认为,越是重要的信息系统面临安全性威胁风险越高,国产升级的紧迫性就更强。因此,在信息系统选择时,中原银行优先选择重要的业务系统,且并发需求较高的系统,比如面向互联网类系统、渠道类系统等。”

在确定升级的信息系统之后,第二步是细致入微的评估工作。这项工作聚焦于 Oracle 特有语法的识别与适配,然后进行针对性改造。借助 OceanBase 迁移评估工具(OMA)进行全方位采集分析和评估诊断,全面扫描 SQL 语法、表结构及数据库对象,精准判断改造要点,简化改造流程。

在完成代码的修改之后,需要按照要求完成各类测试和上线前演练,这项工作会反复进行直到满足上线要求后方可准备正式上线。

正式上线分为两个阶段,第一阶段是数据迁移,第二阶段是数据校验。这部分工作借助 OceanBase 数据迁移工具(OMS)完成,它能实现全量+增量+分批校验+反向回写,完成迁移、校验和反写整个迁移过程。

“金融行业所有变更都必须具备可回退的能力,因而非常看重反向回写功能,OMS 在整个迁移的链路中能自动完成数据类型转换、自动完成反向回写,让整个迁移过程非常顺畅。”吕春雷说。

完成数据库的国产升级之后,还需要对系统性能进行监控和性能跟踪。虽然在正式上线之前已经做了充分的测试,但依然可能出现各种突发问题,比如性能抖动等问题。

吕春雷介绍,OceanBase 运维管理工具(OCP)给这项工作带来了很多方便,OCP 可以对性能较差的 SQL 先进行限流,然后通过 hint 方式改变和绑定执行计划,保障信息系统快速恢复后再进行根因分析。

当 OceanBase 正式上线之后,总结复盘的工作非常必要,包括上线前后性能和容量使用情况,以及上线过程中存在哪些问题、如何解决的,是否需要把对应的注意事项添加到规范中。吕春雷说,虽然每次上线都会做非常周密的准备,但上线后还是会出现一些突发的问题,借助 OceanBase 交付团队的大力支持,最终问题都得到了圆满高效解决。

不过,他希望以后中原银行的数据库团队能独立解决问题。他说:“我们的要求是自己能做的尽量自己做,尽早具备自主运维能力,这样才算是真正的自主掌控。”

四、稳定运行近 2 年,各项收益显著

中原银行从 2021 年 12 月立项进行国产数据库升级,到 2022 年 11 月全栈国产 OceanBase 集群在中原银行正式上线,手机银行等业务投入使用,后来信贷系统、网联支付、支付系统等先后陆续上线,这期间还完成生产同城双中心集群切换演练。

截至目前,OceanBase 以其卓越的性能与稳定性承载中原银行 30 余套信息系统的重任,其中重要信息系统占比高达 80%以上。这一成绩不仅是技术实力的展现,也是中原银行数字化转型决心的有力证明。

随着越来越多的信息系统,尤其是众多关键业务系统迁移到 OceanBase 后,各项收益也开始逐渐显现。

第一,性能。信息系统迁移至 OceanBase 数据库后,性能不低于升级之前。“考虑到之前的数据库是专有且昂贵的硬件设备,而现在的只是通用服务器,能保持性能一致其实已经是一个很大的进步。”吕春雷解释说。

第二,成本。中原银行原来使用的是”小型机+集中存储+Oracle”的组合,现在用的是通用服务器,较传统架构具备成本优势。成本下降还体现在资源的高效利用上。现在 OceanBase 可以通过在不同的资源池之间灵活调配实现快速扩缩容,而无需重要业务系统长期分配高水位硬件资源。

第三,运维效率。由于 OCP 提供了丰富的功能使得运维效率大幅提升。比如,现在进行生产系统的同城主备集群切换可以一键完成,6 秒就可以完成切换。这和集中式数据库形成鲜明对比;OceanBase 支持多租户,在一个集群里可以同时有 MySQL 租户和 Oracle 租户,可以采用统一的标准进行监控和管控。

第四,稳定性。OceanBase 上线以来,运行相对比较平稳,即便面对服务器突发故障,也能迅速恢复,有力确保业务系统连续性不受影响,真正实现了业务对故障无感。

回顾这几年的工作,吕春雷表示,近年来在数据库升级和数据库运维中积累的经验非常重要。随着国产升级浪潮的大步推进,中原银行的国产升级进程将显著加快,这些宝贵经验将帮助中原银行更为顺利地完成国产升级工作。

他表示,接下来中原银行将推进更多系统向 OceanBase 的迁移,同时,他们还在探索如何更好地使用 OceanBase 的新特性,充分挖掘其潜能,帮助中原银行实现更大的业务价值。比如使用 OceanBase 的 HTAP 等功能、承接部分轻量级 AP 业务。

五、写在最后

在当今这个 AI 大爆发、数据已经成为企业核心竞争力的时代,金融行业新一轮角逐已经展开。为了新一轮的变革,致力于成为一流城商行的中原银行一直在倡导“数据驱动的文化”,拥有高性能与高稳定性的 OceanBase 、及其丰富的周边工具正助力中原银行信息系统更好地服务业务目标,承担社会责任,助力中原银行的业务进一步高质量发展。


特别感谢林春对本期《DB 大咖说》的支持。林春老师是中国太平洋保险数智研究院首席数据库专家,有着丰富的金融核心系统数据库升级替换经验,也是DB 大咖说栏目的第二=三期嘉宾,可移步《中国太保:先难后易,核心系统的数据库升级实践 | OceanBase 《DB大咖说》(三)》进一步了解中国太保的数据库升级实践。

相关文章:

中原银行:从“小机+传统数据库”升级为“OceanBase+通用服务器”,30 +系统成功上线|OceanBase DB大咖说(十五)

OceanBase《DB 大咖说》第 15 期,我们邀请到了中原银行金融科技部数据团队负责人,吕春雷。本文为本期大咖说的精选。 吕春雷是一位资历深厚的数据库专家,从传统制造企业、IT企业、甲骨文公司到中原银行,他在数据库技术与运维管理…...

Java面试第八山!《Spring框架》

一、Spring框架概述 Spring是Java企业级应用开发的核心框架,通过控制反转(IoC)和 面向切面编程(AOP)实现模块解耦,简化开发流程。其核心优势包括依赖注入、声明式事务管理、集成主流ORM框架(如…...

LangChain教程 - Agent - 支持 9 种 ReAct 交互

引言 LangChain 总结了 9 种经典的复杂模型交互模式,每种都针对特定任务设计,兼具独特优势与适用场景,内容涵盖: ReAct、Function Call、知识库、搜索等,使用这些模式可以大大简化这些场景开发难度。这些模式可以使用…...

蓝桥杯备赛日记【day1】(c++赛道)

一、裁纸刀问题(2022、规律、思维、省赛) 解法思路: 参考题目给出的例子发现。不管要裁剪多少次。最外围的四次是固定的。然后通过观察发现,我们的行的裁剪次数为(m-1) 次,而每行都需要裁剪列数…...

【大模型基础_毛玉仁】1.4 语言模型的采样方法

【大模型基础_毛玉仁】1.4 语言模型的采样方法 1.4 语言模型的采样方法1.4.1 概率最大化方法1)贪心搜索(GreedySearch)2)波束搜索(BeamSearch) 1.4.2 随机采样方法1)Top-K 采样2)Top…...

[内网安全] Windows 本地认证 — NTLM 哈希和 LM 哈希

关注这个专栏的其他相关笔记:[内网安全] 内网渗透 - 学习手册-CSDN博客 0x01:SAM 文件 & Windows 本地认证流程 0x0101:SAM 文件简介 Windows 本地账户的登录密码是存储在系统本地的 SAM 文件中的,在登录 Windows 的时候&am…...

基于SNR估计的自适应码率LDPC编译码算法matlab性能仿真,对比固定码率LDPC的系统传输性能

目录 1.算法仿真效果 2.算法涉及理论知识概要 2.1 基于序列的SNR估计 2.2 基于SNR估计值进行码率切换 2.3 根据数据量进行码率切换 3.MATLAB核心程序 4.完整算法代码文件获得 1.算法仿真效果 matlab2022a仿真结果如下(完整代码运行后无水印)&…...

opencv 模板匹配方法汇总

在OpenCV中,模板匹配是一种在较大图像中查找特定模板图像位置的技术。OpenCV提供了多种模板匹配方法,通过cv2.matchTemplate函数实现,该函数支持的匹配方式主要有以下6种,下面详细介绍每种方法的原理、特点和适用场景。 1. cv2.T…...

Embedding技术:DeepWalkNode2vec

引言 在推荐系统中,Graph Embedding技术已经成为一种强大的工具,用于捕捉用户和物品之间的复杂关系。本文将介绍Graph Embedding的基本概念、原理及其在推荐系统中的应用。 什么是Graph Embedding? Graph Embedding是一种将图中的节点映射…...

微信小程序注册组件

在微信小程序中注册组件分为自定义组件的创建和全局/局部注册,下面为你详细介绍具体步骤和示例。 自定义组件的创建 自定义组件由四个文件组成,分别是 .js(脚本文件)、.json(配置文件)、.wxml&#xff08…...

【docker】安装mysql,修改端口号并重启,root改密

我的docker笔记 【centOS】安装docker环境&#xff0c;替换国内镜像 1. 配置镜像源 使用阿里云镜像加速器&#xff0c;编辑/etc/docker/daemon.json sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-EOF {"registry-mirrors": ["https:/…...

自定义wordpress三级导航菜单代码

首先&#xff0c;在你的主题functions.php文件中&#xff0c;添加以下代码以注册一个新的菜单位置&#xff1a; function mytheme_register_menus() {register_nav_menus(array(primary-menu > __(Primary Menu, mytheme))); } add_action(init, mytheme_register_menus); …...

洛谷 P1480 A/B Problem(高精度详解)c++

题目链接&#xff1a;P1480 A/B Problem - 洛谷 1.题目分析 1&#xff1a;说明这里是高精度除以低精度的形式&#xff0c;为什么不是高精度除以高精度的形式&#xff0c;是因为它很少见&#xff0c;它的模拟方式是用高精度减法来做的&#xff0c;并不能用小学列竖式的方法模拟…...

JAVA入门——网络编程简介

自己学习时的笔记&#xff0c;可能有点水&#xff08; 以后可能还会补充&#xff08;大概率不会&#xff09; 一、基本概念 网络编程三要素&#xff1a; IP 设备在网络中的唯一标识 端口号 应用软件在设备中的唯一标识两个字节表示的整数&#xff0c;0~1023用于知名的网络…...

Ubuntu 合上屏幕 不待机 设置

有时候需要Ubuntu的机器合上屏幕的时候也能正常工作&#xff0c;而不是处于待机状态。 需要进行配置文件的设置&#xff0c;并重启即可。 1. 修改配置文件 /etc/systemd/logind.conf sudo vi /etc/systemd/logind.conf 然后输入i&#xff0c;进入插入状态&#xff0c;修改如…...

捣鼓180天,我写了一个相册小程序

&#x1f64b;为什么要做土著相册这样一个产品&#xff1f; ➡️在高压工作之余&#xff0c;我喜欢浏览B站上的熊猫幼崽视频来放松心情。有天在家族群里看到了大嫂分享的侄女卖萌照片&#xff0c;同样感到非常解压。于是开始翻阅过去的聊天记录&#xff0c;却发现部分图片和视…...

短分享-Flink图构建

一、背景 通过简单的书写map、union、keyby等代码&#xff0c;Flink便能构建起一个庞大的分布式计算任务&#xff0c;Flink如何实现的这个酷炫功能呢&#xff1f;我们本次分享Flink做的第一步&#xff0c;将代码解析构建成图 源码基于Flink 2.10&#xff0c;书籍参考《Flink核…...

【监督学习】支持向量机步骤及matlab实现

支持向量机 &#xff08;四&#xff09;支持向量机1.算法步骤2. MATLAB 实现参考资料 &#xff08;四&#xff09;支持向量机 支持向量机&#xff08;Support Vector Machine, SVM&#xff09;是一种用于分类、回归分析以及异常检测的监督学习模型。SVM特别擅长处理高维空间的…...

机器学习-随机森林解析

目录 一、.随机森林的思想 二、随机森林构建步骤 1.自助采样 2.特征随机选择 3构建决策树 4.集成预测 三. 随机森林的关键优势 ​**(1) 减少过拟合** ​**(2) 高效并行化** ​**(3) 特征重要性评估** ​**(4) 耐抗噪声** 四. 随机森林的优缺点 ​优点 ​缺点 五.…...

Javaweb后端spring事务管理 事务四大特性ACID

2步操作&#xff0c;只能同时成功&#xff0c;同时失败&#xff0c;要放在一个事务中&#xff0c;最后提交事务或者回滚事务 事务控制 事务管理进阶 事务的注解 这是所有异常都会回滚 事务注解 事务的传播行为 四大特性...

在Spring Boot + MyBatis中优雅处理多表数据清洗:基于XML的配置化方案

问题背景 在实际业务中&#xff0c;我们常会遇到数据冗余问题。例如&#xff0c;一个公司表&#xff08;sys_company&#xff09;中存在多条相同公司名的记录&#xff0c;但只有一条有效&#xff08;del_flag0&#xff09;&#xff0c;其余需要删除。删除前需将关联表&#xf…...

【无标题】四色拓扑模型与宇宙历史重构的猜想框架

### 四色拓扑模型与宇宙历史重构的猜想框架 --- #### **一、理论基础&#xff1a;四色拓扑与时空全息原理的融合** 1. **宇宙背景信息的拓扑编码** - **大尺度结构网络**&#xff1a;将星系团映射为四色顶点&#xff0c;纤维状暗物质结构作为边&#xff0c;构建宇宙尺度…...

[特殊字符] Django 常用命令

&#x1f680; Django 常用命令大全&#xff1a;从开发到部署 Django 提供了许多实用的命令&#xff0c;可以用于 数据库管理、调试、测试、用户管理、运行服务器、部署 等。 本教程将详细介绍 Django 开发中最常用的命令&#xff0c;并提供 示例&#xff0c;帮助你更高…...

mysql中如何保证没有幻读发生

在 MySQL 中&#xff0c;幻读&#xff08;Phantom Read&#xff09;是指在一个事务中&#xff0c;两次相同的查询返回了不同的结果集&#xff0c;通常是由于其他事务插入或删除了符合查询条件的数据。为了保证没有幻读&#xff0c;MySQL 主要通过 事务隔离级别 和 锁机制 来实现…...

Golang实践录:go发布版本信息收集

go发布版本信息收集。 背景 本文从官方、网络资料收罗有关go的发布历史概况。主要目的是能快速了解golang不同版本的变更。鉴于官方资料为英文&#xff0c;为方便阅读&#xff0c;使用工具翻译成中文&#xff0c;重要特性参考其它资料补充/修改。由于发布版本内容较多&#xf…...

字节跳动AI原生编程工具Trae和百度“三大开发神器”AgentBuilder、AppBuilder、ModelBuilder的区别是?

字节跳动AI编程工具Trae与百度"三大开发神器"&#xff08;AgentBuilder、AppBuilder、ModelBuilder&#xff09;在定位、功能架构和技术路线上存在显著差异&#xff0c;具体区别如下&#xff1a; 一、核心定位差异 Trae&#xff1a;AI原生集成开发环境&#xff08;AI…...

【UCB CS 61B SP24】Lecture 21: Data Structures 5: Priority Queues and Heaps 学习笔记

本文介绍了优先队列与堆&#xff0c;分析了最小堆的插入与删除过程&#xff0c;并用 Java 实现了一个通用类型的最小堆。 1. 优先队列 1.1 介绍 优先队列是一种抽象数据类型&#xff0c;其元素按照优先级顺序被处理。不同于普通队列的先进先出&#xff08;FIFO&#xff09;&…...

mapbox高阶,结合threejs(threebox)添加三维球体

👨‍⚕️ 主页: gis分享者 👨‍⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍⚕️ 收录于专栏:mapbox 从入门到精通 文章目录 一、🍀前言1.1 ☘️mapboxgl.Map 地图对象1.2 ☘️mapboxgl.Map style属性1.3 ☘️threebox Sphere静态对象二、🍀使用t…...

QEMU源码全解析 —— 块设备虚拟化(1)

本文内容参考: 《趣谈Linux操作系统》 —— 刘超,极客时间 《QEMU/KVM源码解析与应用》 —— 李强,机械工业出版社 详解全虚拟半虚拟及硬件辅助虚拟化技术-百度开发者中心 特此致谢! 序言 本专栏之前的系列文章,讲了很多QEMU/KVM相关知识,其中一部分内容是设备的虚拟…...

IDEA中Git版本回退终极指南:Reset与Revert双方案详解

目录 前言一、版本回退前置知识二、Reset方案&#xff1a;整体改写历史1、IDEA图形化操作&#xff08;推荐&#xff09;1.1、查看提交历史1.2、选择目标版本1.3、选择回退模式1.3.1、Soft&#xff08;推荐&#xff09;1.3.2、Mixed1.3.3、Hard&#xff08;慎用&#xff09;1.3.…...