N+1备份的数据实时同步方法

文档序号:7612649阅读:912来源:国知局
专利名称:N+1备份的数据实时同步方法
技术领域
本发明涉及通信领域的数据高可靠性,提供了一种N+1备份的数据实时同步方法及其装置,实现一个板卡为多个板卡提供数据的实时备份服务。
背景技术
通信领域中,为了提高系统的高可靠性,对一些关键设备采用1+1备份的方式,保证数据的不丢失和业务的不中断。通常一块板卡具有独立的处理器、内存、网络接口和存储子系统。如果有N块板卡,那么需要配置N块备份板,这种1+1备份方式的系统成本很高。如果主、备板卡位于机框内部,由于机框插槽的数目有限,这种2N的配置方式也难以实现。此外1+1备份方式的资源的利用也不充分,在不对称备份模式下,板卡的空闲比率为1/1。
在现有技术中已经公开了多种数据同步或备份的技术。通常利用这些技术,以便实现对主备板上的数据实现同步,达到实时的一致性,进而实现高可靠性和负载均衡。此外引入数据同步功能,不能严重损害主数据库存取效率。
中国专利文献02103019.7公开了通信系统中主备板数据实时同步的方法,在主、备设置一数据缓冲区;当主板数据修改时,向其缓冲区中写入主板修改过的数据;缓冲区对数据进行处理;当缓冲区数据量达到一定时,主板实时同步进程从缓冲区中读数据并发送到备板实时同步进程;更新备板数据库,并将操作结果返回给主板;如果操作结果是同步成功,则删除缓冲区中相应的数据,否则重新发送数据,直至缓冲区内记录为空。
这种同步方法存在若干问题,首先是同步缓冲区的限制。如果主备失步时间较长,主板需要缓存大量数据,甚至造成缓冲区的溢出。其次是效率问题。只有在更新了备板数据库,并将操作结果返回给主板,同步操作才完成,因此主板必须等待备板的更新操作,这会给数据同步带来了延迟。还有安全性问题。该方法的同步原理是将主板的数据库操作在备板重做,达到数据一致性。这种做法不仅有执行效率问题,更重要的是可能存在危险性,因为在主板上错误执行的数据库操作,同样会传播到备板上,使得备板很难发挥数据容灾的作用。最后该同步数据的传输方法存在局限性。使用重发机制按照缓冲区排队的顺序发送同步数据,缺乏灵活性,备板只能被动的接受同步数据,没有主动纠错的能力。
中国专利文献02111898.1公开了一种主备冗余系统中的数据同步方法,该方法是当主备用节点触发同步时,主用节点通过数据获取函数,轮询主用节点中每一个模块各个对象,获取需要同步的数据,再将所有数据排列在一定的内存区域,然后进行压缩并传送到备用节点,备用节点接收到同步数据后,执行上述操作的逆过程,从而实现了主、备用节点的数据同步。该方法实现了同步数据的统一管理,但是它的缺点也是明显的。首先轮询的效率比较低下。此外统一管理的方法会影响各个模块同步的实时性。
如果系统不允许备板随时加入,且不支持主备的异步启动,则系统的可扩展性无从谈起。系统应该处理主备启动顺序的各种组合情况,保证数据同步的正确性。
除了正常情况下的数据同步外,还存在由于网路等故障导致备板和主板之间出现主备失步的情况,如果不能快速的实现主、备间的重新同步,将会影响数据同步的效率和实时性。

