一种主、备数据库同步方法和系统与流程

文档序号:15462452发布日期:2018-09-18 18:29阅读:209来源:国知局

本发明涉及数据库备份技术领域,特别涉及一种主、备数据库同步方法和系统。



背景技术:

随着网络信息技术的发展,电脑存储的数据越来越繁杂,数据丢失损毁可能会带来巨额的损失,为了避免数据损毁丢失等灾难性故障,人们主要采用数据库备份。通常情况下,全部数据库和日志要周期性地备份在廉价存储介质上。当系统遇到灾难性故障时,可以从最近的一次备份中重新装入数据库,并启动系统。

为避免丢失自上次备份之后的所有更新,通常要以更高的频率将系统日志备份到备用存储介质。由于系统日志比数据库小得多,因此可以更频繁地备份。

现有技术中,通过设置数据缓冲区来处理数据备份中产生的缓存数据;当主数据库修改时,向缓冲区中写入修改过的数据;当缓冲区数据量达到一定程度时,将缓冲区中额数据发送到备数据库,以实现同步。该方法需要将发生变化的文件整体写入缓冲区,再进行备份,如果所有数据都有可能变化,为保证不丢失数据,则缓冲区必须与数据库大小相同,同步效率低下。

综上所述,如何提高主、备数据库同步方法是本领域技术人员目前需要解决的一项技术问题。



技术实现要素:

有鉴于此,本发明的目的在于提供一种主、备数据库同步方法和系统,可以显著提高同步效率。其具体方案如下:

一种主、备数据库同步方法,包括:

主数据库中的数据发生变化,得到变化表,其中,所述变化表包括变化记录号和变化内容;

将所述变化记录号写入失步队列,将所述变化记录号相应的所述变化内容和所述变化位置记载到失步映像区;

根据所述变化记录号写入所述失步队列的先后顺序,将所述失步映像区中相应的变化内容和变化位置进行打包,得到打包数据;

发送所述打包数据至备数据库;

若所述备数据库根据所述打包数据完成数据更新,则发送同步完成信息;

删除所述失步映像区中与所述打包数据对应的变化内容和变化位置,删除所述失步队列中与所述打包数据对应的变化记录号。

优选的,所述变化内容包括失步类型、记录长度和失步记录内容,其中,所述失步类型包括插入、删除和修改。

优选的,所述记录长度为非定值。

优选的,所述的主、备数据库同步方法还包括:

若在预设时间段内未收到所述同步完成信息,则重新发送所述打包数据至所述备数据库。

优选的,所述的主、备数据库同步方法还包括:

判断每个时间周期内是否收到所述同步完成信息,若是,则表示同步状态正常;若否,则中断当前同步,其中,一个所述时间周期的时间长度大于或等于所述预设时间段。

优选的,所述的主、备数据库同步方法还包括:

判断所述主数据库和所述备数据库是否处于工作状态,若否,则禁止同步;若是,则正常同步。

优选的,所述的主、备数据库同步方法还包括:

获取CPU占有率;

判断所述CPU占有率是否超过阈值,若是,则降低发送所述打包数据至所述备数据库的发包速度;若否,则按默认的发包速度发送所述打包数据至所述备数据库。

优选的,所述主数据库和所述备数据库进行第一次同步时,对所述失步队列和所述失步映像区进行初始化。

本发明还提供了一种主、备数据库同步系统,包括主数据库、备数据库、失步队列、失步映像区和用于储存工作指令的失步映像注册区,其中,所述工作指令包括:

变化表注册指令,用于在所述主数据库中的数据发生变化时,得到变化表,其中,所述变化表包括变化记录号、变化位置和变化内容;

变化信息记录指令,用于将所述变化记录号写入所述失步队列,将所述变化记录号相应的所述变化内容和变化位置记载到所述失步映像区;

数据打包指令,用于根据所述变化记录号写入所述失步队列的先后顺序,将所述失步映像区中相应的变化内容和变化位置进行打包,得到打包数据;

打包数据发送指令,用于发送所述打包数据至所述备数据库;

同步确认发送指令,用于当所述备数据库根据所述打包数据完成数据更新,则发送同步完成信息;

变化信息删除指令,用于删除所述失步映像区中与所述打包数据对应的变化内容和变化位置,删除所述失步队列中与所述打包数据对应的变化记录号。

优选的,所述系统还包括用于控制传输数据控制区,所述传输数据控制区包括数据库当前状态字段、发包数字段、当前包重发次数字段、传输失败包数字段和传输状态字段中的一种或多种,其中,

