百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术教程 > 正文

数据库容灾备份

mhr18 2025-02-15 16:33 33 浏览 0 评论

数据备份的主要方式

本地备份异地保存

远程磁带库与光盘库

远程关键数据+定期备份

远程数据库复制

网络数据镜像

远程镜像磁盘

数据库容灾需要考虑以下问题

1 本地容灾还是异地容灾,异地容灾的网络带宽及稳定性。

2 灾备数据库

是否需要在线查询,

是否需要校验,比对某些核心数据是否与生产库一致。

3 RPO(数据恢复点目标,指生产系统所能容忍的数据丢失量)

RTO(恢复时间目标,指生产库发生故障到灾备库投入运行期望的时间)

4 备份模式选择,

单向备份模式(active/standby)

双向互备模式。

半双工:在任一时间点依然是单向模式(active/standby),只有一个数据库接受业务请求,当主库故障时允许主备自动切换。

全双工:(active /active),用于双业务中心异地互备,两个数据库同时接受业务请求。对于全双工模式需要考虑数据是否存在主键冲突。

5 部署及维护成本

灾备库是否支持异构(不同操作系统、不同数据库版本)、是否需要在主备库安装代理程序或在数据库额外创建对象、是否需要调表结构等。应用系统升级是否需要重新配置备份过程,是否需要人工干预等。

数据同步与传输

按照监管要求,核心业务系统生产中心的数据库数据能实时同步传输到异地的灾备中心。下面以MySQL数据库场景为例,介绍几种不同的同步传输技术,供数据库容灾架构规划参考。

1.主从复制

MySQL主从复制6是一个异步的复制过程,主库发送更新事件到从库,从库读取更新记录,并执行更新记录,使得从库的内容与主库保持一致。

每一组主从复制的连接,都由三个独立的线程协作实现。在主库上为每一个连接到主库的从库创建一个二进制日志(以下简称“binlog”)输出线程。每一个发送给从库的SQL事件或者数据变更事件,都会基于binlog传输给从库。而每一个从库都会为同步创建一个I/O线程和一个SQL线程。I/O线程连接到主库并请求主库发送binlog事件到从库,读取到的binlog会更新到本地中继日志(以下简称“relay-log”)文件。而SQL线程读取到I/O线程写到relay-log的更新事件后,在数据库中进行执行,从而完成数据从主库到从库的同步。

2.半同步复制

半同步复制是MySQL 5.5版本引入的机制7。半同步复制出现前,虽然异步复制可以满足主从实例之间的数据同步要求,但如果主库崩溃,将从库提升为主库时,原来的主库上可能有一部分已经提交的数据还没有来得及被从库接收,主从不一致将导致切换后的新主库丢失这一部分数据。

半同步复制改进了事务提交的逻辑。客户端在主库上写入一个事务时,需要等待从库接收到主库相关的binlog数据,且主库接收到从库的应答之后,客户端才能收到事务成功提交的消息。

早期的半同步复制存在一些缺陷。主库在等待应答的过程中,存储引擎内部已经提交的事务,只是阻塞返回客户端消息而已,此时如果有其他会话对该会话事务修改数据进行查询会查询到数据。如果此时出现主库故障转移,非发起数据库提交的客户端可能会出现幻读。所以MySQL 5.7版本对半同步进行了优化,称为增强半同步复制。优化后一个事务在存储引擎内部提交之前,必须要先收到从库的应答确认,否则不进行事务的最后提交,从而解决上述提到的幻读问题。

3.组复制

MySQL在5.7版本正式推出组复制(MySQL Group Replication8,以下简称“MGR”)机制。MGR集群由若干个节点共同组成一个复制组,一个事务的提交,必须经过组内大多数节点决议并通过才能得以提交。

引入组复制,主要是为了解决异步主从复制和半同步复制可能产生数据不一致的问题。组复制依靠分布式一致性协议实现了分布式架构下数据的最终一致性,提供了MySQL集群的多主写入方案。

