主备数据库数据同步方法及装置制造方法

文档序号:6639672阅读:364来源:国知局
主备数据库数据同步方法及装置制造方法
【专利摘要】本发明提供主备数据库数据同步方法及装置,所述方法应用于高可用性HA存储系统中的主节点上,包括:向备节点发送心跳报文,该心跳报文携带有预设数值或同步校验值,以使备节点根据同步校验值判定主数据库和备数据库所存储的数据是否一致;接收备节点发送的回复报文,该回复报文能够指示主数据库和备数据库所存储的数据是否一致;当该回复报文指示主数据库和备数据库所存储的数据不一致时,则停止发送心跳报文,将主数据库的WAL文件发送到备节点,以使备节点根据WAL文件对备数据库进行数据同步。应用本发明实施例可以减少主备数据库数据同步所需的时间,并提高主备数据库数据同步的效率。
【专利说明】主备数据库数据同步方法及装置

【技术领域】
[0001]本发明涉及网络通信【技术领域】,尤其涉及主备数据库数据同步方法及装置。

【背景技术】
[0002]随着网络通信技术的不断发展,越来越多的前端数据需要存储。为了提高前端数据存储的可靠性,一般采用主、备存储设备进行同步存储的方式。如何同步主、备存储设备各自的数据库所存储的数据则成了一个关键问题。
[0003]现有技术中,主、备存储设备各自的数据库的同步过程一般为:当主、备存储设备正常运行时,将存储数据写入主存储设备的主数据库中,并实时地通过数据库相关技术,比如:流复制技术,写入备存储设备的备数据库中;当主、备存储设备发生故障时则会出现主、备数据库所存储的数据不一致的情况,当上述故障排除后,需要备份主数据库的整个数据目录,生成整个数据包文件,并使用rsync或scp拷贝该数据包文件到备存储设备对应目录下,并通知备存储设备导入新的数据文件,从而完成同步。其中,rsync是类unix操作系统下的一种数据镜像备份工具,scp是文件复制的命令,可以在不同的Linux操作系统之间复制文件。
[0004]但是,随着主数据库中数据的不断增加,数据库文件会不断增大,导致从主存储设备同步数据库到备存储设备的时间会不断增加,从而影响前端业务。


【发明内容】

[0005]本发明提供主备数据库数据同步方法及装置,以解决现有技术中随着主数据库中数据的不断增加,数据库文件会不断增大,导致从主存储设备同步数据库到备存储设备的时间会不断增加,从而影响前端业务的问题。
[0006]根据本发明实施例的第一方面,提供一种主备数据库数据同步方法,所述方法应用于高可用性HA存储系统中的主节点上,所述主节点与所述HA存储系统中的备节点相连接,所述主节点包括主数据库,所述备节点包括备数据库,所述方法包括:
[0007]向备节点发送心跳报文,所述心跳报文携带有预设数值或同步校验值,以使所述备节点根据所述同步校验值判定所述主数据库和所述备数据库所存储的数据是否一致;
[0008]接收所述备节点发送的所述心跳报文的回复报文,所述回复报文能够指示所述主数据库和所述备数据库所存储的数据是否一致;
[0009]当所述回复报文指示所述主数据库和备数据库所存储的数据不一致时,则停止发送所述心跳报文,将所述主数据库的WAL文件发送到备节点,以使所述备节点根据所述WAL文件对所述备数据库进行数据同步。
[0010]根据本发明实施例的第二方面,提供一种主备数据库数据同步方法,所述方法应用于高可用性HA存储系统中的备节点上,所述备节点与所述HA存储系统中的主节点相连接,所述主节点包括主数据库,所述备节点包括备数据库,所述方法包括:
[0011]接收主节点发送的心跳报文;
[0012]根据所述心跳报文中的同步校验值判定所述主数据库和所述备数据库所存储的数据是否一致,并根据判定结果生成回复报文;
[0013]将所述回复报文发送至所述主节点,所述回复报文能够指示所述主数据库和所述备数据库所存储的数据是否一致,以使所述主节点根据所述回复报文的指示确定是否进行数据同步;
[0014]当所述回复报文指示所述主数据库和备数据库所存储的数据不一致时,接收所述主节点发送的WAL文件,并根据所述WAL文件对所述备的数据库进行数据同步。
[0015]根据本发明实施例的第三方面,提供一种主备数据库数据同步装置,所述装置应用于高可用性HA存储系统中的主节点上,所述主节点与所述HA存储系统中的备节点相连接,所述主节点包括主数据库,所述备节点包括备数据库,所述装置包括:
[0016]发送单元,用于向备节点发送心跳报文,所述心跳报文携带有预设数值或同步校验值,以使所述备节点根据所述同步校验值判定所述主数据库和所述备数据库所存储的数据是否一致;
[0017]接收单元,用于接收所述备节点发送的所述心跳报文的回复报文,所述回复报文能够指示所述主数据库和所述备数据库所存储的数据是否一致;
[0018]同步单元,用于当所述回复报文指示所述主数据库和备数据库所存储的数据不一致时,则停止发送所述心跳报文,将所述主数据库的WAL文件发送到备节点,以使所述备节点根据所述WAL文件对所述备数据库进行数据同步。
[0019]根据本发明实施例的第四方面,提供一种主备数据库数据同步装置,所述装置应用于高可用性HA存储系统中的备节点上,所述备节点与所述HA存储系统中的主节点相连接,所述主节点包括主数据库,所述备节点包括备数据库,所述装置包括:
[0020]接收单元,用于接收主节点发送的心跳报文;
[0021]判定单元,用于根据所述心跳报文中的同步校验值判定所述主数据库和所述备数据库所存储的数据是否一致,并根据判定结果生成回复报文;
[0022]发送单元,用于将所述回复报文发送至所述主节点,所述回复报文能够指示所述主数据库和所述备数据库所存储的数据是否一致,以使所述主节点根据所述回复报文的指示确定是否进行数据同步;
[0023]同步单元,用于当所述回复报文指示所述主数据库和备数据库所存储的数据不一致时,接收所述主节点发送的WAL文件,并根据所述WAL文件对所述备的数据库进行数据同步。
[0024]应用本发明实施例,主节点定时向备节点发送心跳报文,以使备节点根据心跳报文中的同步校验值判定主数据库和备数据库所存储的数据是否一致,并返回回复报文,当一致时,主节点只保留两个最新的WAL文件,当不一致时,将最新的两个WAL文件发送至备数据库进行数据同步,从而保证了主数据库和备数据库保持同步,大大减少对前端业务的影响,而且数据同步不是对整个数据库进行同步,而是对最新的两个WAL文件进行数据同步,减少了主备数据库数据同步所需的时间,提高了主备数据库数据同步的效率。

