著录项信息
专利名称 | 一种多数据库数据同步方法 |
申请号 | CN200410070619.6 | 申请日期 | 2004-07-23 |
法律状态 | 权利终止 | 申报国家 | 中国 |
公开/公告日 | 2006-01-25 | 公开/公告号 | CN1725186 |
优先权 | 暂无 | 优先权号 | 暂无 |
主分类号 | G06F11/14 | IPC分类号 | G;0;6;F;1;1;/;1;4;;;G;0;6;F;1;7;/;3;0查看分类表>
|
申请人 | 中兴通讯股份有限公司 | 申请人地址 | 广东省深圳市南山区高新技术产业园科技南路中兴通讯大厦法律部
变更
专利地址、主体等相关变化,请及时变更,防止失效 |
权利人 | 中兴通讯股份有限公司 | 当前权利人 | 中兴通讯股份有限公司 |
发明人 | 肖旸;胡首锋;许诤 |
代理机构 | 暂无 | 代理人 | 暂无 |
摘要
本发明公开了一种多数据库数据同步方法,对数据同步采收发分离机制,数据同步的实时性和正确性由实时同步、定时器轮询所有失步队列和所有数据同步3个层面共同保证。采用本发明的方法可以提高数据同步的效率,即使偶尔丢失消息包也不会对数据完整性产生影响,而且缓冲区只存放修改记录的关键字,占用缓存空间较小。
1.一种多数据库数据同步方法,其特征在于,所述方法包括以下处理步骤:
步骤一,初始化所有目标数据库的失步队列;
步骤二,当主数据库发生变化时,将变化表记录的关键字写入各目标数据库的失步 队列,用唯一的ID号标识所述关键字在失步队列中的位置,并向所有目标数据库发送 失步记录内容;
步骤三,目标数据库接收数据,并更新相应表记录,向主数据库返回应答消息,消 息内含有更新成功的失步记录的ID号;
步骤四,主数据库根据应答消息内的ID号,将该目标数据库的失步队列内对应的失 步记录清除。
2.如权利要求1所述的方法,其特征在于,步骤一进一步包括设定一个周期定时器, 当定时周期到时,则
根据各目标数据库的失步队列内记录的关键字,从主数据库中读失步记录,将其 发送到目标数据库;并转步骤三执行。
3.如权利要求1或2所述的方法,其特征在于,当某个目标数据库的失步队列溢出 时,执行以下同步处理过程:
i清空该溢出的失步队列,并将该失步队列加锁禁止读写,同时向该失步队列对应 的目标数据库发送批量同步请求;
ii主数据库接收到该失步队列对应的目标数据库批量同步应答消息后,将主数据库 所有需要同步的数据全部存储到内存缓冲区,并将所述失步队列解锁;
iii主数据库将数据打包成同步数据包发送给目标数据库;
iv目标数据库接收同步数据包,进行批量更新表记录。
4.如权利要求3所述的方法,其特征在于,如果步骤iv中该失步队列对应的目标数 据库反馈同步不成功消息,主数据库重复发送同步数据包给该失步队列对应的目 标数据库。
5.如权利要求3所述的方法,其特征在于,所述步骤iii中主数据库将数据打成多个 同步数据包发送给该失步队列对应的目标数据库,每次发送一包数据,并设定同 步超时定时器;
然后主数据库收到该失步队列对应的目标数据库发送的成功应答消息后,发送下一 个包;
如果收到失败应答或同步超时定时器超时则重复发送同步数据包。
6.如权利要求5所述的方法,其特征在于,还设定重复发送同步数据包次数的阈值, 达到阈值则不再发送,系统告警并宣布本次批量同步失败。
技术领域\n本发明涉及数据库的数据同步领域,具体地讲,提供了一种基于异步消息机制的收 发分离数据同步实现方法。\n背景技术\n在很多系统中都有数据同步的需求,保证多模块的数据都要一致,而且要考虑实时 性和正确性。申请号为02103019.7的中国专利提出了一种通信系统中主备板数据实时 同步的方法,提供了一种内存数据库主备同步的方案。此专利在主、备板中各设置一数 据缓冲区;当主板数据修改时,向其缓冲区中写入主板修改过的数据;缓冲区对数据进 行处理;当缓冲区数据量达到一定时,主板实时同步进程从缓冲区中读数据并发送到备 板实时同步进程;更新备板数据库,并将操作结果返回给主板;如果操作结果是同步成 功,则删除缓冲区中相应的数据,否则重新发送数据,直至缓冲区内记录为空。\n1、原有技术在主板缓冲区达到一定数量时才会触发主备同步,实时性不够好。 我们发明只要主数据库发生变化就向目标数据库同步。\n2、原有技术采用发送数据包后,主机等待备机应答后才做下一步处理。 我们发明采用收发分离方法,主数据库发送数据不需要等待目标数据库应答,数据同步 效率比较高。\n3、原有技术缓冲区存放的是所有变化数据,空间占用比较多。 我们的发明缓冲区只存放修改记录的关键字,占用空间较小。\n4、如果对同一索引记录频繁修改,原有方法会造成缓冲区利用率不高。 我们发明由于缓冲区只存放关键字,所以对同一记录反复修改在数据两次同步之间等同 于只修改2次,大大提高同步效率,并保证数据的一致性。\n发明内容\n本发明提出了一种多数据库数据同步方法,基于异步消息机制,并结合了数据处理 要求效率高、实时性强的特点,使不同模块间的数据同步保证了实时性,且传输量降低 到最低程度;同时,通过异步消息机制保证了数据同步的正确性,也提高了数据同步的 效率。\n本发明提出的多数据库数据同步方法,包括以下处理步骤:\n步骤一,初始化所有目标数据库的失步队列;\n步骤二,当主数据库发生变化时,将变化表记录的关键字写入各目标数据库的失步 队列,用唯一的ID号标识其在失步队列中的位置,并向所有目标数据库发送失步记录 内容;\n步骤三,目标数据库接收数据,并更新相应表记录,向主数据库返回应答消息,消 息内含有更新成功的失步记录的ID号;\n步骤四,主数据库端根据响应消息内的ID号,将该目标数据库的失步队列内对应 的失步记录清除。\n优选地,步骤一进一步包括设定一个周期定时器,当定时周期到时,则根据各目标 数据库的失步队列内记录的关键字,从主数据库中读失步记录,将其发送到目标数据库; 并转步骤三执行。\n优选地,当某个目标数据库的失步队列溢出时,执行以下同步处理过程:\ni清空该溢出的失步队列,并将该队列加锁禁止读写,同时向该失步队列对应的目 标数据库发送批量同步请求;\nii主数据接收到该目标数据库批量同步应答消息后,将主数据库所有需要同步的数 据全部存储到内存缓冲区,并将所述失步队列解锁;\niii主数据库将数据打包成同步数据包发送给目标数据库;\niv目标数据库接收同步数据包,进行批量更新表记录。\n优选地,如果步骤iv中目标数据库反馈同步不成功消息,主数据库重复发送同步数 据包给该目标数据库。\n优选地,所述步骤iii中主数据库可以将数据打成多个同步数据包发送给目标数据 库,每次发送一包数据,并设定同步超时定时器;\n然后主数据库收到目标数据库发送的成功应答消息后,发送下一个包;\n如果收到失败应答或定时器超时则重复发送同步数据包。\n优选地,还可以设定重复发送同步数据包次数的阈值,达到阈值则不再发送,系统 告警并宣布本次批量同步失败。\n采用本发明所述的方法,具有以下优点:\n1.数据同步采收发分离机制,从而加快数据传输;即使偶尔丢失消息包也不 会对数据完整性产生影响。\n2.队列所需空间大小依据应用情况确定,以不频繁发生所有数据同步为准, 且需要保存信息少,所以空间要求不大。\n3.数据同步的实时性和正确性由实时同步、定时器轮询所有失步队列和所有 数据同步3个层面共同保证。\n附图说明\n图1是本发明多数据库数据同步系统框架图;\n图2是本发明数据同步方法中实时同步和定时器轮询失步队列同步的处理流程图;\n图3是本发明数据同步方法中批量数据同步处理流程图。\n具体实施方式\n下面列举一种应用于前后台数据同步的实施方案,其系统架构如图1。后台系统作 为源模块,其数据库采用商用数据库;前台系统作为目的模块,其数据库是内存数据库。 每次后台数据修改后,都要通过实时同步、定时器轮询和所有数据同步3个措施,同时 向多个前台模块同步数据。数据同步流程如图2所示,具体实现步骤如下:\n1.为每个前台模块建立数据失步队列,并初始化失步队列和传输数据控制区(即 队列管理信息),设定轮询周期定时器timer1。\n1)数据失步队列:描述数据失步信息;\n 目标模 块标识 各缓冲 区状态 失步队 列元素个 数 失步队 列哑元 失步队 列状态 目标模块1缓冲区 ...... 目标模块n缓冲区\n2)队列管理信息:描述队列的状态;\n2.把对数据的每一次操作(包括增加、修改、删除数据)将变化表记录的关键字 (即失步记录关键值)插入到所有失步队列中,并用唯一的ID号来标记该操作 在队列中的位置。队列只需记录查找数据的关键值,而不记录此次数据操作类 型。如果由于数据操作非常频繁,而数据实时同步和定时同步来不及处理,导 致数据失步队列溢出,则清空失步队列并加锁防止读写,同时标记该失步队列 为等待同步状态。\n3.系统从失步队列中取失步记录关键值,并查询相应的数据,依据查询结果来确 定操作类型(有数据则为修改,无数据则为删除),把失步数据向前台模块发 送。\n4.前台模块接收数据,更新相应的表记录,并向后台反馈更新成功与否的消息, 消息内包含该记录在失步队列的ID号。\n5.源模块依据反馈的同步结果来处理:如果同步成功,则依据ID号从失步队列 中删除该条数据操作信息,否则保留该数据操作信息等待定时器定时轮询处 理。\n6.timer1定时到,则所有失步队列进行轮询。如果该失步队列处于等待同步且非 正在同步状态,则转步骤7~11的批量同步过程,如图3所示。如果该失步队 列正常(非处于等待同步或正在同步状态),则从队列中取若干(最大处理条 数可以依据系统性能进行调整)失步记录向前台同步,其过程如步骤3~5。\n7.批量同步过程,即对所有数据进行同步。后台模块向前台模块发送同步开始消 息,并取消等待同步状态、打上正在同步状态。\n8.后台接收到前台模块响应的同步开始消息后,读取数据库中的所有数据并存储 在缓冲区中,依据消息大小和数据包格式进行打包。同时,系统将该失步队列 解锁,重新开始登记数据失步记录,但不向前台实时同步,如果失步队列再次 溢出,则再次清空失步队列并上锁,打上等待同步状态,一直等此次批量同步 完成后再次进行批量同步。\n9.每次后台给前台模块发送一个数据包(即数据同步消息),并设定同步超时定 时器Timer2。前台接收同步数据包后,进行批量更新表记录,并向后台反馈同 步成功与否的消息。\n10.后台接收到前台模块响应的数据同步消息后,依据反馈结果,如果数据同步成 功,发送下一包数据。如果数据同步失败或Timer2超时,则发送同一包数据 (重发最多次数由系统需求确定)。如果重发次数超过阈值,则停止本次批量 同步过程。如果非等待同步,则清空失步队列并加锁,打上等待同步状态,等 待下一次定时器触发批量同步过程。\n11.如果所有数据都已经同步完毕,后台向前台模块发送同步结束消息,并在接收 到前台响应的同步结束消息后,结束整个批量同步过程。
法律信息
- 2016-09-07
未缴年费专利权终止
IPC(主分类): G06F 11/14
专利号: ZL 200410070619.6
申请日: 2004.07.23
授权公告日: 2008.02.13
- 2008-02-13
- 2006-03-22
- 2006-01-25
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 |
1
| |
2003-08-20
|
2002-02-04
| | |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 1 | | 2015-04-10 | 2015-04-10 | | |