MGR技术与Oracle RAC类似,对集群网络的要求非常高。网络延时和不稳定会严重影响MGR集群的正常工作,所以多用在单数据中心的内网环境中,对于主备和多活容灾架构下异地同步的场景,存在一定的短板。

4.分组强同步

半同步复制机制保障了主库故障切换时事务数据能够在至少一个从库中持久化存储,保证切换过程不丢失最新数据。随着数据库集群规模逐渐增大,同城和异地多机房灾备架构对同步的要求也愈发提高。当跨多机房部署的集群出现大规模故障,例如机房故障或专线故障时,主库和完成接收binlog数据的从库节点可能同时出现故障。因此在半同步的基础上,出现了分组强同步机制。

分组强同步机制能够保证在跨机房的场景下仍然保持高可用和强同步的能力。任何一个集群的从库可以分成若干组,在每一组中,只要有一个从库返回成功,则认为该组复制成功。当所有的组都复制成功,主库的事务才能完成提交。

分组强同步复制算法可以保证已经提交成功事务的数据不丢失,修复了MySQL原生半同步可能丢失数据的隐患,确保在主库发生故障情况下,不会因为二进制日志丢失导致从库丢失数据,进一步提升了数据的可靠性。

5.云数据库数据同步服务

为了与数据库产品配套,云平台供应商和数据库厂商推出数据传输服务(DTS),该服务用于在异构数据库之间进行数据迁移、数据同步和数据订阅。DTS 支持在业务不影响源数据库服务的前提下进行数据库迁移,利用实时同步通道构建异地容灾的高可用数据库架构。DTS 往往支持在主流数据库之间进行结构迁移、全量数据迁移和实时增量数据同步,其迁移同步任务还可按照同步范围并行进行同步。

数据传输服务在异地灾备场景下也被作为异步同步的重要方案。


数据恢复过程设计

本地恢复:在本地如果发生服务器故障、数据损坏、软件错误、病毒和最终用户错误等常见问题造成的数据丢失,利用本地的CDP即可快速恢复到任意时间点的数据。

异地恢复:我们直接将数据附加到已配置好的灾备服务器上,配置好网络路由等细节,即可启动应用,恢复原业务系统。

充分利用现有资源,完成数据的容灾保护,为保障数据的安全性和可靠性打下良好基础。

故障自动切换

当分布式数据库各类节点出现故障时,其监控系统应该能实时感知到故障种类和范围,包括各类节点的进程故障、服务器故障、磁盘故障和网络故障等,都可以依据预案配置,自动进行故障切换。

主备容灾架构下,容灾机房内会建设一套与生产机房相同规模的服务。如果生产中心出现灾难而不可用,数据库管理系统应该能自动将数据库服务切换至灾备中心。在异地容灾架构下,数据库甚至能够抵御地理级灾难,如地震洪水等。该类灾难可能会影响整个城市区域,使得同城机房均不可用,从而将服务切换至异地容灾中心。

1.集中式架构

以SQL Server数据库为例,介绍集中式架构数据库的典型故障切换技术。SQL Server采用SQL Server Always On可用性组来支持对一组分散的数据库实施故障转移。一个可用性组支持一组读写主数据库,以及一至八组对应的辅助数据库(包括一个主副本和最多四个同步提交辅助副本),每个副本承载一组辅助数据库,同时也是可用性组的潜在故障转移目标。发生故障转移时,数据库通过一组独立的服务器故障转移群集服务,将实例的资源所有权转移到指定的故障转移节点。然后SQL Server实例在故障转移节点上重新启动,使数据库恢复如常。无论在任何时刻,故障转移群集中只有一个节点可以承载故障转移群集实例和基础资源。

Always On可用性组主副本将每个主数据库的事务日志记录发送到每个辅助数据库,每个次要副本则缓存事务日志记录,然后将日志记录应用到相应的辅助数据库。主数据库与每个连接的辅助数据库独立进行数据同步。因此一个辅助数据库可以挂起或失败,但不会影响其他辅助数据库,一个主数据库也可以挂起或失败,也不会影响其他主数据库。