发明内容
本发明的目的是为了克服1+1数据备份高可靠性方案的高成本的问题,提供N+1备份的数据实时同步方法,实现一个节点为多个节点提供数据的实时备份服务。本发明允许备份节点随时加入到备份系统中,支持主备的异步启动,使得系统具有良好的可扩展性。本发明还实现了一种主备失步情况下的快速同步方法。
本发明的技术方案是N+1备份的数据实时同步方法,其特征在于N≥1,采用一备N主的备份结构,使用同步链表反映主备间动态的同步关系,同步链表记录备板的逻辑标识、套接字信息;主板依照同步链表实时将同步数据,即数据更新导出的数据修改集和时间戳,异步发送到备板,并在外存储文件记录同步数据;标识数据更新次序的时间戳使用同步数据所在文件的序列号和在文件中的偏移量组合表示;备板负责接收同步数据和检测同步数据的完整性,根据同步数据的时间戳备份数据或主动向主板请求丢失的同步数据后备份数据。
如上所述的N+1备份的数据实时同步方法,其特征在于采用下列步骤主板上采取的步骤包括步骤1所有主板初始化一个同步链表,用于记录板卡及其属性;同步链表初始状态设置为空。步骤2启动独立的同步监听线程,确认同步请求;各个数据库使用同一个监听线程,监听线程通过数据库名称确认不同的数据同步请求。
步骤3在同步链表中记录备板的逻辑标识、套接字信息,确定同步数据的转发位置;启动独立的同步处理线程,负责同步数据的接收和处理。
步骤4在主板数据的更新预提交前,检查同步链表的备份对象;如果不存在则执行步骤5;预提交状态的定义是,本地数据库更新已经基本完成,只是还没有最终提交。
步骤5各主板实时的将同步数据发送到备板;如果检测链路失败,则在同步链表中注销备板;同时每条同步数据维护一个时间戳;通信使用无连接协议,保证对端接收的同步数据的正确性,但不需要保证数据的顺序和完整性。在应用层处理了同步数据丢失、失序的情况。
主板不需要等待备板同步的执行结果,减少主备间交互,提高了数据的同步效率。
由于主备板采用了不同的方式更新数据库,提高了数据库的存取效率和容错能力。
步骤6在本地文件上记录同步数据,并提交数据更新;主板定期删除不活动的文件。如果存储空间低于一定的阀值,则按照文件逻辑序号大小,删除不活动的同步数据文件,回收存储空间;如果备板需要访问已经删除的文件,则备板和主板已经失步太久,备板需要重新启动备板数据库,执行数据库恢复过程。
通常外存储的空间远大于内存缓冲区的存储空间,足够容纳主备长时间失步后没有同步到备板的数据,防止了同步数据的丢失。
步骤7循环执行步骤(4)-(6),直到收到主备切换或数据库关闭消息。
备板上采取的步骤包括步骤1启动若干个同步请求线程,申请并确定和各个主板的数据同步关系;同步请求线程需要使用配置文件获取各个主板的数据配置、网络位置等参数以发起连接请求,在主板确认以后,连接线程自动退出;以上过程都是异步进行,以保证效率。
步骤2记录主板及其属性,启动独立的同步处理线程,负责同步数据的接收和处理。该步骤和主板上采取的步骤3类似,负责接受、处理对端的同步数据。
步骤3接收同步数据,检查同步数据的时间戳,如果等于当前所需的时间戳,则更新数据库;如果大于当前所需的同步数据的时间戳,则在临时文件缓存该同步数据,检查临时文件是否有所需的同步数据,存在则更新数据库;如果不存在则向主板请求所需的同步数据,并更新数据库。除了检查时间戳,备板还检查同步数据的完整性,并对接收的同步数据按照时间戳排序;如果检测到同步数据发生次序紊乱或者丢失的情况,备板主动向主板请求发送所需的同步数据。具有主动纠错能力。
步骤4计算最新的同步数据的时间戳,并检查临时文件是否有可用的同步数据;存在则更新数据库,否则转向步骤3。
步骤5循环执行步骤(3)-(4),直到收到主备切换或数据库关闭消息。
以上步骤3,实现了一种主备失步情况下的快速同步方法。失步判定条件是备板上收到的同步数据的时间戳大于本地所需同步数据的时间戳,这说明部分同步数据丢失了,需要从主板获取。即使收到的同步数据的时间戳大于本地所需同步数据的时间戳也不丢弃,而是缓存到本地的临时文件中,最大限度利用同步数据和网络带宽,并发处理主备失步数据。如果备板跟上了主板的数据更新频率,则退出主备失步的处理。如果不支持主备的异步启动,则允许备板随时加入到备份系统就无从谈起。必须保证主备启动的各种组合顺序不会影响备份系统同步的正确性。
支持主备的异步启动,具体采取以下步骤步骤1数据库启动前,检查板卡的状态。
步骤2如果数据库要设定的状态为备,执行步骤(5)。
步骤3检查本板的状态是否为主,否则等待直到超时报错。
步骤4设定数据库状态为主,返回。
步骤5检查本板状态是否为备和所有关联板的状态是否为主。否则等待直到超时报错。
步骤6设定数据库状态为备,返回。
本发明的优点如下①降低了高可靠系统的成本,资源的利用率高,易于扩展。在N+1机构的系统中,每N块板配置一块备份板,资源的空闲比率为1∶N。
②允许备份节点随时加入到备份系统中,支持主备异步启动,实现系统的可扩展性。
③处理了网路异常时出现主备失步的情况,实现一种后台自动进行快速数据同步的方法。
④提高数据库的高可用性。如果任何单板发生故障,备板负责恢复故障板卡的数据服务。
⑤不需要额外的硬件设备,具有一定的通用性。
虽然已经详细的公开和说明了本发明,但是本领域的技术人员会理解无需脱离本发明的精神和保护范围,就可以做出过各种形式上和细节上的改变。


