您的浏览器禁用了JavaScript(一种计算机语言,用以实现您与网页的交互),请解除该禁用,或者联系我们。[北京金融科技产业联盟]:分布式数据库金融关键业务场景应急处理研究报告 - 发现报告
当前位置:首页/行业研究/报告详情/

分布式数据库金融关键业务场景应急处理研究报告

分布式数据库金融关键业务场景应急处理研究报告

分布式数据库金融关键业务场景应急处理研究报告 北京金融科技产业联盟2023年10月 版权声明 本报告版权属于北京金融科技产业联盟,并受法律保护。转载、编摘或利用其他方式使用本报告文字或观点的,应注明来源。违反上述声明者,将被追究相关法律责任。 编制委员会 主任 聂丽琴 编委会成员 王志刚李振 编写组成员 陈亮邓广俊刁现峰杜蓉冯六军高孝鑫郭智慧胡正策黄小慧黄炎黄元霞姜维莹李博文李国良李磊李思李萧萧路新英明玉琢申宇苏德财王登祎王枫王莉莉王嵩阳王栩吴洪辉许高峰徐雪涛叶强林张楠张毅周日明朱飞 编审 黄本涛张蕾 参编单位: 北京金融科技产业联盟秘书处中国光大银行股份有限公司兴业银行股份有限公司 华为技术有限公司 中兴通讯股份有限公司 腾讯云计算(北京)有限责任公司蚂蚁科技集团股份有限公司 北京国家金融科技认证中心有限公司飞腾信息技术有限公司 北京奥星贝斯科技有限公司北京万里开源软件有限公司成都虚谷伟业科技有限公司 上海爱可生信息技术股份有限公司上海热璞网络科技有限公司 云南南天电子信息产业股份有限公司 摘要 近年来,在金融科技的推动下金融服务和产品不断推陈出新,数据处理呈现出体量巨大、并发量大、高处理性能、类型繁多等特点。银行的业务系统应对新挑战,不断扩容,架构在不同数据库和基础设施之上,变得更为复杂,加大了日常运维的难度和发生故障的风险。虽然单个数据库产品一般具备一定的故障探测和恢复能力,但银行数据库运维人员仍需根据各种异常场景进行应急处理,在发生问题时最大程度缩短恢复时间、减少故障损失。 本报告调研了参编单位现有应急处理方案,分析了金融关键 业务场景中故障产生的原因,提炼出共性应急处理思路,形成普适的应急处理方案和修复验证指导,为金融机构进行关键业务场景的分布式数据库应急处置提供参考。 目录 一、研究背景1 二、应急处理思路1 (一)应急预案1 (二)应急准备5 (三)应急演练6 (四)应急处置7 三、关键场景应急处理8 (一)特性分析8 (二)数据库组件故障10 (三)硬件故障20 (四)机房故障34 (🖂)数据库异常操作38 四、总结与展望48 一、研究背景 近两年随着国内数据库产业的蓬勃发展,银行中使用的数据库类型逐渐增多,特别是分布式数据库在金融关键业务场景的使用变得越来越普遍。数据库是金融业中金融资产的重要载体。无论哪种数据库,其稳定性、可靠性及可用性都是整个系统平稳运行的关键。 虽然现有分布式数据库产品一般具备故障的自动探测、自动恢复能力,但不同分布式数据库的特性和操作方式不相同,银行数据库运维人员仍需根据各种异常场景做好应急处理,在发生问题时最大程度缩短恢复时间、减少故障损失。为了业务连续,运维人员需要在最短时间内判断及处理数据库异常,控制故障不进一步扩大,避免数据库停止服务,保证业务正常开展。其次,一些常见的人为误操作可能会对业务数据、数据库系统的状态及性能会造成较大的影响,运维人员还需对常见误操作进行规范的应急处置,减少对业务及系统带来的负面影响。 本课题通过调研参与单位现有应急处理方案,分析金融 关键业务场景中故障产生原因,总结统一的应急处理思路,形成普适的应急处理方案和修复验证指导,为金融关键业务场景的分布式数据库应急处置提供参考。 二、应急处理思路 (一)应急预案 分布式数据库在银行、证券、保险等金融机构生产环境运行时,都存在发生故障、停止服务的风险。保障生产系统 数据安全、确保服务稳定是金融机构科技部门最重要的工作之一。为了快速响应故障,保障分布式数据库生产系统数据安全、服务稳定,需要提前分析可能产生风险的原因,并事先制定应急处置方案。 分布式数据库系统技术栈包括分布式数据库组件,操作系统、服务器及服务器运行环境,服务器运行环境又包括机房环境和地域环境。分布式数据库生产系统主要面临的风险如下: 1.系统故障 指支撑分布式数据库运行的系统(或子系统)发生故障、停止服务。系统栈每一层中的系统都存在发生故障的概率。分布式数据库组件可能在运行过程中出现bug导致停止服务;操作系统在运行过程中可能会出现故障;服务器硬盘可能出现坏道,无法读取数据,内存可能部分失效,读取出错误内容等;机房环境可能出现供电故障,空调故障等情况;地区环境可能出现地震、台风等影响数据中心机房运行的灾难。 任何系统都存在发生故障的概率,数据库高可靠方案和 系统及运维应急方案都是为在一定约束条件下降低故障发生的概率。当故障发生的概率足够小时,系统运行的安全就得到了保障。一般可以从以下三方面考虑,降低故障发生的概率: 一是要选择故障率低的系统。比如选择经过检验的、故障率低的分布式数据库、操作系统、服务器、机房供电设备、空调等系统,建设机房时所选地区环境避免在地震带上,避 免历史上经常受到台风侵袭的地区等。 二是准备冗余资源,确保系统栈中不存在单点故障。同等条件下如果准备两个或多个系统,其同时发生故障的概率将远远低于单个系统发生故障的概率。 三是及时发现系统异常,并且一旦发生故障,能立刻自动或手动启动备用系统保持/恢复线上服务,快速处理故障系统,恢复故障系统的服务。故障和故障处理,需要关注如下几点问题: (1)各个系统在设计阶段要考虑预设屏蔽故障子系统 的能力,单一系统(或子系统)发生故障时,该系统不再接收请求、提供服务。这种机制可使故障被限制在对服务影响最小的范围内,防止故障蔓延。 (2)分布式数据库最重要的资产是数据,必须着力避 免因局部系统故障造成数据丢失。例如硬盘损坏时不能造成硬盘上的所有数据丢失。需要详细制定数据备份及恢复策略,在恢复系统服务时,保障数据不丢失。 (3)虽然所有技术冗余资源同时发生故障的概率很小, 但仍需要制定相应的故障应急处理预案,包括业务处理方法或手动处理方法。 2.系统资源耗尽 指系统资源耗尽,不能提供更多的服务,主要有两种场 景: (1)由于任务繁重,系统资源已全部投入服务,系统 处理能力达到峰值,新的任务只能排队等待处理。此时系统 处于满负荷持续服务的状态,比如CPU满负载、网络带宽资源耗尽等。这种情况需要先排除是其他系统(子系统)故障而导致。 (2)资源耗尽后,系统运行出现故障,造成停止服务。比如硬盘已满,但日志记录系统仍要写日志文件。对于此类资源耗尽风险,需要采取如下两类策略: 一是事先预防策略。系统需要具备足够的横向扩展能力, 通过增加服务器等资源增加峰值处理能力。 二是监控应对策略。系统需要具备强大的监控告警能力, 一旦某种特定资源使用率超过阈值就进行告警,以便运维人员果断的启动增加部署资源流程。 3.操作风险 指生产运维人员在分布式数据库系统栈中进行系统操作时,发生操作失误,从而造成数据丢失或者系统停止服务的风险。主要应对措施包括以下几个方面: (1)做好培训。通过培训可使运维操作人员充分理解 分布式数据库系统栈中相应系统的运作原理,熟练进行操作。 (2)做好权限管理。通过权限设置,指定专项人员进行风险操作。 (3)制定操作规程。完善数字化运维工具,通过支持双人操作的工具,操作规程等降低误操作的概率。 (4)做好系统数据备份。在执行风险操作前先对相关数据进行备份。 (5)及时恢复。一旦出现误操作,按照操作规程及时恢 复数据、恢复服务。 分布式数据库在金融关键业务场景的应急处理并不仅仅指系统栈中系统突然发生故障后进行的处理工作,还包括系统设计及故障处理能力。完备的应急处理需要从系统规划建设阶段开始重视并落实。 分布式数据库系统运行风险的处理思路也对系统栈中的各个系统的厂商、应用系统开发商及运维系统开发商都提出了要求,所以需要建立和各厂商及开发商的沟通渠道。高效、及时、可达的沟通渠道,能够把需求和问题反馈到各厂商及开发商,并得到顺利解决。 此外,建议在分布式数据库上线前,针对各种运行风险事先准备应急预案,并为预案顺利执行创造条件,包括完成应急预案制定、应急演练、应急培训等事宜。保证从分布式数据库上线开始,应急预案就是真实可用的。一旦出现任何系统故障或报警,能根据应急预案进行处置。 (二)应急准备 应急准备工作指系统故障或风险事件发生前,为防范风险进行的所有工作,包括以下内容: 1.组织层面 有效处置突发事件,快速恢复重要业务应进一步完善应急组织架构中的应急指挥层、应急执行层、应急保障层设置。根据事件影响程度及持续时间等因素对突发事件进行风险等级划分,并根据不同等级的风险事件制定突发事件应急处理流程,依据其可能造成的危害程序、紧急程度和发展态势, 划分预警级别并且建立相应的预警信息发布机制,这是应急准备的重要部分。 2.实施层面 在项目实施中,准备应急预案、制定完善运维操作规程、上线分布式数据库系统及运维管理系统、组织安排运维团队等系统上线前所做的工作都是应急准备工作的一部分。 3.其他 在系统上线后仍有应急准备工作需要处理,包括系统日常运行监控、系统定期巡检、系统运行情况分析、应急预案更新升级、日常数据备份、定期验证备份数据的可用性、定期应急演练,等。此外,金融机构应根据应急演练实际情况完善应急预案及操作规程等合规操作,并进行操作合规性审计。 (三)应急演练 数据中心所在地区发生地震、台风,机房火灾、机房长时间停电;一个数据中心中的所有服务器同时故障;服务器硬盘同时故障等事件都属于极低概率事件。这类极低概率事件在几年,甚至分布式数据库对外提供服务的整个生命周期中可能都不会发生一次。但是,应急预案的内容需包括对这类事件的处置应对。应急准备工作在组织层面、实施层面、其他方面包括了处置应对这类极低概率事件的工作。 由于缺少实际事件的检验,一旦发生这类极低概率事件,相关领导、业务人员、技术人员、厂商/合作方人员,处理故障、问题的资源是否就位,处置是否有序、高效,排除故 障、解决问题、恢复服务是否迅速及时,整体应急准备工作是否完备,都需要通过定期的应急演练来检验、完善。 分布式数据库涉及的极低概率事件的应急演练,可以纳入灾备切换、信息科技相关等应急演练中一并考虑,统一组织。应急演练工作应在应急准备工作完成后安排实施。组织安排应急演练工作实际上是对应急预案的实施落地。首先要做好组织动员工作,建议成立行领导牵头,相关业务部门、技术部门参与的应急演练小组,协调相关厂商、合作方安排相关人员参与应急演练工作。次之是做好应急演练方案,明确岗位职责,细化演练流程,保障方案可行性。其次是保障支撑应急演练的各项资源就位,包括备品备件、通讯线路等。再次是做好业务合作方、技术产品/服务合作方等的沟通协调工作,提前通知对方本单位的应急演练计划,请合作方做好支持安排。最后是完善应急演练组织的沟通机制,工具。 应急演练应严格按照应急预案,应急演练方案来落实实 施。且应制定持续改进的机制和方案,在应急演练完成后,全面总结应急演练过程中的经验和教训,完善应急预案和其他应急准备工作。 (四)应急处置 当有系统发生故障或者存在风险时,需要启动应急风险处置预案。风险处置最重要的原则之一是在保障数据安全和操作合规的前提下,采用最短的时间恢复生产,并按照应急预案演练的情况推进其他步骤。 如果出现应急预案没有覆盖的风险,应根据风险影响范 围进行汇报,同时按照审慎的原则进行处理,比如尽量确保在分析和处置风险的过程中,获得应用开发商和具体系统厂商的参与和支持。在完成问题处置后应梳理处置过程,并将风险及处置情况纳入应急预案中,以防范之后的风险。 三、关键场景应急处理 (一)特性分析 数据库系统是按照特定数据结构组织、存储和管理数据的基础软件,根据架构不同可分为集中式数据库和分布式数据库。分布式数据库是物理上分散而逻辑上集中的数据库系统,利用分布式事务处理、数据自动分片、数据多副本存储等技术,将分散在计算机网络的多个逻辑相关的节点连接起来共同对外提供服务。如图1所示,分布式数据库比较典型 的技术架构包括管理模块、计算模块和存储模块3个部分。 图1分布式数据库典型技术架构 计算模块负责解析应用程序查询请求、生成查询计