所述数据库当前状态字段,用于判断所述主数据库和所述备数据库是否处于工作状态,若否,则禁止发送打包数据发送指令;若是,则正常发送打包数据发送指令;

所述发包数字段,用于控制CPU占用率,若所述CPU占用率超过阈值,则降低发送所述打包数据至所述备数据库的发包速度;若所述CPU占用率未超过阈值,则按默认的发包速度发送所述打包数据至所述备数据库;

所述当前包重发次数字段,用于在同一个打包数据发送次数超过预设值后,停止发送打包数据发送指令;

所述传输失败包数字段,用于统计打包数据发送失败的次数。

所述传输状态字段,用于判断当前是否正在发送打包数据,若是,则禁止发送打包数据发送指令;若否,则正常发送打包数据发送指令。

本发明提供了一种主、备数据库同步方法和系统,在主数据库发生变化时,仅储存记录主数据库发生变化的变化内容和相应的变化记录号,在主、备数据库进行同步时,按照变化记录号的先后存储顺序,将相应的变化内容发送至备数据库,对备数据库中的数据进行修改,无需将发生变化的文件整体进行同步,对数据的操作都是直接定位,提高了整个运行速度。

附图说明

为了更清楚地说明本发明实施方案或现有技术中的技术方案,下面将对实施方案或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施方案,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。

图1为本发明实施方案提供的一种主、备数据库同步方法的流程示意图;

图2为本发明实施方案提供的一种主、备数据库同步系统的结构示意图。

具体实施方式

下面将结合本发明实施方案中的附图,对本发明实施方案中的技术方案进行清楚、完整地描述,显然,所描述的实施方案仅仅是本发明一部分实施方案,而不是全部的实施方案。基于本发明中的实施方案,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施方案,都属于本发明保护的范围。

本发明实施方案提供了一种主、备数据库同步方法,参见图1所示,包括:

步骤S1:主数据库中的数据发生变化,得到变化表,其中,变化表包括变化记录号、变化位置和变化内容。

主数据库中的数据发生变化,即主数据库中的数据与备数据库中的数据存在差异,根据该差异可以得到变化表,变化表记录主数据库与备数据库中存在差异的数据和该数据相应的位置,即变化内容和变化位置,每个变化内容仅存在唯一的变化位置。

每组变换内容和变化位置都有一个唯一对应的变化记录号,变化记录号的先后顺序表示主数据库中数据发生变化的顺序。

变化记录号支持按数字先后顺序记录;也支持在按数字先后顺序的同时,加入日期时间进行记录,例如,若主数据库中的数据在2018年3月2日13:00发生了1次变化,这次变化的变化记录号可记录为201803021300N,201803021300表示2018年3月2日13:00,N为按数字先后顺序记录的数字号。

变化内容包括失步类型、记录长度和失步记录内容,其中,失步类型包括插入、删除和修改。

失步类型为插入,表示主数据库增加了数据,需要在备数据库相应位置插入主数据库发生变化的数据,因此失步记录内容为主数据库发生变化的数据,记录长度为主数据库发生变化的数据的长度。

失步类型为删除,表示主数据库减少了数据,需要在备数据库相应位置删除主数据库减少的数据,因此失步记录内容为空,记录长度为零。

失步类型为修改,表示主数据库中的数据发生了数值上的变化,需要在备数据库相应位置修改主数据库发生变化的数据,因此失步记录内容为主数据库中数值发生变化的数据,记录长度为变化数值的长度。

由于主数据库发生变化的数据是不定的,记录长度与主数据库发生变化的数据正相关,因此在实际操作中无需对记录长度进行定义。

当然,也可以定义记录长度的最大长度,即定义失步变化内容的最大值,若主数据库发生变化的数据大于所定义的失步变化内容的最大值,则将主数据库发生变化的数据拆分成若干个失步变化内容。

主数据库发生变化时,同步数据只存在插入、删除和部分字段的修改,避免了每一条记录都要传输整条记录的情况,减小了整个传输负荷。

步骤S2:将变化记录号写入失步队列,将变化记录号相应的变化内容和变化位置记载到失步映像区。

失步队列用于对变化记录号进行记载,不同变化记录号均存在唯一一组对应的变化内容和变化位置,变化记录号的先后顺序表示主数据库中数据发生变化的顺序。

失步映像区用于储存变化内容和变化位置,由于仅储存主数据库发生变化的数据内容,因此,失步映像区的大小无需设置成与主数据库的大小相同。

可以理解的是,主数据库和备数据库第一次进行同步,需要初始化失步队列和失步映像区。

步骤S3:根据变化记录号写入失步队列的先后顺序,将失步映像区中相应的变化内容和变化位置进行打包,得到打包数据。

