实时嵌入式数据库系统高可用性策略研究
星载高可靠性嵌入式数据库系统的设计与实现

Abstract:With the continuous development of domestic space technology,the amount of data on the satellite platform is increasing. In order to improve the data processing capability of the on-board embedded system,on the basis of fully considering the existing embedded database functionality,combined with the actual situation of limited hardware resources,we put forward a new implementation of the onboard embedded database based on FatFs file system to greatly reduce the system memory usage. At the same time,the program improves Hamming code fault-tolerant technology applied in the field of communication and combines it with the database system to effectively solve the single particle event easily appeared in the space borne data management system. The test proves that the scheme,which is correct and feasible,compared with the traditional embedded database,can meet the high reliability requirements of the on-board database system,and make up for the shortcomings of the traditional database system in the reliability design of data storage. Key words:satellite-carried embedded system;database;reliability;file system
基于嵌入式实时操作系统的程序设计

基于嵌入式实时操作系统的程序设计引言嵌入式系统在现代科技中扮演着重要的角色,而嵌入式实时操作系统(RTOS)则是嵌入式系统中一个关键的组成部分。
嵌入式实时操作系统的程序设计对于确保系统稳定性和可靠性至关重要。
本文将就嵌入式实时操作系统的程序设计进行全面、详细、完整且深入的探讨。
二级标题1:嵌入式实时操作系统概述嵌入式实时操作系统是一种特殊类型的操作系统,其目标是实时响应和控制嵌入式系统的任务。
它通常针对资源有限的系统设计,如传感器、手机和汽车等。
嵌入式实时操作系统需要满足以下三个关键特性: - 实时性:嵌入式实时操作系统必须能够满足严格的时间要求,并保证任务在规定的时间内完成。
- 可靠性:嵌入式实时操作系统必须具备高度的可靠性,能够应对各种异常情况并保持系统稳定。
- 高效性:嵌入式实时操作系统需要高效地利用系统资源,以最大程度地提高系统性能。
二级标题2:嵌入式实时操作系统的任务调度嵌入式实时操作系统通过任务调度来管理系统中的各个任务。
任务调度的目标是按照一定的策略和优先级来合理地分配系统资源和控制任务执行。
下面是常用的任务调度算法: 1. 先来先服务(FCFS)调度算法:按照任务到达的顺序进行调度,适用于任务长度相同时。
2. 最短作业优先(SJF)调度算法:按照任务所需的执行时间进行调度,适用于任务执行时间差异较大的情况。
3. 优先级调度算法:根据任务的优先级来决定任务的执行顺序,适用于对任务执行顺序有较高要求的情况。
4. 最短剩余时间优先(SRTF)调度算法:在SJF算法的基础上,根据任务剩余执行时间来进行调度,适用于任务的执行时间可以动态变化的情况。
二级标题3:嵌入式实时操作系统的任务通信在嵌入式系统中,各个任务之间需要进行通信,以便进行数据传输和协调工作。
以下是常用的任务通信机制: 1. 信号量:信号量用于控制对共享资源的访问,通过对信号量进行P(申请资源)和V(释放资源)操作来实现任务的同步和互斥。
一种两地三中心高可用数据库架构设计及验证测试

