作者

北京金融科技产业联盟高级专家 杨祥合

当前,数字经济、数字金融、数字政务治理等成为全社会共同关注的热门话题,而数据库作为承载上述一系列战略规划落地的重要基础设施,保障数据不丢、不错是其必须具备的安全底线。然而,在生产实践中,传统数据库在保持数据一致性方面正面临着空前挑战,根据IT Policy Compliance Group发布的报告,全球每年有近百万家企业因“数据丢失”而破产。聚焦在金融领域,数据一致性更是被诸多金融机构视为决定数据库选型的首要因素,并对分布式数据库的发展产生了深远影响。

冗余阵列(Raid)可避免数据丢失吗?2018年,某云厂商的硬盘故障导致一家创业公司的数据全部丢失,而故障根因即是磁盘静默错误。该公司在微博发表长文公开质疑“数据上云到底安不安全?为什么数据丢了不能恢复?”实际上,磁盘静默错误就是磁盘部分或者全部变成初始化状态,那么,如何才能及时发现问题呢?

中央处理器CPU不会出错吗?2021年2月,脸书(Facebook)发表文章Silent Data Corruptions(SDC) at Scale,详细分析了在大规模机器部署场景下可能遇到的CPU静默错误(SDC)。据介绍,脸书从2018年开始监控SDC,并基于18个月的连续监控数据,分析得出了“做好SDC防护,需要做好硬件弹性、产品检测机制以及软件容错能力”的结论。脸书实践表明,“CPU会出错”,当“1+1=3”有可能发生时,要如何才能保障数据一致性?

从上述案例中,业界听到了企业对数据一致性的呐喊。例如,在非技术层面,需要对云厂商实施更加严格的监管策略;在标准层面,倡议将静默错误识别作为数据库或者存储产品的强制性标准;在技术层面,则要求数据库及存储厂商持续探索新的解决方案。对此,本文着重从技术层面展开探讨。

一致性协议是分布式数据库发展的

必然选择

一致性协议针对事务发生时多副本之间的一致性出现校验和错误该文件已损坏,可有效解决传统主备脑裂、性能与数据不丢不可兼得等问题。中国信通院发布的《大数据白皮书(2018年)》指出,“一致性协议的诞生为分布式数据库发展铺平了道路”,并详细列举了事务型数据库架构的演进路径(如图1所示)。换言之,一致性协议是分布式数据库的最终标配,而单机数据库、中间件架构的分布式数据库可看作数据库发展的过渡形态。

出现校验和错误该文件已损坏_炉石传说某文件出现错误_文件crc校验错误

图1 事务型数据库架构的演进趋势

在从大型主机、小型机转换成PC服务器的过程中,事务发生时的数据一致性策略大致经历了三个阶段:第一阶段是传统“主库+备库”架构,若主备强同步,则故障数量翻倍,因为在备库宕机的情况下,主库也不可用;若主备异步同步,则当主库宕机时,因中间存在“时滞”,将导致备库丢失数据(如图2所示)。第二阶段是类似 PostgreSQL 的XC模式,即在多个备库中需至少写成功N个备份,但在网络闪断或者服务器变慢的情况下,易出现性能问题或者不可用的情况(如图3所示)。第三阶段是基于一致性协议实现高性能且数据不丢,同时单点故障也不会影响集群稳定性。

文件crc校验错误_炉石传说某文件出现错误_出现校验和错误该文件已损坏

图2 主备同步的脑裂现象示意

文件crc校验错误_出现校验和错误该文件已损坏_炉石传说某文件出现错误

图3 “至少同步成功N个节点”的问题示意

磁盘静默错误定时校验

静默错误发生时,传统数据库常见风险主要可分为两种:第一种是主备库使用数据库复制,因传统数据库的主备库之间没有数据校验机制,伴随静默错误的发展,无论是某个磁位翻转还是磁盘级别的静默损坏累积都可能发生在所有副本上,进而导致数据彻底丢失。第二种是基于文件级的复制,该模式可将主库的静默损坏传播到备库,进而使备库也出现静默损坏。静默错误致导致的可靠性挑战如图4所示。针对上述两种情况,定时校验是业界较为常见的解决方法。

文件crc校验错误_炉石传说某文件出现错误_出现校验和错误该文件已损坏

图4静默错误致导致的可靠性挑战