变化记录号写入失步队列的先后顺序,表示主数据库发生变化的顺序,将变化顺序号唯一对应的一组变化内容和变化数据进行打包,以提高后续操作中的数据传输速率。

步骤S4:发送打包数据至备数据库。

备数据库在接收到打包数据,支持发送接收完成信息,以表示数据传输正常。

步骤S5:若备数据库根据打包数据完成数据更新,则发送同步完成信息。

根据打包数据中的变化位置在备数据库中进行定位,以将变化内容在相应位置插入、删除或修改。

同步完成后,发送同步完成信息,以便对下一个变化记录号进行同步操作。

步骤S6:删除失步映像区中与打包数据对应的变化内容和变化位置,删除失步队列中与打包数据对应的变化记录号。

主数据库发生变化时,同步数据只存在插入、删除和部分字段的修改,避免了每一条记录都要传输整条记录的情况,减小了整个传输负荷,提高了同步效率。

当然,在实际操作中,也支持将该变化记录号和与该变化记录号对应的一组变化内容和变化位置在日志中记录,方便查询变更内容。当然,也可以仅记录变化记录号,例如在变化记录号使用日期和先后顺序记录时,将变化记录号记录在日志中,即可查询主数据库发生变化的日期。

需要说明的是,本发明提供的是一种主、备数据库的同步思路,在上文中为主数据库向备数据库同步,在实际操作中,当主数据库数据发生损坏丢失,通过备数据库进行数据恢复时,可视为主、备数据库进行了切换,两者之间进行数据的同步仍可采用本发明所提供的方法。

还可以对上述方法进行优化,在数据同步发生错误时进行重新同步,本发明提供的同步方法还包括:

若在预设时间段内未收到同步完成信息,则重新发送打包数据至备数据库。

为了避免打包数据过大而误判重新发送的情况,即传输、同步一个打包数据的时间超过预设时间段,可以定义记录长度的最大长度,即定义失步变化内容的最大值,若主数据库发生变化的数据大于所定义的失步变化内容的最大值,则将主数据库发生变化的数据拆分成若干个失步变化内容。因此,预设时间段只需大于或等于同步最大记录长度数据的时间。

当然,也可以设置重新发送的最大次数,例如,在预设时间段内未收到同步传输完成信息,则最多重新发送3次。重新发送时,仍采用原失步记录号。若发送次数达到重新发送的最大次数仍未收到同步完成信息,

还可以对上述在预设时间段内未收到同步完成信息,则重新发送打包数据至备数据库的方法进行优化,将同步行为设置一个同步周期,具体包括:

判断每个时间周期内是否收到同步完成信息,若是,则表示同步状态正常;若否,则中断当前同步,其中,一个时间周期的时间长度大于或等于预设时间段。

在实际应用中,可实时获取主数据库和备数据库的工作状态,以判断主数据库和备数据库是否处于工作状态,若否,则禁止同步;若是,则正常同步。

主数据库中的数据发生遗失损毁,需要备数据库中的数据进行同步恢复,此类情况可视为主、备数据库互相切换。主、备数据库进行切换的过程中,主数据库和备数据库均不处于工作状态,此时禁止一切同步操作。

当主数据库或备数据库发生故障无法工作,则禁止一切同步操作。

为了提高用户体验,本发明提供的方法还包括:

获取CPU占有率;判断CPU占有率是否超过阈值,若是,则降低发送打包数据至备数据库的发包速度;若否,则按默认的发包速度发送打包数据至备数据库。

本发明还提供了一种主、备数据库同步系统,参见图2所示,包括主数据库11、备数据库12、失步队列13、失步映像区14和用于储存工作指令15的失步映像注册区16,其中,工作指令15包括:

变化表注册指令151,用于在主数据库中的数据发生变化时,得到变化表,其中,变化表包括变化记录号、变化位置和变化内容。

主数据库中的数据发生变化,即主数据库中的数据与备数据库中的数据存在差异,根据该差异可以得到变化表,变化表记录主数据库与备数据库中存在差异的数据和该数据相应的位置,即变化内容和变化位置,每个变化内容仅存在唯一的变化位置。

每组变换内容和变化位置都有一个唯一对应的变化记录号,变化记录号的先后顺序表示主数据库中数据发生变化的顺序。

变化记录号支持按数字先后顺序记录;也支持在按数字先后顺序的同时,加入日期时间进行记录,例如,若主数据库中的数据在2018年3月2日13:00发生了1次变化,这次变化的变化记录号可记录为201803021300N,201803021300表示2018年3月2日13:00,N为按数字先后顺序记录的数字号。