一种两地三中心高可用数据库架构设计及验证测试
李雁明;刘相坤;段应杰;王凯旋
【期刊名称】《铁路计算机应用》
【年(卷),期】2024(33)4
【摘要】目前,两地三中心已成为大型企业数据中心建设的主要模式,为企业提供更加安全、稳定、高效的信息化平台,保障企业信息系统安全高效运营,满足不同故障和灾难场景下对业务连续性的要求。
基于开源的关系型数据库管理系统PostgreSQL和开源的分布式协调服务ZooKeeper,文章设计了一种两地三中心高可用数据库架构,能够实现分布式事务一致性及故障场景下数据库高可用,并通过故障场景测试用例对其进行验证测试。
测试表明,按照该架构设计部署的两地三中心数据库,当常见故障发生时,数据库均可自动进行故障隔离,且数据零丢失,能够持续稳定地提供数据访问服务,不会影响到上层业务。
该数据库架构设计节约软件成本,透明可靠、安全性高,并可针对实际需要进行定制。
另外,数据存储介质使用的是服务器本地盘而非集中存储,有利于降低数据库建设成本和运维成本。
【总页数】6页(P12-17)
【作者】李雁明;刘相坤;段应杰;王凯旋
【作者单位】中国铁道科学研究院集团有限公司电子计算技术研究所
【正文语种】中文
【中图分类】U29;TP39
【相关文献】
1.“两地三中心”的业务连续性架构设计
2.针对数据库的两地三中心自动切换方法
3.关于新学科专业目录“艺术学”学科的几点解读
因版权原因,仅展示原文概要,查看原文内容请购买。
高可靠嵌入式实时操作系统NuttX

⾼可靠嵌⼊式实时操作系统NuttX NuttX实时操作系统概述NuttX是⼀个嵌⼊式实时操作系统(Embedded RTOS),它很⼩巧,在微控制器环境中使⽤。
NuttX主要遵循POSIX和ANSI标准开发,可从8位微控制器环境扩展到32位微控制器环境,对于在上述标准下不可⽤的功能,或者对于不适合嵌⼊式环境(如fork())的功能,采⽤了Unix和其他常见RTOS的其他标准API(例如VxWorks)。
NuttX⽀持ARM、Atmel AVR、x86、MIPS、OpenRISC、Renesas、RISC-V、Zilog、Misoc等多种CPU体系结构。
实时系统指系统的计算正确性不仅取决于计算的逻辑正确性,还取决于产⽣结果的时间。
如果未满⾜系统的时间约束,则认为系统失效。
⼀个实时操作系统⾯对变化的负载(从最⼩到最坏的情况)时必须确定性地保证满⾜时间要求。
实时系统指系统必须要满⾜确定性,⽽不是要求速度⾜够快。
例如,如果使⽤⾜够强⼤的CPU,Windows在CPU空闲时可以提供⾮常短的典型中断响应,但是,当某些后台任务正在运⾏时,有时候响应会变得⾮常漫长,以⾄于某⼀个简单的读取⽂件的任务会长时间⽆响应,甚⾄直接挂死。
并不是Windows不够快或效率不够⾼,⽽是因为它不能提供确定性,因此,Windows不是⼀个实时操作系统。
NuttX功能特性任务管理。
模块化设计。
完全抢占。
可扩展。
⾼度可配置。
可以轻松扩展到新的处理器架构。
⽀持FIFO, round-robin, and “sporadic”调度。
强实时,确定性并⽀持优先级继承。
任务管理,消息队列,计数信号量,时钟/计时器,信号,pthread线程,互斥锁,环境变量,⽂件系统。
类似于VxWorks的任务管理和看门狗计时器。
BSD套接字接⼝。
对称多处理(SMP)可加载的内核模块;轻量级的嵌⼊式共享库。
线程本地存储(TLS)内置线程CPU负载测量。
⾃定义NuttX C库。
一种嵌入式系统高可用冗余方案