【专利附图】

【附图说明】
[0025]图1是应用本发明实施例主备数据库数据同步的应用场景示意图;
[0026]图2是本发明主备数据库数据同步方法的一个实施例流程图;
[0027]图3是本发明主备数据库数据同步方法的另一个实施例流程图;
[0028]图4是本发明主备数据库数据同步装置所在设备的一种硬件结构图;
[0029]图5是本发明主备数据库数据同步装置的一个实施例框图;
[0030]图6是本发明主备数据库数据同步装置的另一个实施例框图。

【具体实施方式】
[0031 ] 为了使本【技术领域】的人员更好地理解本发明实施例中的技术方案,并使本发明实施例的上述目的、特征和优点能够更加明显易懂,下面结合附图对本发明实施例中技术方案作进一步详细的说明。
[0032]参见图1,为应用本发明实施例主备数据库数据同步的应用场景示意图:
[0033]图1中示出了一种高可用性(High Available,HA)系统的组网架构。如图所示,HA存储系统包括主节点和备节点。其中,HA是一种保持存储业务在存储系统出现异常时持续运行,提高存储系统业务可靠性的技术。该HA存储系统使用HA技术可以提高前端业务运行的可靠性。
[0034]当主节点为主存储设备,备节点为备存储设备时,主存储设备的数据库和备存储设备的数据库也形成了主备关系,即主存储设备的数据库为主数据库,备存储设备的数据库为备数据库。主节点、备节点之间通过用户数据报协议(User Datagram Protocol,UDP)心跳报文进行实时监测,通过内部网口完成主、备数据库的数据同步。
[0035]主节点、备节点正常运行时,前端业务写入主数据库的数据将实时通过数据库相关技术,比如,流复制技术,写入备数据库中,从而保证主、备数据库中所存储的数据的一致性。其中,HA存储系统中始终以主数据库为依据,备数据库尽可能和主数据库保持一致。
[0036]当主节点或备节点发生故障时,则会出现主备数据库数据不一致的情况,当上述故障排除后,主备节点之间需要重新同步数据,主、备数据库的同步需要在两个节点之间通过内部网口进行数据文件的拷贝。
[0037]当主、备节点配置HA机制后,主节点根据心跳发送时间间隔(interval)定时通过内部网口发送UDP心跳报文,备节点后台进程定时接收主节点发送的UDP心跳报文。其中,心跳发送时间间隔(interval)小于主、备节点内部网口一次网络故障闪断到网络恢复正常的时间。
[0038]主节点从HA配置完成开始,启动数据库的预写式日志(Write-ahead logging,WAL)机制,并设置WAL的大小,随着前端业务不断的改变数据库数据,主数据库后台机制不断的生成指定大小的WAL文件,主数据库的操作越频繁,生成WAL文件的个数也会越多,WAL文件中保存了对应时间段的主数据库的全部操作。
[0039]因此,本发明实施例的目的是保证主数据库和备数据库所存储的数据一致,当不一致时,主、备节点之间需要对不一致期间内的数据进行数据同步,尤其当备节点出现故障并从故障中恢复过来时,主、备节点之间需要对备节点出现故障期间内未存储的数据同步进行数据同步。
[0040]下面结合附图对本发明主备数据库数据同步的实施例进行详细描述。
[0041]参见图2,为本发明主备数据库数据同步方法的一个实施例流程图,该实施例从HA存储系统中的主节点侧进行描述,该主节点与HA存储系统中的备节点相连接,主节点包括主数据库,备节点包括备数据库,包括以下步骤:
[0042]步骤210:向备节点发送心跳报文,该心跳报文携带有预设数值或同步校验值,以使备节点根据同步校验值判定主数据库和备数据库所存储的数据是否一致。
[0043]本实施例中,向备节点发送的心跳报文包括第一心跳报文和第二心跳报文。
[0044]其中,第一心跳报文携带有预设数值,比如:0x0。该预设数值是主节点和备节点事先协商好的,用于备节点根据该预设数值获知主节点没有出现故障。因为如果主节点出现故障,将会导致正在运行的前端业务不能正常运行时,则需要备节点立即接续主节点来执行前端业务。
[0045]第二心跳报文携带有同步校验值,该同步校验值和第一心跳报文的预设数值不同,而是主节点随机生成的一个数值,比如:一个六位的随机数0x183569,用于备节点根据该同步校验值判定主数据库和备数据库所存储的数据是否一致。
[0046]本实施例中不限于上述随机生成同步校验值这一种方法,还可以包括其他方法。本发明实施例中主要利用同步校验值判定主数据库和备数据库所存储的数据是否一致。至于对同步校验值的具体数值并不限制,只要保证生成的各个同步校验值不同即可。主节点生成的同步校验值写入主数据库中,并通过数据库相关技术,比如,流复制技术写入备数据库中。当备节点接收携带有同步校验值的第二心跳报文后,会根据接收到的同步校验值在备数据库中查询,当查询到该同步校验值,则判定主数据库和备数据库所存储的数据一致;当没有查询到该同步校验值,则判断主数据库和备数据库所存储的数据不一致,并根据判定结果生成需要发送至主节点的回复报文。
[0047]另外,一般情况下,首先向备节点发送N次第一心跳报文后,随机生成一个同步校验值,将该同步校验值保存在主数据库中,并向备节点发送一次携带有该同步校验值的第二心跳报文,然后再发送N次第一心跳报文后,随机生成另一个同步校验值,将该同步校验值保存在主数据库中,并向备节点发送一次携带有该另一个同步校验值的第二心跳报文,以此类推,直至接收到备节点发送的回复报文指示判定主数据库和备数据库所存储的数据不一致,则停止发送第一心跳报文和第二心跳报文。
[0048]上述N次第一心跳报文和I次第二心跳报文交替进行发送,其中,各个第一心跳报文携带有相同的预设数值,各个第二心跳报文携带有不同的同步校验值,同步校验值和预设数值不同。
[0049]步骤220:接收备节点发送的针对心跳报文的回复报文,该回复报文能够指示主数据库和备数据库所存储的数据是否一致。当回复报文指示主数据库和备数据库所存储的数据不一致时,执行步骤230 ;当回复报文指示主数据库和备数据库所存储的数据一致时,执行步骤240。
[0050]本实施例中,回复报文的形式有很多种,比如,用携带有Oxllll的回复报文来指示主数据库和备数据库所存储的数据一致,用远程报警信息指示主数据库和备数据库所存储的数据不一致。本发明对回复报文的格式没有限制,只要能够指示主数据库和备数据库所存储的数据是否一致即可。
[0051]步骤230:当回复报文指示主数据库和备数据库所存储的数据不一致时,则停止发送心跳报文,将主数据库的WAL文件发送到备节点,以使备节点根据WAL文件对备数据库进行数据同步。
[0052]步骤240:当回复报文指示主数据库和备数据库所存储的数据一致时,根据主数据库的WAL文件的生成时间,将最后生成的两个WAL文件之外的WAL文件进行删除。
[0053]本实施例中,主节点WAL文件中保存了对应时间段的数据库的全部操作。当主数据库和备数据库所存储的数据一致时,则只保留两个最新的WAL文件,其他的WAL文件皆删除。
[0054]上述只保留两个最新的WAL文件的原因是:WAL文件的生成时间和HA心跳机制中的心跳时间并无关联,最新的两个WAL文件中包含了一段时间之内主数据库的全部操作。另外,主数据库和备数据库中的数据不一致由HA心跳机制定时检测,一个WAL文件能保存的数据时间要比心跳时间的时间间隔长的多,但可能出现检测到主数据库和备数据库所存储的数据不一致时,对应时间段的数据刚好分布在最新两个WAL文件中,因此需要两个WAL文件。而且根据WAL文件的生成时间,保留时间最新的两个WAL文件,因为不一致的数据只保存在最新的两个WAL文件中。
[0055]可选的,在上述实施例中,所述方法还包括:
[0056](I)接收备节点发送的故障恢复消息。
[0057]本实施例中,当备节点发生故障时,不管主节点向备节点发送多少心报文,备节点也不会返回回复报文,则主数据库保存的WAL文件也不会被删除。一旦备节点排除故障即从故障中恢复过来,则此时备数据库中的数据和主数据库中的数据不一致,需要进行数据同步,为此,备节点向主节点发送故障恢复消息,该故障恢复消息表明备节点可以正常工作,能够同步主节点数据中的数据。
[0058](2)根据故障恢复消息停止向备节点发送心跳报文,并将在备节点处于故障期间内所存储的所有WAL文件发送到备节点,以使备节点根据接收到的WAL文件对所述备数据库进行数据同步。
[0059]本实施例中,在备节点处于故障期间内,主节点的前端业务一直运行,其存储的WAL文件一直在增加,当接收到备节点的故障恢复消息后,需要把在备节点处于故障期间内所存储的所有WAL文件发送到备节点进行数据同步。当发送后,主节点删除自身存储在备节点处于故障期间内所存储的所有WAL文件。
[0060]进一步可选的,在上述实施例中,所述方法还包括:
[0061](I)接收备节点发送的数据同步完成消息。
[0062](2)根据数据同步完成消息继续向备节点发送心跳报文。
[0063]本实施例中,当备节点完成数据同步后,则需要主节点重新发送心跳报文,备节点重新接收心跳报文,使得HA机制重新运行。
[0064]由上述实施例可见,主节点定时向备节点发送心跳报文,以使备节点根据心跳报文中的同步校验值判定主数据库和备数据库所存储的数据是否一致,并返回回复报文,当一致时,主节点只保留两个最新的WAL文件,当不一致时,将最新的两个WAL文件发送至备数据库进行数据同步,从而保证了主数据库和备数据库保持同步,大大减少对前端业务的影响,而且数据同步不是对整个数据库进行同步,而是对最新的两个WAL文件进行数据同步,减少了数据库数据同步所需的时间,提高了主备数据库数据同步的效率。
[0065]参见图3,为本发明主备数据库数据同步方法的另一个实施例流程图,该实施例从HA存储系统中的备节点侧进行描述,该备节点与HA存储系统中的主节点相连接,主节点包括主数据库,备节点包括备数据库,包括以下步骤:
[0066]步骤310:接收主节点发送的心跳报文。
[0067]本实施例中,接收到的主节点发送的心跳报文包括:第一心跳报文和第二心跳报文。其中,携带有预设数值的心跳报文为第一心跳报文,携带有同步校验值的心跳报文为第二心跳报文。预设数值是主节点和备节点事先协商的,根据预设数值获知主节点正处于工作状态,没有出现故障,然后将该第一心跳报文丢弃;当携带有不是预设数值的心跳报文即为第二心跳报文,该不是预设数值的数值为同步校验值,根据该同步校验值可以判断主数据库和备数据库所存储的数据是否一致。
[0068]一般情况下,当连续接收N次第一心跳报文后,接收携带有同步校验值的第二心跳报文,然后再连续接收N次第一心跳报文后,接收携带有另一同步校验值的第二心跳报文,以此类推,直至备节点根据同步校验值判定主数据库和备数据库所存储的数据不一致时,停止接收第一心跳报文和第二心跳报文,配合主节点进行数据同步。
[0069]步骤320:根据心跳报文中的同步校验值判定主数据库和备数据库所存储的数据是否一致,并根据判断结果生成回复报文。
[0070]可选地,根据同步校验值判定主数据库和备数据库所存储的数据是否一致的过程包括:
[0071]在备数据库中查询接收到的同步校验值,当查询到该同步校验值,则判定结果为主数据库和备数据库所存储的数据一致;当没有查询到所述同步校验值,则判定结果为主数据库和备数据库所存储的数据不一致,并根据上述判定结果生成回复报文。该回复报文能够指示主数据库和备数据库所存储的数据是否一致。
[0072]另外,在上述查询时可以在接收到心跳报文后进行适当延时后,再在备数据库中查询接收到的同步校验值,从而保证了写入主数据库中的同步校验值有充分的时间同步到备数据库中。
[0073]步骤330:将回复报文发送至主节点。该回复报文能够指示主数据库和备数据库所存储的数据是否一致,以使主节点根据回复报文的指示确定是否进行数据同步;
[0074]步骤340:当回复报文指示主数据库和备数据库所存储的数据不一致时,接收主节点发送的WAL文件,并根据WAL文件对备数据库进行数据同步。其中,主节点发送的WAL文件是主数据库保留的两个最新的WAL文件。
[0075]可选的,在上述实施例中,所述方法还包括:
[0076](I)当检测到自身故障恢复时,向所述主节点发送故障恢复消息;
[0077](2)接收主节点发送的在备节点处于故障期间内所存储的所有WAL文件,并根据WAL文件对备的数据库进行数据同步。
[0078]本实施例中,当备节点发生故障时,尽管主节点还向备节点发送心报文,但备节点也不会返回回复报文。当备节点排除故障即从故障中恢复过来,则需要进行数据同步,为此,备节点向主节点发送故障恢复消息,该故障恢复消息表明备节点可以正常工作,能够同步主节点数据中的数据。
[0079]进一步可选地,在上述实施例中,所述方法还包括:
[0080]当完成数据同步时,向主节点发送同步完成消息,并继续接收主节点发送的心跳报文。
[0081]本实施例中,当备节点完成数据同步后,则需要主节点重新发送心跳报文,备节点重新接收心跳报文,使得HA机制重新运行。
[0082]由上述实施例可见,备节点定时接收主节点发送的心跳报文,以使备节点根据心跳报文中的同步校验值判定主数据库和备数据库所存储的数据是否一致,并返回回复报文,当不一致时,接收主节点发送的最新的两个WAL文件进行数据同步,从而保证了主数据库和备数据库保持同步,大大减少对前端业务的影响,而且数据同步不是对整个数据库进行同步,而是对最新的两个WAL文件进行数据同步,减少了主备数据库数据同步所需的时间,提高了主备数据库数据同步的效率。
[0083]与前述主备数据库数据同步方法实施例相对应,本发明还提供了主备数据库数据同步装置的实施例。
[0084]本发明主备数据库数据同步装置的实施例可以应用在网络设备上。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在设备的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,如图4所示,为本发明主备数据库数据同步装置所在设备的一种硬件结构图,除了图4所示的处理器、网络接口、内存以及非易失性存储器之外,实施例中装置所在的设备通常还可以包括其他硬件,如负责处理报文的转发芯片等等;从硬件结构上来讲该设备还可能是分布式的设备,可能包括多个接口卡,以便在硬件层面进行报文处理的扩展。
[0085]参见图5,为本发明主备数据库数据同步装置的一个实施例框图,所述装置可以应用HA存储系统中的主节点上,所述主节点与所述HA存储系统中的备节点相连接,所述主节点包括主数据库,所述备节点包括备数据库,所述装置包括:发送单元51、接收单元52和同步单元53ο
[0086]其中,发送单元51用于向备节点发送心跳报文,所述心跳报文携带有预设数值或同步校验值,以使所述备节点根据所述同步校验值判定所述主数据库和所述备数据库所存储的数据是否一致。
[0087]接收单元52用于接收所述备节点发送的所述心跳报文的回复报文,所述回复报文能够指示所述主数据库和所述备数据库所存储的数据是否一致。
[0088]同步单元53用于当所述回复报文指示所述主数据库和备数据库所存储的数据不一致时,则停止发送所述心跳报文,将所述主数据库的WAL文件发送到备节点,以使所述备节点根据所述WAL文件对所述备数据库进行数据同步。
[0089]在一个可选的实现方式中,所述装置还可以包括:删除单元(图5中未标出)。
[0090]删除单元用于当所述回复报文指示所述主数据库和备数据库所存储的数据一致时,根据主数据库的WAL文件的生成时间,将最后生成的两个WAL文件之外的WAL文件进行删除。
[0091]在另一个可选的实现方式中,所述心跳报文包括第一心跳报文和第二心跳报文,所述发送单元51还用于向所述备节点发送所述第一心跳报文,所述第一心跳报文携带有所述预设数值,以使所述备节点根据所述预设数值获知所述主节点没有出现故障;当连续发送N次所述第一心跳报文后,随机生成一个同步校验值,将所述同步校验值保存在主数据库中,并向所述备节点发送携带有所述同步校验值的第二心跳报文,以使所述备节点根据所述同步校验值判定所述主数据库和所述备数据库所存储的数据是否一致;其中,N次第一心跳报文和I次第二心跳报文交替进行发送,各个第一心跳报文携带有相同的预设数值,各个第二心跳报文携带有不同的同步校验值,所述同步校验值和所述预设数值不同。
[0092]在另一个可选的实现方式中,所述接收单元52还用于接收所述备节点发送的故障恢复消息;以及,所述同步单元53还用于根据所述故障恢复消息停止向所述备节点发送所述心跳报文,并将在所述备节点处于故障期间内所存储的所有WAL文件发送到所述备节点,以使所述备节点根据所述WAL文件对所述备数据库进行数据同步。
[0093]在另一个可选的实现方式中,所述接收单元52还用于接收所述备节点发送的数据同步完成消息;以及,发送单元51还用于根据所述数据同步完成消息继续向所述备节点发送所述心跳报文。
[0094]参见图6,为本发明主备数据库数据同步装置的另一个实施例框图,所述装置可以应用HA存储系统中的备节点上,所述备节点与所述HA存储系统中的主节点相连接,所述主节点包括主数据库,所述备节点包括备数据库,所述装置包括:接收单元61、判定单元62、发送单元63和同步单元64。
[0095]其中,接收单元61用于接收主节点发送的心跳报文。
[0096]判定单元62用于根据所述心跳报文中的同步校验值判定所述主数据库和所述备数据库所存储的数据是否一致,并根据判定结果生成回复报文。
[0097]发送单元63用于将所述回复报文发送至所述主节点,所述回复报文能够指示所述主数据库和所述备数据库所存储的数据是否一致,以使所述主节点根据所述回复报文的指示确定是否进行数据同步。
[0098]同步单元64用于当所述回复报文指示所述主数据库和备数据库所存储的数据不一致时,接收所述主节点发送的WAL文件,并根据所述WAL文件对备的数据库进行数据同步。
[0099]在一个可选的实现方式中,所述心跳报文包括第一心跳报文和第二心跳报文,所述接收单元61还用于接收所述主节点发送所述第一心跳报文,所述第一心跳报文携带有预设数值,根据所述预设数值获知所述主节点没有出现故障;当连续接收N次所述第一心跳报文后,接收携带有同步校验值的第二心跳报文。
[0100]在另一个可选的实现方式中,所述判定单元62还用于在所述备数据库中查询所述同步校验值,当查询到所述同步校验值,则判定结果为所述主数据库和所述备数据库所存储的数据一致,并根据所述判定结果生成回复报文;当没有查询到所述同步校验值,则判定结果为所述主数据库和所述备数据库所存储的数据不一致,并根据所述判定结果生成回复报文。
[0101]在另一个可选的实现方式中,所述发送单元63还用于当检测到自身故障恢复时,向所述主节点发送故障恢复消息。
[0102]以及,同步单元64还用于接收所述主节点发送的在所述备节点处于故障期间内所存储的所有WAL文件,并根据所述WAL文件对备的数据库进行数据同步。
[0103]在另一个可选的实现方式中,所述发送单元63还用于当完成数据同步时,向所述主节点发送同步完成消息;以及,所述接收单元61还用于继续接收所述主节点发送的所述心跳报文。
[0104]上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
[0105]对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本发明方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
[0106]由上述实施例可见,主节点定时向备节点发送心跳报文,以使备节点根据心跳报文中的同步校验值判定主数据库和备数据库所存储的数据是否一致,并返回回复报文,当一致时,主节点只保留两个最新的WAL文件,当不一致时,将最新的两个WAL文件发送至备数据库进行数据同步,从而保证了主数据库和备数据库保持同步,大大减少对前端业务的影响,而且数据同步不是对整个数据库进行同步,而是对最新的两个WAL文件进行数据同步,减少了主备数据库数据同步所需的时间,提高了主备数据库数据同步的效率。
[0107]本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本发明的其它实施方案。本申请旨在涵盖本发明的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本发明的一般性原理并包括本发明未公开的本【技术领域】中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本发明的真正范围和精神由下面的权利要求指出。
[0108]应当理解的是,本发明并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本发明的范围仅由所附的权利要求来限制。
【权利要求】
1.一种主备数据库数据同步方法,其特征在于,所述方法应用于高可用性HA存储系统中的主节点上,所述主节点与所述HA存储系统中的备节点相连接,所述主节点包括主数据库,所述备节点包括备数据库,所述方法包括: 向备节点发送心跳报文,所述心跳报文携带有预设数值或同步校验值,以使所述备节点根据所述同步校验值判定所述主数据库和所述备数据库所存储的数据是否一致; 接收所述备节点发送的所述心跳报文的回复报文,所述回复报文能够指示所述主数据库和所述备数据库所存储的数据是否一致; 当所述回复报文指示所述主数据库和备数据库所存储的数据不一致时,则停止发送所述心跳报文,将所述主数据库的预写式日志WAL文件发送到备节点,以使所述备节点根据所述WAL文件对所述备数据库进行数据同步。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括: 当所述回复报文指示所述主数据库和备数据库所存储的数据一致时,根据所述主数据库的WAL文件的生成时间,将最后生成的两个WAL文件之外的WAL文件进行删除。
3.根据权利要求1或2所述的方法,其特征在于,所述心跳报文包括第一心跳报文和第二心跳报文,所述向备节点发送心跳报文,所述心跳报文携带有预设数值或同步校验值具体包括: 向所述备节点发送所述第一心跳报文,所述第一心跳报文携带有所述预设数值,以使所述备节点根据所述预设数值获知所述主节点没有出现故障; 当主节点连续发送N次所述第一心跳报文后,随机生成一个同步校验值,将所述同步校验值保存在所述主数据库中,并向所述备节点发送携带有所述同步校验值的第二心跳报文,以使所述备节点根据所述同步校验值判定所述主数据库和所述备数据库所存储的数据是否一致; 其中,N次第一心跳报文和I次第二心跳报文交替进行发送,各个第一心跳报文携带有相同的预设数值,各个第二心跳报文携带有不同的同步校验值,所述同步校验值和所述预设数值不同。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括: 接收所述备节点发送的故障恢复消息; 根据所述故障恢复消息停止向所述备节点发送所述心跳报文,并将在所述备节点处于故障期间内所存储的所有WAL文件发送到所述备节点,以使所述备节点根据所述WAL文件对所述备数据库进行数据同步。
5.根据权利要求1、3、4任一项所述的方法,其特征在于,所述方法还包括: 接收所述备节点发送的数据同步完成消息; 根据所述数据同步完成消息继续向所述备节点发送所述心跳报文。
6.一种主备数据库数据同步方法,其特征在于,所述方法应用于高可用性HA系统中的备节点上,所述备节点与所述HA存储系统中的主节点相连接,所述主节点包括主数据库,所述备节点包括备数据库,所述方法包括: 接收主节点发送的心跳报文; 根据所述心跳报文中的同步校验值判定所述主数据库和所述备数据库所存储的数据是否一致,并根据判定结果生成回复报文; 将所述回复报文发送至所述主节点,所述回复报文能够指示所述主数据库和所述备数据库所存储的数据是否一致,以使所述主节点根据所述回复报文的指示确定是否进行数据同步; 当所述回复报文指示所述主数据库和备数据库所存储的数据不一致时,接收所述主节点发送的WAL文件,并根据所述WAL文件对所述备数据库进行数据同步。
7.根据权利要求6所述的方法,其特征在于,所述心跳报文包括第一心跳报文和第二心跳报文,所述接收主节点发送的心跳报文具体包括: 接收所述主节点发送所述第一心跳报文,所述第一心跳报文携带有预设数值; 根据所述预设数值获知所述主节点没有出现故障; 当连续接收N次所述第一心跳报文后,接收携带有同步校验值的第二心跳报文。
8.根据权利要求6或7所述的方法,其特征在于,所述根据所述心跳报文中的同步校验值判定所述主数据库和所述备数据库所存储的数据是否一致,并根据判定结果生成回复报文具体包括: 在所述备数据库中查询所述同步校验值,当查询到所述同步校验值,则判定结果为所述主数据库和所述备数据库所存储的数据一致,并根据所述判定结果生成回复报文;当没有查询到所述同步校验值,则判定结果为所述主数据库和所述备数据库所存储的数据不一致,并根据所述判定结果生成回复报文。
9.根据权利要求6所述的方法,其特征在于,所述方法还包括: 当检测到自身故障恢复时,向所述主节点发送故障恢复消息; 接收所述主节点发送的在所述备节点处于故障期间内所存储的所有WAL文件,并根据所述WAL文件对所述备数据库进行数据同步。
10.根据权利要求6至9任一项所述的方法,其特征在于,所述方法还包括: 当完成数据同步时,向所述主节点发送同步完成消息,并继续接收所述主节点发送的所述心跳报文。
11.一种主备数据库数据同步装置,其特征在于,所述装置应用于高可用性HA存储系统中的主节点,所述主节点与所述HA存储系统中的备节点相连接,所述主节点包括主数据库,所述备节点包括备数据库,所述装置包括: 发送单元,用于向备节点发送心跳报文,所述心跳报文携带有预设数值或同步校验值,以使所述备节点根据所述同步校验值判定所述主数据库和所述备数据库所存储的数据是否一致; 接收单元,用于接收所述备节点发送的所述心跳报文的回复报文,所述回复报文能够指示所述主数据库和所述备数据库所存储的数据是否一致; 同步单元,用于当所述回复报文指示所述主数据库和备数据库所存储的数据不一致时,则停止发送所述心跳报文,将所述主数据库的WAL文件发送到备节点,以使所述备节点根据所述WAL文件对所述备数据库进行数据同步。
12.根据权利要求11所述的装置,其特征在于,所述装置还包括: 删除单元,用于当所述回复报文指示所述主数据库和备数据库所存储的数据一致时,根据所述主数据库的WAL文件的生成时间,将最后生成的两个WAL文件之外的WAL文件进行删除。
13.根据权利要求11或12所述的装置,其特征在于,所述心跳报文包括第一心跳报文和第二心跳报文,所述发送单元还用于向所述备节点发送所述第一心跳报文,所述第一心跳报文携带有所述预设数值,以使所述备节点根据所述预设数值获知所述主节点没有出现故障;当连续发送N次所述第一心跳报文后,随机生成一个同步校验值,将所述同步校验值保存在所述主数据库中,并向所述备节点发送携带有所述同步校验值的第二心跳报文,以使所述备节点根据所述同步校验值判定所述主数据库和所述备数据库所存储的数据是否一致;其中,N次第一心跳报文和I次第二心跳报文交替进行发送,各个第一心跳报文携带有相同的预设数值,各个第二心跳报文携带有不同的同步校验值,所述同步校验值和所述预设数值不同。
14.根据权利要求11所述的装置,其特征在于,所述接收单元还用于接收所述备节点发送的故障恢复消息; 以及,所述同步单元还用于根据所述故障恢复消息停止向所述备节点发送所述心跳报文,并将在所述备节点处于故障期间内所存储的所有WAL文件发送到所述备节点,以使所述备节点根据所述WAL文件对所述备数据库进行数据同步。
15.根据权利要求11、13、14任一项所述的装置,其特征在于,所述接收单元还用于接收所述备节点发送的数据同步完成消息; 以及,发送单元还用于根据所述数据同步完成消息继续向所述备节点发送所述心跳报文。
16.一种主备数据库数据同步装置,其特征在于,所述装置应用于高可用性HA存储系统中的备节点,所述备节点与所述HA存储系统中的主节点相连接,所述主节点包括主数据库,所述备节点包括备数据库,所述装置包括: 接收单元,用于接收主节点发送的心跳报文; 判定单元,用于根据所述心跳报文中的同步校验值判定所述主数据库和所述备数据库所存储的数据是否一致,并根据判定结果生成回复报文; 发送单元,用于将所述回复报文发送至所述主节点,所述回复报文能够指示所述主数据库和所述备数据库所存储的数据是否一致,以使所述主节点根据所述回复报文的指示确定是否进行数据同步; 同步单元,用于当所述回复报文指示所述主数据库和备数据库所存储的数据不一致时,接收所述主节点发送的WAL文件,并根据所述WAL文件对所述备的数据库进行数据同步。
17.根据权利要求16所述的装置,其特征在于,所述心跳报文包括第一心跳报文和第二心跳报文,所述接收单元还用于接收所述主节点发送所述第一心跳报文,所述第一心跳报文携带有预设数值,根据所述预设数值获知所述主节点没有出现故障;当连续接收N次所述第一心跳报文后,接收携带有同步校验值的第二心跳报文。
18.根据权利要求16或17所述的装置,其特征在于,所述判定单元还用于在所述备数据库中查询所述同步校验值,当查询到所述同步校验值,则判定结果为所述主数据库和所述备数据库所存储的数据一致,并根据所述判定结果生成回复报文;当没有查询到所述同步校验值,则判定结果为所述主数据库和所述备数据库所存储的数据不一致,并根据所述判定结果生成回复报文。
19.根据权利要求16所述的装置,其特征在于,所述发送单元还用于当检测到自身故障恢复时,向所述主节点发送故障恢复消息; 以及,同步单元还用于接收所述主节点发送的在所述备节点处于故障期间内所存储的所有WAL文件,并根据所述WAL文件对所述备的数据库进行数据同步。
20.根据权利要求16至19任一项所述的装置,其特征在于,所述发送单元还用于当完成数据同步时,向所述主节点发送同步完成消息; 以及,所述接收单元还用于继续接收所述主节点发送的所述心跳报文。
【文档编号】G06F17/30GK104504062SQ201410805686
【公开日】2015年4月8日 申请日期:2014年12月22日 优先权日:2014年12月22日
【发明者】张敏 申请人:浙江宇视科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1