那么,定时校验会影响线上稳定性吗?以原生分布式数据库 OceanBase 为例,通过参数设定后台任务可用的最大资源占用,Ocean Base支持与业务使用形成有效隔离。从性能角度看,由于B+树需要持续将数据异步刷新到数据盘,而LSM架构只有写满内存才会刷新数据盘,因此LSM架构对性能的影响更小。根据中国信通院发布的相关报告,我国关系型数据库中基于MySQL和PostgreSQL魔改的数量总计占比为58.03%,从上述占比来看,磁盘静默错误应引起数据库行业足够的重视。

链式校验和交叉校验

链式校验和交叉校验的初衷是发现极小概率事件的硬件静默错误或者软件缺陷,甚至对于高级别的篡改行为,在极端情况下做到快速发现并定位根因。传统B+树数据库在二级索引和数据表之间没有核对逻辑,而且在分区表情况下没有闭环的校验逻辑,其根本原因是没有列级别的校验和。实际上,由于增、删、改、查等操作的不断进行,列级别的校验和也是不断变化的,但基于LSM架构的动、静态数据分离机制,可使用静态数据非常容易地做出列级校验和。

对于链式校验而言,区块链技术具备防篡改特性的关键即是其支持链式校验,且校验和实现了从微块、宏块、表分区到SSTable、表级别的全覆盖,任意字节的改变都可被快速发现。通常,传统数据库只有块级校验和,并不具备链式校验能力,需要对数据库结构熟悉的专业人士修改数据后,重新生成合法的校验和,再通过数据库校验。链式校验和的产生大多在每日合并时进行,并使用CPU的指令加速,计算成本较低。其中,对有峰谷的业务,每日合并可以放在业务低峰期;对持续高峰的业务,可开启轮转合并,按照Zone级依次合并。

主备集群之间的校验,

集群内多副本之间的校验

磁盘静默、CPU静默等错误易导致传统数据库主备架构出现数据丢失风险,而存量数据有校验可高效解决这一问题。对于分布式数据库而言,其技术转型多是以保障业务连续性为前提,基于“一库多芯”能力模式解决下层操作系统和芯片供应问题(如图5所示)。值得注意的是,“一库多芯”并非简单地将不同芯片架构编译后进行拼凑,而是要具备严谨的数据校验逻辑。该模式实现了主备之间、多副本之间数据有校验,并同时构建了“一库多芯”能力。

炉石传说某文件出现错误_文件crc校验错误_出现校验和错误该文件已损坏

图5五道防线保护数据一致性

以国内某头部保险公司实践为例,该公司将Oracle平滑迁移到OceanBase,应用几乎无修改地完成了分布式转型。但更重要的是,完成数据库替换后,该公司将可完全掌控操作系统和芯片的替代节奏,有效避免了被单一芯片或者操作系统绑定的风险。具体而言,“一库多芯”主要分为两个阶段(如图6所示)。

图6一库多芯架构示意

第一阶段,实现主备集群混合部署,验证异构芯片的数据一致性,不承载业务流量。在此过程中,由于OceanBase具备链式校验、交叉校验的能力,主备校验将无需数据真实比较,基于“零计算”即可验证主备之间的一致性。

第二阶段,实现集群内多副本之间的一致性,将一个区域(zone)更换为异构芯片,最细粒度可按照表分区切换到异构芯片上,进行灰度验证。

2023年2月,赛迪顾问发布《核心数据库选型参考》指出,数据库选型在数据层面需考虑的首要因素就是数据一致性,包含是否支持一致性协议、具备多副本校验能力,以及支持主备库数据校验、链式校验、数据定时校验等。在这份报告中,OceanBase数据库拿到三个第一,即国产分布式数据库市场占有率第一、面向未来选择第一,核心系统升级首选第一。

在金融业实践中,国内某银行创造性实现了“三地五中心、多地多活”部署,该方案的核心内涵即是数据一致性保障和成本考量,如果没有数据一致性的五道防线,上述架构将失去应有价值,而如果没有高压缩比,这一方案也很难通过。从安全角度看,后续还可将国密算法纳入数据库及存储设备的强制标准,以切实保护金融行业对隐私安全的高要求。

“一花独放不是春,百花齐放春满园”。凭借创新带来的生命力,“科技创新、务实进取”的新格局正快速形成,而伴随关系库、图库、KV库、时空数据库等多模数据库的逐步兴起,我国数据库行业必将迎来更为繁荣的未来,并有望扬帆出海出现校验和错误该文件已损坏,服务全球。

———END———
限 时 特 惠:本站每日持续更新海量各大内部创业教程,一年会员只需128元,全站资源免费下载点击查看详情
站 长 微 信:jiumai99

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注