2.分布式架构

分布式数据库架构由于进程、磁盘和服务器等故障,往往导致集群的少量节点实例不可用,应对措施主要是通过冗余和副本节点进行替换止损,替换过程中可能出现主备切换或主从切换;对于交换机、路由器等网络设备发生故障,除了导致部分节点实例不可用外,还可能出现集群分裂情况,因此分布式数据库需要建立应付各种类型和规模故障的容灾能力。

(1)计算节点故障切换

当其中一个计算节点出现故障,流量以秒级切换至其他计算节点。整个切换过程对用户透明,应用代码无需变更,应用进程无需重启。

计算节点自愈分为故障感知和故障处理两部分。故障感知是指通过节点代理的定时任务定期执行自愈监控项采集任务,对计算节点的监控指标进行采集,并上报至服务自愈模块,该模块对节点的监控数据进行分析,对可能的故障信息进行定位和二次检测,若确定为故障则发起故障处理任务。故障处理是指服务自愈模块检测到故障节点,任务调度模块创建自愈任务,自动对故障节点进行恢复处理,处理完成后故障节点重新上线恢复正常服务。

(2)存储节点故障切换

分布式数据库采用多副本保存数据,存储节点通过多副本方式构成集群。最常见的集群模式是主从集群,即一个主节点负责写入,并基于一定的一致性算法同步至其他从库。当对外提供数据库服务时,主库承担读写服务,从库提供只读服务。当主库节点故障时,系统会自动发现并尝试恢复主库,如果主库无法恢复则发起主从切换。

切换协调模块为切换核心模块,负责存储节点健康诊断、切换仲裁与协调,并变更集群的拓扑信息。如上图所示,数据库实例的三个节点代理构成了切换的协调者。节点代理通过与决策集群通信获取其托管的集群元信息,并借助集群取得集群中其它节点代理的通讯方式。

分布式事务容灾

金融类业务数据模型复杂度较高,往往需要多维度进行数据处理和分析。进行业务系统分布式改造时,分片策略往往无法避免一个事务可能跨越多个数据分片的情况,需要通过分布式事务保证数据的强一致性。为保障分布式事务在跨节点处理时事务的原子性和一致性,一般使用分布式协议处理。常用两阶段提交、三阶段提交协议保障事务的原子性;使用Paxos、Raft等协议同步数据库的事务日志从而保障事务的一致性。支持分布式事务是金融级分布式数据库产品的核心特性,分布式事务的容灾能力是分布式系统容灾能力的重要考量指标。

百度分布式数据库GaiaDB-X采用基于优化的XA协议及两阶段提交算法实现分布式事务机制。其优势有:1)自研DMVCC11算法,解决分布式全局读一致性问题;2)解决MySQL原生XA在事务一致性和持久性上的缺陷;3)在宕机等故障场景下,能够基于持久化的全局事务状态对悬挂事务进行提交或回滚,保证分布式事务的容灾恢复能力;4)支持备份恢复的事务一致性、死锁检测等高级功能。

上图为GaiaDB-X的分布式事务架构,其中分布式事务处理器(Distributed Transaction Manager,以下简称“DTM”)负责SQL路由并管理分布式事务,是业务端访问数据库服务的入口。DTM使用Redis存储多版本的读视图基线并存储数据节点的分布式事务状态信息。

在宕机等故障场景下,全局事务状态持久化在高可用Redis集群中,故障自愈后,新节点能通过Redis恢复悬挂的事务,决定事务应该提交或回滚,保障分布式事务的高可用能力。

当分布式表进行备份和恢复时,如何保证恢复数据的一致性也是考验分布式数据库的难题。GaiaDB-X实现了基于全局事务点的备份恢复机制。

