民生银行数据库运维的探索与实践–数据实时复制管理系统介绍
请点击上方 “民生运维” 添加订阅!
一
前述
商业银行正处于数字化转型的深刻变革中,随着互联网业务的蓬勃发展,金融科技的不断创新,银行信息科技发生着翻天覆地的变化。民生银行的信息系统也正在蓬勃的发展,以满足持续变化和增长的业务需求,在系统架构上正经历着传统的集中式架构向分布式架构转变。数据是银行信息科技最有价值的资产,在民生银行当前的总体SOA架构下,无论是传统的集中式架构还是分布式架构,都存在着数据散落于各个系统内外形成大量的数据孤岛的问题,依靠传统的数据集成架构,难以满足多种类异构数据源的跨平台集成,尽管积累了大量的数据,却难以整合利用这些数据以发挥其更大的价值。甚至,集中式向分布式架构的转变,引入了更多的数据整合和实时分析的需求。我行采用数据实时复制的方式实现不同系统之间多种类异构数据的整合,以满足各种不同的需求。目前数据实时复制需求在我行的应用主要有以下两个方向:
1
生产数据场景
在生产系统的数据复制需求中有以下几个场景:
场景 |
需求说明 |
数据读写分离场景 |
读写分离,减轻生产当前库压力 |
数据汇聚场景 |
从各个系统抽取数据,进行实时数据处理和生成报表 |
数据库灾备场景 |
北京到异地灾备 |
数据逻辑容灾 |
数据逻辑容灾是为了满足在生产当前库出现异常的情况下,通过延迟复制技术,能够提供一定的数据回退能力。 |
数据实时下发 |
从关系型数据库抽取数据到kafka集群,各个下游系统进行实时处理。 |
数据异常快速闪回 |
通过数据库日志分析,提供数据的审计操作日志,并解析成具体的回退语句,对异常数据进行快速闪回。 |
2
业务场景需求
业务实时分析的需求主要有内部管理类、监管、对客服务、营销、模型分析等场景,每个场景都需要有一个合理的数据实时提供方案,以便满足业务需求。
采用合适的技术为下游提供数据,能够大大解决业务场景的迫切需求,生产环境目前我们已经基于数据复制管理系统为下游提供了可靠的数据实时服务,一定程度上满足了业务需求。
二
数据实时复制管理系统介绍
为了满足数据整合和实时分析的需求,出现了越来越多的数据同步软件,这些商业产品或者开源产品提供了各种数据实时提取功能,一定程度上满足了部分实时处理的业务场景需求。
我行很早之前就引入了IBM CDC数据同步工具,该工具基于数据日志进行数据同步,对于源系统的影响较小,目前在我行的生产系统中已经部署多套相关数据同步工具。虽然已经在生产环境运行多年,但这些系统的数据同步均是独立部署,和数据库系统的HA集成以实现高可用,当前部署模式存在着部署复杂、人工维护成本高、无法保存性能监控历史信息和运维人员难以维护等问题。因此迫切需要一个统一的管理平台,提升数据复制任务的可靠性,以满足生产数据实时复制需求和业务大量涌现的实时分析场景。
为了能够解决上述实时复制需求,我们开发了数据实时复制管理系统,提供一个全行统一的数据实时复制管理入口,提供方便快捷和安全的部署方案,以及可靠运维接口,已经实现了数据复制关系展示、复制配置、性能监控、问题查看和异常自动恢复等运维功能。
数据实时同步管理系统底层是基于数据库日志的同步工具,主要完成结构化数据的实时同步需求。目前我们调研了部分商业产品和开源产品作为我们平台底层使用的同步监听工具,总结了商业产品和开源产品的优缺点,如下表所示:
类别 |
产品 |
优点 |
缺点 |
商业产品 |
IBMCDC, ORACLEOGG |
产品支持广泛,支持力度大,数据可靠性高。 |
需要从厂商沟通,维护费用高 |
开源产品 |
Debezium,MAXWELL,canal等 |
软件开源,无费用,数据可控性低。 |
社区支持力度普遍不高,产品支持单一,不支持DB2. |
1
纳管商业产品
初期我们计划基于我行现有的IBM CDC软件进行开发,该产品已经在我行生产系统中使用,运行稳定,提供秒级延迟同步。
目前该平台已经支持的复制接入类型如下:
:ok_hand:支持关系数据库:Oracle,DB2,MYSQL,PostgreSQL等主流数据库。
:ok_hand:大数据组件:KAFKA,Hadoop。
数据实时复制管理系统的架构和定位
该系统目前的主要定位如下:
-
消息订阅总线
提供了全行范围的统一数据实时同步订阅管理,实时数据复制关系展示,为后续实时业务需求提供了可靠的运维保障。
-
数据灾备
平台为重要系统提供表级别异地灾备同步功能。
-
大数据实时计算数据采集
从关系型数据库准实时同步数据到kafka集群,下游系统根据需求订阅相关数据,提供准实时数据订阅
-
延迟复制和数据回滚需求
对重要系统的应用提供逻辑延迟复制和数据操作逆向解析功能,为异常操作和数据库底层逻辑错误提供了一定的容错机会。
-
统一复制管控
集中的管理和高可用方案,以及完善的性能和瓶颈监控,并支持异常自恢复,巡检报告定时发送等功能,方便运维和开发人员使用,降低问题复杂度,提升了使用和运维效率。
2
基于开源产品自研
为了实现逐步的自主可控,我们也基于开源产品进行了相关的自研,目前我们选择了开源产品debezium进行了相关整合。
Debezium 不同于其他产品,debezium基于Kafka生态打造,且更专注于CDC功能,sink相关组件在confluent有很多组件可以与之结合使用,生态完善。
Debezium特点如下:
• 支持 MySQL、MongoDB、PostgreSQL 、Oracle、DB2、SQLServer三种数据源的变更抓取;
• Snapshot Mode 可以将表中的现有数据全部导入 Kafka,并且全量数据与增量数据形式一致,可以统一处理;
• 利用了 Kafka 的 Log Compaction 特性,变更数据可以实现”不过期”永久保存;
• 利用了 Kafka Connect,自动拥有高可用与开箱即用的调度接口;
• 各类管理功能和监控功能都提供全面的Rest api,方便集成
• 社区活跃:Debezium 很活跃,用于大量的活跃用户,并且有若干 Redhat 全职工程师进行维护;
• 功能的开放性,例如可以增加国产数据库插件,例如数据的转换和处理可以自己扩展,例如利用kafka生态的协调功能
DBZ架构
根据debezium的这些优势,我们基于debezium进行了数据复制工具的开发,目前生产已经上线使用,并进行了70多个任务的配置,同步表约1万多张。满足了下游数据到KAFKA的实时同步需求。
如下是当前debezium的应用场景:
3
数据实时复制管理系统的底层开发架构
前端框架:
前端使用的框架是Vue.js和Element组件,Vue.js是一套构建用户界面的渐进式框架,它是以数据驱动和组件化的思想构建的,采用自底而上增量开发的设计,并且提供了更加简洁,更易于理解的API,使得我们更容易快速地上手并使用Vue.js,Vue.js易用,灵活,高效,基本任何规模的应用都适用。
后端框架:
TESLA框架是民生银行自主研发的具有完全知识产权的金融产品服务开发平台,采用“微内核”+“组件”设计,保证系统的健壮性、灵活性、扩展性。TESLA屏蔽绝大部分技术细节,业务功能基于注解式开发,可以做到零配置,能够降低开发人员的技术门槛,使团队更好的专注于业务需求的理解。
三
数据实时复制管理系统功能
1
CDC平台介绍
目前数据实时复制管理系统已经接入重要系统7套,涉及数据库20多套,复制任务达300多个。
目前系统的主要功能如下:
1. 数据复制关系和集群列表展示
下图展示了集群纳管信息,已有数据复制关系和状态。从当前界面中我们可以方便的查看系统间数据复制关系,提供了直观的数据复制状态展示,以便快速的定位复制链路状态是否正常。
纳管集群信息
下图的界面列举出了系统纳管的复制集群信息,并可以快速的纳管已部署的集群到平台中。
2. 复制任务管理
复制任务列表:包含任务状态,任务启停,复制延迟时间,复制配置,监控状态,自动拉起等配置。方便运维人员对任务的当前状态快速的配置和参数配置。其中自动拉起功能在任务异常的情况下,可以自动恢复异常任务,避免因非数据质量问题导致复制的异常停止。
3. 复制实例管理
已纳管的复制实例状态和后台数据库用户登录配置。
4. 复制任务新建
目标和源端定义,复制表的映射,以及复制过滤等条件配置。
预定义创建界面
表映射配置界面
5. 复制任务日志查看
根据定义的条件列出复制任务的相关报错信息等,用以进行任务异常分析。日志分为若干日志级别,可以快速的过滤无关信息,方便快速定位关键日志。
日志查看界面
6. 复制任务性能和瓶颈监控
展示复制任务的延迟时间,和组件存在的瓶颈信息,其中瓶颈信息可以展示不通的维度组件信息,让运维人员能够更高效的定位那个组件出现问题。
性能监控界面
7. 告警功能和巡检报告
巡检报表功能定时给运维管理员发送相关系统的复制报告,方便运维人员查看集群负载,复制性能等信息。
告警功能在任务异常的情况下发送邮件和短信给相关负责人,同时系统会将关键报错日志附带发送,且在任务自动拉起配置的情况下,后台也会自动尝试恢复复制任务状态。
巡检报告截图
2
DEBEZIUM平台介绍
基于开源产品DEBEZIUM的相关数据复制工具,在生产上我们已经正式进行了使用,目前已经接入我行分布式核心系统,我们使用MySQL的从库进行数据的复制,把对生产数据库的影响降到了最低,同时基于DNS域名探测配置,在当前从库异常的情况下,DEBEZIUM可以路由到另外一个配置从库,不会中断数据同步。
DEBEZIUM本身是基于kafka connector进行高可用,在其中一个节点异常的情况下,复制任务会自动切换到其他的节点,同时在平台上我们也对任务进行了监控,在任务异常的情况下平台会自动根据策略恢复异常任务,同时进行异常的告警。
1. DEBEZIUM复制界面总览
当前页面展示了节点状态,任务的各种状态信息,已经各位节点负载的任务情况。
2. 任务管理:状态查看,配置修改,启停,日志等查看
3. 任务新增:单独创建和批量模式
4. 性能监控:内存使用,复制延迟,数据库时间等信息
5. 节点状态监控
四
后续计划
随着业务的不断发展,数据实时分析场景的需求越来越旺盛,实时复制相关需求越来越重要。后续我们会重点进行数据复制平台建设,完善系统高可用,整合权限管控,完成数据复制血缘关系等功能。
同时积极的引入主流开源工具,如flink等工具,满足各个系统的多方使用场景,支持我行在数据实时分析等领域更快的业务发展,让数据发挥更大的价值,满足更多的实时业务场景需求。
作者介绍:
王健:曾任职于IBMCDL,informixL2 support、DB2客户现场技术支持等工作,2011年加入民生银行科技部,数据库管理员(负责DB2,Oracle,MySQL等运维工作,对MPP等数据库有很长的维护和实施经验,擅长数据迁移,对开源数据库和大数据领域有广泛的兴趣和爱好),负责行内KAFKA集群运维和实施工作,同时负责行内数据库实时复制等工作。
孔再华:IBM认证高级DBA,SAP认证BASIS,具有丰富的数据库环境问题诊断和性能调优的经验。曾任职于IBM研发中心,为客户提供数据库支持。尤其是在数据库同城双活,集群,多分区,分布式等项目咨询和实施上具有丰富的经验。现任职于中国民生银行科技部,工作致力于数据库同城双活架构建设,数据库分布式架构建设和数据库智能运维(AIOps)方向。对于如何将AI技术运用在运维领域具有浓厚的兴趣和创新热情。
文乔: 2012年硕士毕业后加入民生银行生产运营部系统管理中心,天眼日志平台主要参与人,目前在开源软件支持组负责Flume、Kafka、Debezium的源码研究和工具开发等相关工作。