孔再华:openGauss 在民生银行的应用实践
伴随产业的蓬勃发展,数据库的替代升级对数据库内核技术、功能迭代、服务支撑都提出了更高的要求和更复杂的挑战。这其中,金融行业对数据库产品的要求尤为严苛,应用实践场景也尤其具有代表性。
2023 年 4 月 7-8 日,由中国 DBA 联盟(ACDU)和墨天轮社区联合主办的第十二届“数据技术嘉年华”(DTC 2023)在北京新云南皇冠假日酒店成功举办,中国民生银行资深数据库专家孔再华受邀出席了「金融行业实践」专题论坛,并发表了《openGauss 在民生银行的应用实践》的主题演讲。孔再华就民生银行对数据库选型替代的思考与设计,以及在 openGauss 上的具体应用实践,和现场近两百位数据技术及金融科技从业者、参会嘉宾做了深入交流。以下内容根据孔再华的演讲实录整理而成。
openGauss 在民生银行的应用架构实践
当一个新的数据库产品到了银行之后,首先要思考的就是高可用怎么做。我们在测试一款数据库的时候可能主要关注其功能和性能,但真正部署的时候最需要的往往是稳定性。关于高可用,民生银行早期在使用 openGauss 的时候,分布式的高可用组件工具 CM 尚未开源,基于民生银行一直以来在高可用方面的需求,结合了原有商业数据库及其配套的高可用软件和方案,以及后续接入的 MySQL 数据库及其主从方案,与云和恩墨通力合作,在经历了很长一段时间的积累后,通过持续的功能设计和优化完善,最终形成了本地化的高可用方案。
孔再华介绍到,在双机的高可用方案里,有 6 个关键的设计点:本地进程守护、主库丢失切换、文件系统检测、双主检测自杀、主库孤单自杀、从库丢失检测。整个高可用方案基于比较成熟的、不断的经验积累而形成。
关于部署的形态,孔再华首先介绍了一主一从的虚拟机方案。在这个方案里,虚拟机高可用漂移,主从不切换;同时,加入 HA 守护数据库进程,实现故障后自动拉起,即某一虚拟机出现故障后,仍能保障数据的一致性。
另一个方案是物理机方案。和虚拟机方案类似,同样是同城双中心,物理机方案采用 FIRST 设置,可实现本地同城数据同步、本地 HA 激活故障切换,在同城 HA 非激活状态下,也可人工干预同城切换。
除了同城双中心的保护之外,民生银行在 openGauss 应用实践中还设计了常见的两地三中心容灾方案。该方案采用一主一从的架构,在异地的机房里设置同等比例的服务器,通过使用 openGauss 主从复制的能力,以及一些可定制化的配置设计而成,可实现异地数据异步传输、异地级联复制、异地演练、异地切换。
在容灾方案的基础上进一步延伸,民生银行在 openGauss 的使用中还设计了逃生库方案,解决了人为操作或者其他原因导致数据丢失时如何找回的问题。逃生库独立于 OM 集群管控之外,支持延时回放、迅速恢复到目标时间点,紧急情况下具备可扩容承载业务的服务功能。
逃生库方案中还包含了 Kubernetes 云原生方案的设计。云原生方案是民生银行开发出来的 operator,作为民生银行测试环境主推的方案,采用多中心集群部署形态,可实现从部署到扩容、回收、集群监控、集群高可用等全生命周期管理,同时支持多网络插件、多存储插件、可维护状态设定和故障自愈。
民生银行与社区协同优化 openGauss 产品功能
民生银行在使用 openGauss 的过程中,非常大的一个变化是客户端自适应能力。孔再华提到,我们不再采用传统的 VIP 模式,而是配置所有主从的 IP 列表(通过 DNS 配置主机名指向物理 IP),利用客户端的自动辨识功能连接主库,这是民生银行使用其他数据库所不具备的。在此之前,openGauss 的 JDBC 客户端支持多 IP 配置,支持读写分离;ODBC 客户端支持多 IP 配置,但不支持读写分离,只能通过 transaction_read_only 属性区分是否为主库;Libpq 支持多 IP 配置,不支持读写分离;甚至连 Python 驱动和 Go 驱动也不具备这样的自适应能力。在民生银行的积极推动及 openGauss 社区的共同努力下,客户端的自适应能力得到了显著改变和快速成长。
在本地提交问题上,民生银行协同 openGauss 社区也做了进一步的功能优化。原先主从复制后,很容易出现主从日志分叉,进而导致主从数据不一致,在 openGauss 使用初期,确实因这个问题产生过不少困扰。最终的优化方案中,决定在本地提交的数据中加入同步点,除了日志之外,数据库在发送日志过程中,写下了从库回来某一个同步点的信息即日志的位置。日志的位置在之前说明已经提交给从库是一致性的点,如果临时点之后本地日志还有从库没有收到的 local commit 数据,就不能做 Build。如果发现数据不一致,就需要用一些日志的工具去把两个分叉的日志点往后的数据全部弄出来,看到数据的差异。
行存压缩能力是民生银行早期向 openGauss 社区开发提出的需求之一。经过过去两三年的功能优化,openGauss 的行存压缩能力已经有了显著增强,压缩之后不仅空间、容量使用上会很少,性能上也有一定的增强改进。在测试环境中,无论是表还是索引,整体压缩率都较高,在真实的生产环境中也能压缩到三分之一左右。
对 openGauss 产品的需求与期望
演讲尾声,谈到对 openGauss 产品的需求和期望,孔再华提到两点——稳定和易用。他认为,任何产品新功能的使用,稳定都是第一位,确保新功能不对老功能产生侵害,确保它稳定、安全之后再交付给用户使用。随着民生银行使用 openGauss 的时间增长,这种感受和需求也日益加深。其次是易用。“开发并优化客户真正需要的功能,最大程度确保稳定和易用,相信是广大 openGauss 用户和社区持续共同的目标和追求。”孔再华讲道。
当前,中国数据库的发展正可谓百花齐放、如火如荼,以民生银行为代表的金融行业应用实践就是鲜活有力的说明。在千行百业的数字化转型升级需求下,相信以 openGauss 为代表的中国数据库定将不负时代使命,持续优化创新,共同加速数字化发展、推进数字中国建设。
评论