所有分片同时通过备库上定时任务启动备份任务独立进行备份,根据备份结果获取全局事务标识(简称“GTID”),并从主库日志中解析得到备份快照点及对应分片的全局事务信息,与备份数据一同备份。这样基于快照点与全局事务信息的对应关系,即可在备份恢复时保证各分片的全局事务一致性。

(五)应用应激防护

1.过载保护

为了保障数据库服务不受业务系统突发过量压力影响,导致系统稳定性下降,数据库需要提供对请求流量进行控制的功能,保障数据库服务在极端应用负载情况下仍能稳定运行。当监测到连接可用性下降时,会触发进入限流模式,基于实时查询量对主库和从库的访问量进行限制。限制策略有连接数限制、查询量限制和处理时间限制等。

2.SQL入侵防御

SQL入侵防御是对用户发送的SQL进行语法解析,过滤非法SQL的一种安全能力。数据库产品一般通过中间件或基于计算节点集成防火墙功能,对非法SQL进行过滤、阻断和报警,有效的预防SQL注入或恶意非法攻击。对于不同SQL,防火墙采用拦截模式或告警模式进行处理:拦截模式是指当发现非法SQL时,防火墙会自动阻断其执行,并发送报警通知;告警模式是指当发现非法SQL时,防火墙会允许其继续执行,但会发送告警通知。

基于SQL入侵防御技术,数据库可以有效识别和拦截外部的SQL攻击行为,并记录日志,供事后追查。例如各类SQL注入攻击模式,包括脱库、高危SQL等,SQL防火墙都能实现有效拦截。

3.数据回滚

在存储限额范围内,数据库将删除的数据库表移动到数据回收站保存。对于误操作或者需要恢复删除的情况,可以对数据库表进行DROP操作后进行快速“闪回”。数据回收站的数据会自动按照清理策略进行清除,不会影响正常数据库服务。

4.弹性扩容

当分布式数据库的负载不断增加,或出现短期的业务浪涌,可以使用弹性扩容功能对计算节点和存储节点进行扩容,保障数据库服务平稳运行。

(1)计算节点水平扩容

当集群的处理能力不足的时候,分布式数据库支持在线增加计算节点,扩展服务能力。同时,当集群的计算节点资源利用率较低时,支持降低集群规模,减少计算节点数量,降低服务能力,提供服务能力弹性扩展能力。

由于在分布式数据库系统中计算节点往往被设计为无状态,通过新增或减少计算节点数量,并在配置节点中进行相关元数据的更新即可完成计算节点的调整。

(2)存储节点水平扩容

存储节点水平扩展通过增加存储节点线性提升集群整体容量和吞吐性能,分布式数据库的控制台可以发起扩容操作。以百度分布式数据库为例,该操作主要分成四个步骤:1)创建新的存储节点;2)重新分布数据,并保持新节点和原节点数据实时同步;3)变更计算节点拓扑,切换流量到新节点;4)清理原节点上的数据。

在整体扩容过程中,第三步会对业务有秒级的连接闪断(一般应用层具有重连机制),因此分布式数据库往往提供手动触发第三步切换操作,运维人员可选择业务低峰期完成切换。

本文聚焦金融领域的数据库在灾备方面的技术内容。介绍了容灾与备份的定义、分类,分析了金融机构灾备现状、需求与灾备市场情况,梳理了主流数据库容灾备份技术架构、实现方式与部署方案。

相关推荐

甲骨文签署多项大型云协议,其一未来可贡献超300亿美元年收入

IT之家7月1日消息,根据甲骨文Oracle当地时间6月30日向美国证券交易委员会(SEC)递交的FORM8-K文件,该企业在始于2025年6月1日的202...

甲骨文获TEMU巨额合同,后者大部分基础设施将迁移至Oracle云

IT之家6月23日消息,Oracle甲骨文创始人、董事长兼首席技术官LarryEllison(拉里埃里森)在本月早些时候的2025财年第四财季和全财年财报电话会议上表示,Oracle...