嵌入式系统处理器、存储器存在受电磁干扰影响正常启动,系统可用性低问题。
本文从软件方面着手设计一套冗余方案,在不添加硬件成本的提前下提高系统可用性。
方案涉及看门狗保护启动阶段技术、U-Boot防串口干扰技术、U-Boot校验内核完整性和匹配技术、冗余双内核倒换技术、文件系统分区管理技术。
最后从多方面测试本方案的有效性,具有不错的应用前景。
1.引言嵌入式产品由于处理器、存储抗干扰能力不强,在高、低温下工作不稳定也可导致处理器跑飞。
业界嵌入式系统抗干扰和可靠性设计包括看门狗、指令冗余、数据校验、数模信号过滤(赵坤鹏,不依赖人重启。
看门狗定时器(Watchdog Timer )是一个电子定时器,用于监测计算机故障并从中恢复,在正常运行期间,计算机重置看门狗定时器以防止它超时,俗称“喂狗”,如果由于硬件故障、程序错误,计算机无法重置看门狗,定时器产生超时信号,信号通常使计算机重启(罗丹,王会燃,基于9263的嵌入式测控系统看门狗技术研究:软件导刊,2015;王彬,李文新,李得天,刘礼,通过看门狗软件设计提高抗干扰能力的方法:计算机技术与发展,2012)。
本设计中也采用看门狗监测系统故障:U-Boot 启动后立即打开看门狗,设置2s 看门狗超时,要求U-Boot 在这2s 内完成将内核从存储设备载入内存;若处于U-Boot 命令模式则设置60s 看门狗超时,一种嵌入式系统高可用冗余方案桂林聚联科技有限公司 蔡爱华 吴梦龙 阳 韬图1 存储器分区吴龙胜,马徐瀚,等.一种基于矩阵的并行CRC 校验算法:电子设计工程,2017;伍伟杰,嵌入式系统软件可靠性和抗干扰技术:电子产品可靠性与环境试验,2006)。
本文提供一种系统组织方案保障系统可靠性、可恢复性,可绕过有缺陷的内核,应用程序丢失可升级。
本系统由看门狗和5个存储分区组成,5分区分别存储U-Boot 、第一内核、第二内核、只读文件系统第一分区、可读写文件系统第二分区,如图1所示。
数据库管理技术的高可用性实现方法

数据库管理技术的高可用性实现方法在当今信息化的时代,数据库已经成为了企业和组织日常工作不可或缺的一部分。
然而,数据库管理系统的可用性一直是个值得关注的问题。
为了确保数据库系统的平稳运行和数据的安全性,高可用性的实现是非常必要的。
本文将介绍一些常用的数据库管理技术的高可用性实现方法,以帮助读者了解和应用这些技术来提高数据库系统的可用性。
1. 数据库复制数据库复制是一种常用的高可用性实现方法。
它通过将主库的数据复制到一个或多个备库来实现数据的冗余存储和高可用性。
当主库出现故障时,备库可以立即接管主库的工作,保证系统的可用性。
数据库复制可以采用同步复制或异步复制的方式。
同步复制要求备库必须与主库保持实时同步,确保数据的一致性;而异步复制则可以有一定的延迟,提高了数据同步的效率。
2. 数据库集群数据库集群是一种将多个数据库服务器连接起来形成一个逻辑上的整体,从而提高数据库系统的可用性和性能的方法。
数据库集群通常由主节点和多个从节点组成。
主节点负责处理用户提交的写请求,而从节点则用来处理读请求。
当主节点发生故障时,从节点中的一个会自动晋升为新的主节点。
数据库集群的好处在于它提供了水平扩展的能力,可以根据需要增加或减少节点的数量,以适应不同规模的应用需求。
3. 数据库备份与恢复数据库备份与恢复是一种保证数据安全和高可用性的重要手段。
通过定期对数据库进行备份,可以在数据库发生故障时快速恢复数据,减少系统停机时间。
在选择备份方案时,需要考虑到数据库的大小、备份的频率和备份的存储位置等因素。
同时,还需要测试备份和恢复的过程,以确保备份数据的完整性和可用性。
4. 数据库监控和故障检测数据库监控是保证数据库高可用性的关键环节之一。
通过对数据库系统的实时监控,可以及时发现故障和异常,采取相应的措施来预防和解决问题。
数据库监控可以包括对数据库性能指标的监测、对数据库资源的监控和对数据库操作的审计等。
同时,也可以通过故障检测来及时发现数据库中的硬件故障和软件故障,并采取相应的措施来修复。
高可用嵌入式系统设计与开发技术

高可用嵌入式系统设计与开发技术嵌入式系统已经成为现代社会中不可或缺的一部分,它在各个领域都有着广泛的应用,如汽车、机器人、无人机等。
对于很多应用场景来说,高可用性是嵌入式系统设计中的一个重要问题。
高可用性的嵌入式系统能够在出现任何错误或故障时都能够保证系统的正常运行,从而使得系统具有更好的可靠性和稳定性。
本文将介绍一些高可用嵌入式系统设计与开发技术。
一、可靠性和高可用性的概念在嵌入式系统设计中,可靠性是指系统能够保持在规定的环境、温度、湿度、电压等各种条件下正常运行的时间。
而高可用性则是指嵌入式系统在出现错误和故障时,依然可以保证系统的正常运行,并且系统的恢复时间应该尽可能地短。
在嵌入式系统设计中,可靠性和高可用性的实现需要依赖于多种技术。
其中包括硬件部分的冗余设计、错误检测与纠正、软件部分的实时操作系统和应用程序设计等。
下面将分别介绍这些技术。
二、硬件冗余设计嵌入式系统中通常采用双模块冗余或三模块冗余来实现硬件冗余设计。
这种设计方法将系统中的每一个模块复制一遍或两遍,只要任何一块模块出现故障,其他模块可以代替它进行工作。
这种方法可以有效地提高系统的可靠性和稳定性。
三、错误检测与纠正在硬件设计中,常用的错误检测与纠正技术有循环冗余校验(CRC)、哈希校验和(Hash)和重复发送等。
这些技术能够有效地检测和纠正数据传输中的错误,从而提高系统的可靠性。
在软件设计中,常用的错误检测与纠正技术有重试和回滚机制。
重试机制指的是在应用程序接收到返回错误的消息时重新发起请求并处理新请求。
回滚机制则是在出现错误时将系统状态恢复到之前正确的状态。
这些技术都可以避免一些错误的出现,提高系统的可靠性和稳定性。
四、实时操作系统实时操作系统是保证高可用性嵌入式系统的关键技术之一。
它具有实时性、可靠性和稳定性等特点,在很多实时控制领域都有广泛的应用。
实时操作系统通常分为软实时操作系统和硬实时操作系统两种。
软实时操作系统通常用于对实时性要求不是特别高的应用,而硬实时操作系统则是在时间限制内必须完成任务的应用。
实时系统中的实时数据库设计与实时数据管理方法(七)

实时系统中的实时数据库设计与实时数据管理方法引言:实时系统是一种对时间敏感的计算机系统,它要求系统能够实时地响应外部事件,并在规定的时间范围内完成任务。
在实时系统中,实时数据库的设计和数据管理方法是至关重要的。
本文将深入探讨实时系统中的实时数据库设计与实时数据管理方法。
一、实时数据库的设计原则实时数据库的设计需要考虑以下几个原则:1. 高可靠性:实时系统中的数据往往是关键数据,一旦丢失或错误将导致系统故障。
因此,实时数据库的设计必须具备高可靠性,采用冗余机制来保证数据的安全性。
2. 快速响应:实时系统对外部事件的响应时间要求严格,因此实时数据库的设计需要具备快速读写能力。
可以采用索引结构、缓存机制等方式来提高数据库的读写效率。
3. 高并发性:实时系统中需要处理大量的并发请求,因此实时数据库的设计需要具备高并发性。
可以采用分布式数据库、负载均衡等方式来提高数据库的并发处理能力。
4. 数据一致性:实时系统中的数据一致性是非常重要的,任何一次读写操作都必须保持数据的一致性。
可以采用事务管理、锁机制等方式来保证数据的一致性。
二、实时数据库的数据管理方法实时数据库的数据管理方法涉及到数据的存储、查询、更新等方面。
下面将介绍几种常用的实时数据库的数据管理方法:1. 数据存储:在实时系统中,数据的存储方式需要满足快速读写的需求。
可以采用内存数据库、闪存数据库等方式来提高数据的访问速度。
同时,为了保证数据的可靠性,可以采用数据冗余、备份等方式来进行数据存储。
2. 数据查询:实时系统中的数据查询需要快速响应,因此查询的效率是关键。
可以采用索引机制来提高查询的速度,同时可以采用数据划分、分片等方式来降低查询的负载。
3. 数据更新:实时系统中的数据更新需要及时生效,并保证数据的一致性。
可以采用事务管理机制来保证数据的一致性,同时可以采用缓存机制来提高数据更新的效率。
4. 数据同步:实时系统中的分布式环境下,数据同步是一个重要的问题。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实时嵌入式数据库系统高可用性策略研究摘要:针对实时嵌入式数据库对高可用性的需求,分析了大型数据库的高可用性解决方案,并依据嵌入式系统的特点,确立了实时嵌入式数据库高可用性策略应遵循的基本思想和关键技术。
提出了一种适用于实时嵌入式数据库的高可用性策略,该策略基于集群技术,采用主备模式,通过数据库复制的方式确保主、备数据库实例之间的数据一致性,并对数据库复制过程设置超时机制,使其具备实时性,并对主、备数据库实例的切换方式和高可用性的可移植性进行了设计。
关键词:实时嵌入式数据库;集群技术;高可用性策略0引言实时嵌入式数据库(RealTime Embedded DataBases,以下简称RTEDB)主要用于对可靠性和性能有较高要求的嵌入式系统,如网络通讯系统、工业控制系统、机载飞控与导航系统等。
与普通嵌入式数据库相比,RTEDB不仅具有体积小、可移植性好、直接与应用集成等嵌入式数据库的普遍特性,而且为了满足实时性要求,通常采用内存数据库,并且对索引、事务管理等数据处理策略进行了优化。
上述嵌入式系统中的数据库除了要满足实时性要求外,往往还需要具备高可用性(High Availability)。
高可用性数据库能够不间断地运行,不因软硬件故障而停止服务或丢失数据。
本文依据RTEDB的高可用性需求以及嵌入式系统环境和RTEDB本身的特点,从基本思想和策略设计两个方面对基于RTEDB的高可用性策略进行了研究。
1嵌入式数据库高可用性策略1.1总体架构大型数据库系统,如Oracle等,运用了多种技术来保证其高可用性,包括RAID技术、集群技术、数据库复制、硬件复制等。
上述方法中,RAID、数据库复制以及硬件复制技术需要大量冗余的硬件和额外的软件服务作为支撑,对于体积和资源都受限的嵌入式系统而言难以接受。
相比较而言,集群技术的思想更适合嵌入式系统。
高可用性实时嵌入式系统通常由多个计算单元或模块组成,相互之间通过数据总线或网络进行连接。
在多个计算单元或模块部署数据库,可以很方便地组成数据库集群,而且不需要额外的硬件和集群管理软件。
在此基础上,嵌入式数据库可以自己管理数据库集群,形成多个数据库之间的主备或互为备份的关系,保证数据库服务和数据的高可用性。
1.2配置方案基于集群的高可用性方案有主备模式、互备模式等多种配置方案。
由于实时嵌入式系统通常对并行性的要求较低,为了节省资源,RTEDB可采用主备模式实现高可用性。
在该模式中,一个数据库应用同时具有多个数据库实例,每个数据库实例都拥有相同的功能和数据拷贝。
主数据库实例直接为用户提供数据库服务,执行用户提交的数据库事务请求;备份数据库实例在主数据库实例正常的情况下不向用户提供服务,只作为主数据库实例的备份,一个主数据库实例可以同时对应多个备份数据库实例。
主数据库实例和各个备份数据库实例分别部署在不同的物理空间,比如部署在不同的计算单元或模块上,相互之间通过调用内部总线或者网络通信机制进行通信,保持数据一致,互为镜像。
当主数据库实例所在的硬件或软件出现故障,造成主数据库实例失效,备份数据库实例可以在短时间内发现主数据库实例失效,并自动取代主数据库实例,继续为用户提供服务。
通过以上配置,用户便能够不间断地使用数据库服务,保证了数据库系统的高可用性。
1.3关键技术高可用性RTEDB的关键问题在于如何保持位于不同计算单元或模块的数据库实例完全一致,并可以相互替代。
数据库实例的一致性可以通过数据库复制的方式来实现。
数据库复制实际上是对事务的复制,其过程如图1所示,当用户向主数据库实例发起数据库事务T 时,主数据库实例收到T后,不仅要自己执行事务T,还要将T复制到所有的备份数据库实例,让所有的备份数据库实例均执行事务T。
各个备份数据库实例自己执行事务T并将提交的结果如成功、失败或者超时等反馈给主数据库实例,只有当所有备份数据库实例执行事务T均返回成功时,主数据库实例的事务T才被确认为执行成功并进行提交。
这样,通过事务的复制,主数据库实例将自己的更新复制到了所有的备份数据库实例,确保了数据更新在主、备两端同时成功或失败,从而保持了数据库实例的一致性。
图1事务复制过程在数据库复制过程中,除了要考虑如何保持数据库实例一致,还需要考虑如何保证该过程的实时性。
高可用性策略的实时性保证面临的最大挑战是主、备数据库实例间通信延迟的不可预测,这样,需要用相应的超时设置来保证整个数据库复制过程的执行时间可预测,并能够将超时信息及时通知给用户。
本节通过对现有高可用性技术的分析,明确了RTEDB高可用性策略的基本思想,为RTEDB高可用性策略设计提供了指导。
2基于RTEDB的高可用性策略设计2.1数据库复制过程依据数据库复制的思想,数据库实例保持一致的过程实际上是主数据库实例不断地将自身的事务操作复制给备份数据库实例并共同执行的过程。
该过程划分为主、备数据库实例的初次数据复制和事务复制两个子过程。
完整的数据库复制过程如图2所示。
其中,初次数据复制只发生在备份数据库实例创建之初,而事务复制则伴随着主、备数据库实例的整个生命周期。
在主数据库实例已创建和启动后,当有新的备份数据库实例加入时,首先要进行主、备数据库实例间的初次数据复制。
在此过程中,主数据库实例将现有数据复制到备份数据库实例中,使主、备数据库实例间的数据保持一致。
初次数据复制的过程见图2。
主数据库实例首先发起一个事务T1,专门用于管理数据复制。
同时,备份数据库实例也发起一个事务T2用于管理该过程,并等待主数据库发送数据。
T1开始后,主数据库开始读取现有的数据,并向备份数据库实例发送。
备份数据库实例收到主数据库实例发来的数据,写入自己管理的数据库中。
主数据库的数据发送完毕,开始等待备份数据库实例对数据复制的确认。
当备份数据库实例数据库写入完毕,提交事务T2,若T2提交成功,则向主数据库实例发送对数据复制的确认。
主数据库实例收到确认信息,提交事务T1,此时,数据库实例间的初次数据复制完成。
在上述过程中,主数据库实例的事务T1要等到备份数据库实例的事务T2提交成功后才进行提交,确保了数据从主数据库实例正确地复制到了备份数据库实例。
主、备数据库实例在初次数据复制过后,主数据库实例继续进行正常的事务操作。
为了继续保持主、备数据库实例的一致性,还要不断地进行事务复制。
事务复制有同步事务复制和异步事务复制两种方式。
同步复制的过程见图2,其过程与初次数据复制基本相同:主数据库实例收到用户的事务请求T后,在执行的同时,将T通过通信的方式复制到各个备份数据库实例,然后等待所有的备份数据库实例执行T并返回执行成功,当所有的备份实例都执行T成功后,主数据库实例才向用户返回T执行成功。
同步事务复制可以完全保证主、备数据库实例间的数据一致。
对用户而言,由于要进行数据传输和等待备份数据实例执行完毕,事务处理速度会受到影响,但对于影响整个系统成败的关键任务而言,仍然是十分必要的。
并且,对于非关键任务而言,还可以采用异步事务复制。
与同步事务复制相比,异步事务复制中主数据库实例的事务T 不需要等待所有备份数据库实例执行T成功即可进行本地提交,备份数据实例也各自提交事务T。
异步事务复制不能够保证主、备实例完全一致,但可以提高性能,减少资源消耗,对于非关键任务也是可以接受的。
2.2实时性高可用性RTEDB数据库复制过程的实时性也非常关键。
为了保证实时性,实时嵌入式系统中的所有关键任务都有严格的截止期限制,在高可用性RTEDB中,主数据库实例和备份数据库实例的本地事务处理的实时性由RTEDB的其它功能模块保证。
对于高可用性策略而言,需要考虑的是如何在主数据库实例和备份数据库实例之间通信延迟不可预测的情况下实现两者之间数据交换和处理过程执行时间的确定性。
为此,RTEDB的高可用性策略需要加入相应的超时机制对整个数据复制过程进行控制。
该超时机制包括3个基本的超时设置:(1)初次同步超时时间INITIAL_TIMEOUT。
INITIAL_TIMEOUT 用于控制整个数据库实例初次数据复制过程,若初次数据复制耗时超过INITIAL_TIMEOUT,则主数据库实例认为该备份数据库实例无效,停止与该备份数据库实例进行数据复制,同时向数据库报告初次数据复制超时。
(2)事务复制超时时间REPLICA_TIMEOUT。
REPLICA_TIMEOUT用于控制同步事务复制过程中主数据库实例和备份数据库实例间的事务复制。
若主数据库实例发送事务T或者备份数据库实例接收T这一过程的时延超过了REPLICA_TIMEOUT的限制,对于前者,主数据库实例丢弃并回滚事务T;对于后者,备份数据库实例丢弃事务T并通知主数据库实例,主数据库实例回滚事务T。
最后由主数据库实例通知用户事务T执行超时。
(3)同步等待超时时间SYNC_TIMEOUT。
SYNC_TIMEOUT 用于控制主数据库实例等待备份数据库实例执行从主数据库实例收到的事务T的信息反馈时间。
主数据库实例不会一直等待备份数据库实例对事务T的执行,若超过了SYNC_TIMEOUT所规定的时间,即使备份数据库实例执行事务T成功,主数据库实例同样会认为事务T在备份数据库实例执行失败,回滚事务T的操作,通知用户事务T 执行超时。
一旦在主数据库实例与某个备份数据库实例通信过程中触发了上述3种超时设置中的一种,主数据库实例可以做出相应的处理,既可以向用户报告,也可以认为该备份数据库实例已失效,并将其排除在整个高可用性框架之外。
这样,整个数据库复制过程的各个操作都有严格的截止期限制,从而可预测其执行时间。
需要注意的是,上述超时机制只适用于同步事务复制方式,本文所设计的高可用性策略对于异步事务复制方式不提供实时性保证。
2.3主、备数据库实例切换主、备数据库实例通过心跳机制进行定期联络,一旦备份数据库与主数据库实例的联络超时,备份数据库便认为主数据库实例已经失效。
若只有一个备份数据库实例,该实例自动成为新的主数据库实例,并向主数据库实例发送一个信号,以“杀死”主数据库实例,即使主数据库实例实际上还在运行,也将被强行停止。
当有多个备份数据库实例时,则需要一种竞争机制来决定选择哪个备份实例作为新的主实例。
在本文所设计的高可用性策略中,备份数据库实例的竞争通过比较各个备份数据库实例的事务序列号来进行,事务序列号是已提交的事务标识,由主数据库实例创建和记录。
新提交的事务序列号一定大于之前提交的事务序列号,并由主数据库实例在事务复制时发送到各个备份数据库实例。
当有多个备份数据库实例竞争成为主数据库实例时,数据库会选择当前事务序列号最大的,即数据最新的备份数据库实例为主数据库实例。
若多个备份实例的事务序列号均为最大值,则在其中随机选择一个,然后“杀死”主数据库实例。