变化内容包括失步类型、记录长度和失步记录内容,其中,失步类型包括插入、删除和修改。

失步类型为插入,表示主数据库增加了数据,需要在备数据库相应位置插入主数据库发生变化的数据,因此失步记录内容为主数据库发生变化的数据,记录长度为主数据库发生变化的数据的长度。

失步类型为删除,表示主数据库减少了数据,需要在备数据库相应位置删除主数据库减少的数据,因此失步记录内容为空,记录长度为零。

失步类型为修改,表示主数据库中的数据发生了数值上的变化,需要在备数据库相应位置修改主数据库发生变化的数据,因此失步记录内容为主数据库中数值发生变化的数据,记录长度为变化数值的长度。

由于主数据库发生变化的数据是不定的,记录长度与主数据库发生变化的数据正相关,因此在实际操作中无需对记录长度进行定义。

当然,也可以定义记录长度的最大长度,即定义失步变化内容的最大值,若主数据库发生变化的数据大于所定义的失步变化内容的最大值,则将主数据库发生变化的数据拆分成若干个失步变化内容。

主数据库发生变化时,同步数据只存在插入、删除和部分字段的修改,避免了每一条记录都要传输整条记录的情况,减小了整个传输负荷。

变化信息记录指令152,用于将变化记录号写入失步队列,将变化记录号相应的变化内容和变化位置记载到失步映像区。

失步队列用于对变化记录号进行记载,不同变化记录号均存在唯一一组对应的变化内容和变化位置,变化记录号的先后顺序表示主数据库中数据发生变化的顺序。

失步映像区用于储存变化内容和变化位置,由于仅储存主数据库发生变化的数据内容,因此,失步映像区的大小无需设置成与主数据库的大小相同。

可以理解的是,主数据库和备数据库第一次进行同步,需要初始化失步队列和失步映像区。

数据打包指令153,用于根据变化记录号写入失步队列的先后顺序,将失步映像区中相应的变化内容和变化位置进行打包,得到打包数据。

变化记录号写入失步队列的先后顺序,表示主数据库发生变化的顺序,将变化顺序号唯一对应的一组变化内容和变化数据进行打包,以提高后续操作中的数据传输速率。

打包数据发送指令154,用于发送打包数据至备数据库。

备数据库在接收到打包数据,支持发送接收完成信息,以表示数据传输正常。

同步确认发送指令155,用于当备数据库根据打包数据完成数据更新,则发送同步完成信息。

根据打包数据中的变化位置在备数据库中进行定位,以将变化内容在相应位置插入、删除或修改。

同步完成后,发送同步完成信息,以便对下一个变化记录号进行同步操作。

变化信息删除指令156,用于删除失步映像区中与打包数据对应的变化内容和变化位置,删除失步队列中与打包数据对应的变化记录号。

主数据库发生变化时,同步数据只存在插入、删除和部分字段的修改,避免了每一条记录都要传输整条记录的情况,减小了整个传输负荷,提高了同步效率。

当然,在实际操作中,也支持将该变化记录号和与该变化记录号对应的一组变化内容和变化位置在日志中记录,方便查询变更内容。当然,也可以仅记录变化记录号,例如在变化记录号使用日期和先后顺序记录时,将变化记录号记录在日志中,即可查询主数据库发生变化的日期。

需要说明的是,本发明提供的是一种主、备数据库的同步思路,在上文中为主数据库向备数据库同步,在实际操作中,当主数据库数据发生损坏丢失,通过备数据库进行数据恢复时,可视为主、备数据库进行了切换,两者之间进行数据的同步仍可采用本发明所提供的思路。

为了增强同步传输的控制效果,本发明公开的系统还包括用于控制传输数据控制区,传输数据控制区包括数据库当前状态字段、发包数字段、当前包重发次数字段、传输失败包数字段和传输状态字段中的一种或多种,其中,

数据库当前状态字段,用于判断主数据库和备数据库是否处于工作状态,若否,则禁止发送打包数据发送指令;若是,则正常发送打包数据发送指令;

发包数字段,用于控制CPU占用率,若CPU占用率超过阈值,则降低发送打包数据至备数据库的发包速度;若CPU占用率未超过阈值,则按默认的发包速度发送打包数据至备数据库;

当前包重发次数字段,用于在同一个打包数据发送次数超过预设值后,停止发送打包数据发送指令;

传输失败包数字段,用于统计打包数据发送失败的次数。

传输状态字段,用于判断当前是否正在发送打包数据,若是,则禁止发送打包数据发送指令;若否,则正常发送打包数据发送指令。

最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

以上对本发明所提供的一种主、备数据库同步方法和系统进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施方案的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1