图1,本发明的N+1备份装置的结构图。
具体实施例方式
下面对本发明的实施例作进一步的详细描述。
对于通信设备的重要板卡基本上采用1+1的热备方式。对那些高可靠性要求较低,有严格成本控制的设备,需要在设备的冗余度、服务等级期望以及系统成本和复杂性之间取得一个平衡,N+1备份是一个更合适的解决方法,本发明就是为了解决一个节点为多个节点提供数据的实时备份服务的问题。
图1是N+1备份装置的结构示意图。这个装置由N+1个板卡通过以太网互联而成。N块板卡具有各自独立的处理器、存储子系统、内存和网络接口设备,一个或多个数据库运行在主处理板之上。只有一个备板负责接收来自N块主板的同步数据,并保持和各个主板的数据实时一致性。板卡可以位于相同或独立的机框内,物理上具有松耦合性。
主板上的数据库具有相对独立性,备板需要主动向主板注册建立相关性,备板发生故障不会影响主板的正常的数据操作。主板上的数据流通过建立好的同步链路转发到备板上,实现多对一的数据备份。备板上的数据库统一管理,其子数据库和各个主板数据库存在映射关系,而且这种映射关系可以是异步建立的,具有并发性和高效的优点。子数据库使用不同的工作区域,保证子数据库不相互干扰。
下面以主备实时同步中主备交互过程为例,说明本方法步骤1,配置备份系统的N为2,即存在两块主板和一块备板。IP依次设定为90.0.1,90.0.2和90.0.3。主板1上的数据工作区为/dev/A1,数据逻辑标识为A1,主板2上的数据工作区为/dev/A2,数据逻辑标识为A2。备板的数据逻辑标识为A3,存在两个数据工作区和主板对应。
步骤2,独立启动主板1,2的数据库应用程序。
步骤3,启动备板的数据库应用程序,则备板分别连接主板1和主板2,建立主备同步关系。主备板相应更新同步链表,反映当前的同步关系。
步骤4,主板1发生数据更新形成同步数据。同步数据包括时间戳和数据长度等消息头。主板检查同步链表有备板成员A3,其所属的IP为90.0.0.3,则主板使用UDP协议,将同步数据发送给90.0.0.2所在的板卡。然后在本地存储设备的同步数据文件上追加记录。如果同步数据文件超过一定的大小如5MB,则新建一个同步数据文件,并自动增加其逻辑序号。主板1还会定期检查磁盘空间,删除不活动的同步数据文件。步骤5,备板接收来自主板1的同步数据,并检查同步消息的时间戳。接收的同步数据时间戳为备板当前所需的时间戳,则根据同步数据的修改集内容,更新备板数据库,同时相对备板上/dev/A1的位置,在同步数据文件上追加记录。备板也要检查同步数据文件的大小,并执行相同的文件操作。步骤6,如果主板2也发生了数据更新,使用相同的步骤。但备板接受到同步数据后,使用备板上工作区/dev/A2,保证同步数据间不会干扰。
步骤7,循环执行步骤4~6,主板1、2上的数据更新就实时同步到了备板。
如果主板1和备板的通信链路出现了故障,持续了30秒左右。这一时期的同步数据将全部丢失,发生了主备失步,主备失步的处理步骤如下步骤1,主板1和备板的通信链路恢复正常,主板将当前的同步数据继续发送到备板。
步骤2,备板收到了同步数据的记录,还要检查同步数据的时间戳,发现接收的时间戳100大于当前需要的时间戳50。备板首先缓存同步数据,并检查备板的临时文件是否有完整的等于时间戳50的同步数据。结果没有查询到满足条件的,备板根据同步链表,向90.0.1请求丢失同步数据50至99。
步骤3,主板1接收到了备板的同步数据的请求,从同步数据文件提取同步数据50至99,并发送到备板90.0.3。
步骤4,备板接收丢失的同步数据50至99,计算最新时间戳。
处理步骤1至4期间,备板同时接收最前的同步数据,并缓存到临时文件中。当主备失步处理完成后,备板还要检查临时文件中的同步数据,利用临时文件更新数据库,然后再次等待同步数据的发送。
本发明已经在嵌入式环境的数据库上进行了应用实施,达到了预期的目的。实现了一台设备为多台设备进行实时的数据备份,运行稳定,数据同步效率高,不需要额外的硬件设备,具有一定的通用性。本发明增强了系统的高可靠性,在出现网路或单板故障时可快速恢复故障板数据,实现主备切换,从定位故障到切换完成通常在数十毫秒到数百毫秒之间。
权利要求
1.N+1备份的数据实时同步方法,其特征在于N≥1,采用一备N主的备份结构,使用同步链表反映主备间动态的同步关系,同步链表记录备板的逻辑标识、套接字信息;主板依照同步链表实时将同步数据,即数据更新导出的数据修改集和时间戳,异步发送到备板,并在外存储文件记录同步数据;标识数据更新次序的时间戳使用同步数据所在文件的序列号和在文件中的偏移量组合表示;备板负责接收同步数据和检测同步数据的完整性,根据同步数据的时间戳备份数据或主动向主板请求丢失的同步数据后备份数据。
2.如权利要求1所述的N+1备份的数据实时同步的方法,其特征在于主、备板采取以下步骤主板上采取的步骤包括步骤1主板初始化一个同步链表,用于记录板卡及其属性;步骤2启动独立的同步监听线程,确认同步请求;各个数据库使用同一个监听线程,监听线程通过数据库名称确认不同的数据同步请求;步骤3在同步链表中记录备板的逻辑标识、套接字信息,确定同步数据的转发位置;启动独立的同步处理线程,负责同步数据的接收和处理;步骤4在主板数据的更新预提交前,检查同步链表的备份对象;如果不存在则执行步骤5;步骤5将同步数据发送到备板;如果发送失败,则在同步链表中注销备板对象;同时每条同步数据维护一个标识更新次序的时间戳;数据通信使用无连接协议,保证对端接收的同步数据是正确的,不需要保证同步数据的顺序和完整性;步骤6在本地文件上记录同步数据,并提交数据更新;主板定期删除不活动的同步数据文件;步骤7循环执行步骤(4)-(6),直到收到主备切换或数据库关闭消息;备板采取的步骤包括步骤1启动若干个同步请求线程,申请并确定和各个主板的数据同步关系;步骤2记录主板及其属性,启动独立的同步处理线程,负责同步数据的接收和处理;步骤3接收同步数据,检查同步数据的时间戳,如果等于当前所需的时间戳,则更新数据库;如果大于当前所需的同步数据的时间戳,则在临时文件缓存该同步数据,检查临时文件是否有所需的同步数据,存在则更新数据库;如果不存在则向主板请求所需的同步数据,并更新数据库;除了检查时间戳,还检查同步数据的完整性,并对接收的同步数据按照时间戳排序;步骤4计算最新的同步数据的时间戳,并检查临时文件是否有可用的同步数据;存在则更新数据库,否则转向步骤3;步骤5循环执行步骤(3)-(4),直到收到主备切换或数据库关闭消息。
3.如上所述的N+1备份的数据实时同步的方法,其特征在于支持主备的异步启动,具体采取以下步骤步骤1数据库启动前,检查板卡的状态;步骤2如果数据库要设定的状态为备,执行步骤(5);步骤3检查本板的状态是否为主,否则等待直到超时报错;步骤4设定数据库状态为主,返回;步骤5检查本板状态是否为备和所有关联板的状态是否为主;否则等待直到超时报错;步骤6设定数据库状态为备,返回。
全文摘要
N+1备份的数据实时同步方法,其特征在于N≥1,采用一备N主的备份结构,使用同步链表反映主备间动态的同步关系,同步链表记录备板的逻辑标识、套接字信息;主板依照同步链表实时将同步数据,即数据更新导出的数据修改集和时间戳,异步发送到备板,并在外存储文件记录同步数据;标识数据更新次序的时间戳使用同步数据所在文件的序列号和在文件中的偏移量组合表示;备板负责接收同步数据和检测同步数据的完整性,根据同步数据的时间戳备份数据或主动向主板请求丢失的同步数据后备份数据。实现一个板卡为多个板卡提供实时数据备份服务的功能;允许备板随时加入备份系统,实现系统的可扩展性。本发明还附带实现了一种主备失步的快速同步方法。
文档编号H04B1/74GK1677887SQ20051001823
公开日2005年10月5日 申请日期2005年2月1日 优先权日2005年2月1日
发明者涂小明, 陈勇, 叶磊 申请人:北京北方烽火科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1