Spring Boot 自定义数据源设置,这些坑你踩过吗?

你在使用SpringBoot进行后端开发的过程中,是不是也遇到过这样的问题:项目上线后,数据库连接总是不稳定,偶尔还会出现数据读取缓慢的情况,严重影响了用户体验。经过排查,发现很大一部分原因竟然...

一个开箱即用的代码生成器(一个开箱即用的代码生成器是什么)

今天给大家推荐一个好用的代码生成器,名为renren-generator,该项目附带前端页面,可以很方便的选择我们所需要生成代码的表。首先我们通过git工具克隆下来代码(地址见文末),导入idea。...

低代码建模平台-数据挖掘平台(低代码平台的实现方式)

现在来看一下数据连接。·这里是管理数据连接的空间,点击这里可以新增一个数据连接。·输入连接名称,然后输入url,是通过gdbc的方式去连接的数据库,目前是支持mysql、oracle以及国产数据库达梦...

navicat 17.2.7连接oracle数据库提示加载oracle库失败

系统:macOS15.5navicat版本:navicatpremiumlite17.2.7连接oracle测试报错:加载oracle库失败【解决办法】:放达里面找到程序,显示简介里面勾选“使...

开源“Windows”ReactOS更新:支持全屏应用

IT之家6月17日消息,ReactOS团队昨日(6月16日)在X平台发布系列推文,公布了该系统的最新进展,包括升级Explorer组件,支持全屏应用,从Wine项目引入了...

SSL 推出采用全模拟内置混音技术的模拟调音台Oracle

英国调音台传奇品牌SolidStateLogic宣布推出Oracle——一款采用全模拟内置混音技术的调音台,在紧凑的AWS尺寸机箱内集成了大型调音台的功能。该调音台提供24输入和...

47道网络工程师常见面试题,看看有没有你不会的!

你们好,我的网工朋友。网络工程师面试的时候,都会被问到什么?这个问题其实很泛,一般来说,你肯定要先看明白岗位需求写的是什么。基本上都是围绕公司需要的业务去问的。但不可否认的是,那些最基础的概念,多少也...

汉得信息:发布EBS系统安装启用JWS的高效解决方案

e公司讯,从汉得信息获悉,近日,微软官方宣布InternetExplorer桌面应用程序将于2022年6月15日正式停用。目前大部分客户都是使用IE浏览器打开EBS的Form界面,IE停用后,只能使...

36.9K star ! 推荐一个酷炫低代码开发平台!功能太强!

前言最近在逛github,看看能不能搜罗到一些对自己有帮助的开源软件。不经意间看到一个高star的java开源项目:jeecg-boot。进入在线演示版一看,感叹实在是太牛了!此开源项目不管是给来学习...

Linux新手入门系列:Linux下jdk安装配置

本系列文章是把作者刚接触和学习Linux时候的实操记录分享出来,内容主要包括Linux入门的一些理论概念知识、Web程序、mysql数据库的简单安装部署,希望能够帮到一些初学者,少走一些弯路。注意:L...

手把手教你在嵌入式设备中使用SQLite3

摘要:数据库是用来存储和管理数据的专用软件,使得管理数据更加安全,方便和高效。数据库对数据的管理的基本单位是表(table),在嵌入式linux中有时候它也需要用到数据库,听起来好难,其实就是几个函数...

JAVA语言基础(java语言基础知识)

一、计算机的基本概念什么是计算机?计算机(Computer)全称:电子计算机,俗称电脑。是一种能够按照程序运行、自动高速处理海量数据的现代化智能电子设备。由硬件和软件组成、没有安装过任何软件的计算机称...

再见 Navicat!一款开源的 Web 数据库管理工具!

大家好,我是Java陈序员。在日常的开发工作中,常常需要与各种数据库打交道。而为了提高工作效率,常常会使用一些可视化工具进行操作数据库。今天,给大家介绍一款开源的数据库管理工具,无需下载安装软件,基...

取消回复欢迎 发表评论: