(3)同步等待超时时间SYNC_TIMEOUT。SYNC_TIMEOUT用于控制主数据库实例等待备份数据库实例执行从主数据库实例收到的事务T的信息反馈时间。主数据库实例不会一直等待备份数据库实例对事务T的执行,若超过了SYNC_TIMEOUT所规定的时间,即使备份数据库实例执行事务T成功,主数据库实例同样会认为事务T在备份数据库实例执行失败,回滚事务T的操作,通知用户事务T执行超时。 一旦在主数据库实例与某个备份数据库实例通信过程中触发了上述3种超时设置中的一种,主数据库实例可以做出相应的处理,既可以向用户报告,也可以认为该备份数据库实例已失效,并将其排除在整个高可用性框架之外。这样,整个数据库复制过程的各个操作都有严格的截止期限制,从而可预测其执行时间。 需要注意的是,上述超时机制只适用于同步事务复制方式,本文所设计的高可用性策略对于异步事务复制方式不提供实时性保证。 2.3主、备数据库实例切换 主、备数据库实例通过心跳机制进行定期联络,一旦备份数据库与主数据库实例的联络超时,备份数据库便认为主数据库实例已经失效。若只有一个备份数据库实例,该实例自动成为新的主数据库实例,并向主数据库实例发送一个信号,以"杀死"主数据库实例,即使主数据库实例实际上还在运行,也将被强行停止。 当有多个备份数据库实例时,则需要一种竞争机制来决定选择哪个备份实例作为新的主实例。在本文所设计的高可用性策略中,备份数据库实例的竞争通过比较各个备份数据库实例的事务序列号来进行,事务序列号是已提交的事务标识,由主数据库实例创建和记录。新提交的事务序列号一定大于之前提交的事务序列号,并由主数据库实例在事务复制时发送到各个备份数据库实例。当有多个备份数据库实例竞争成为主数据库实例时,数据库会选择当前事务序列号最大的,即数据最新的备份数据库实例为主数据库实例。若多个备份实例的事务序列号均为最大值,则在其中随机选择一个,然后"杀死"主数据库实例。 2.4可移植性 RTEDB作为嵌入式软件,应当具有较强的可移植性,以适应不同的软硬件平台。由于高可用性RTEDB需要主、备数据库实例间进行可靠的通信,因此,高可用性策略应当具有较好的针对通信方式的可移植性。 高可用性通信的移植性可通过通信抽象层实现,通信抽象层介于高可用性功能与底层通信功能之间,屏蔽了底层通信的细节,对上层而言,其功能及相关接口固定,RTEDB调用通信抽象层即可实现数据的发送、接收等功能。对于底层通信而言,则需要依据通信抽象层的要求以及实际使用的通信方式,进行相应的移植工作。这样,对于当底层通信机制发生变化时,只需要修改底层通信功能的实现方式,而不需要对高可用性功能本身进行开发工作。 3结语 某些嵌入式系统中某些关键的数据应用需要不间断地运行和提供服务,不允许发生停止服务和数据丢失等情况,这就要求实时嵌入式数据库具备高可用性。本文在分析了现有大型数据库的高可用性技术的基础上,提出了一种针对实时嵌入式数据库的高可用性策略。该策略基于大型数据库的集群技术,采用主备数据库实例模式,主备数据库实例间采用数据库复制的方式保持数据一致性,并通过超时机制保证整个数据库复制过程的实时性。在主数据库实例失效,切换到备份数据库实例时,采用了记录和比较事务序列号的方法,保证数据最新的备份实例成为主实例。此外,还对高可用性功能的可移植性进行了考虑。 参考文献参考文献: [1]万玛宁,关永.韩相军.嵌入式数据库典型技术SQLite和BerkeleyDB的研究[J].微计算机信息,2006(2). [2]史恒亮,白光一.嵌入式数据库的现状和发展趋势[J].计算机系统应用,2010(2). [3]于雪平,孟丹.数据库应用的高可用性及实现技术[J].计算机应用研究,2004(5). [4]付社良,田斌.OracleRAC10g系统高可用性测试及分析[J].武汉理工大学学报:信息与管理工程版,2007(2). |