数据同步方法、装置和系统的制作方法_3

文档序号:8942954阅读:来源:国知局
中已同步的日志信息的偏移位置;
[0117]2、第一数据库服务器根据该偏移位置确定第一日志文件中未同步的日志信息,该未同步的日志信息包括上述对应于第一数据库的写操作命令;
[0118]3、第一数据库服务器向第二数据库服务器发送未同步的日志信息。
[0119]其中,偏移位置是相对于日志文件中所记录的日志信息的初始位置所确定的。第一数据库服务器可获取第二数据库服务器中的第二日志文件中所记录的日志信息的偏移位置,该第二日志文件中所记录的日志信息的偏移位置即为第一日志文件中已同步的日志信息的偏移位置。之后,第一数据库服务器获取第一日志文件中所记录的日志信息的偏移位置,根据该第一日志文件中所记录的日志信息的偏移位置和上述第一日志文件中已同步的日志信息的偏移位置,即可确定出第一日志文件中未同步的日志信息。在一种可能的实施方式中,采用offset函数实现上述功能。
[0120]在步骤404中,第二数据库服务器将接收到的日志信息写入第二日志文件中。
[0121]第二日志文件可视为第一日志文件在第二数据库服务器中的备份。第二数据库服务器接收到第一数据库服务器发送的日志信息后,将该日志信息写入第二日志文件中。第二日志文件存储于第二数据库服务器的外存储器中,例如硬盘。因此,即使第二数据库服务器断电,第二日志文件也不会丢失。
[0122]另外,为了便于日志信息的管理,可仅设置一个第二日志文件。当然,在其它可能的实施方式中,第二数据库服务器中也可设置多个第二日志文件。例如,为每种不同操作类型分别对应设置一个第二日志文件,一个第二日志文件用于记录一种操作类型的写操作命令。
[0123]另外,第二数据库服务器在将接收到的日志信息写入第二日志文件之前,还可执行如下几个步骤:
[0124]1、第二数据库服务器检测第二日志文件的剩余存储空间是否小于接收到的日志信息的字节大小;
[0125]2、若第二日志文件的剩余存储空间小于接收到的日志信息的字节大小,则第二数据库服务器获取第二日志文件中的第二目标日志信息,并删除该第二目标日志信息。
[0126]其中,第二目标日志信息的字节大小与第二日志文件的剩余存储空间之和大于或者等于接收到的日志信息的字节大小,且第二目标日志信息是第二日志文件中最早记录的日志信息。与上文介绍的方法类似,第二数据库服务器可采用LRU算法从第二日志文件中选取所要删除的第二目标日志信息。在本实施例中,通过选取最早记录的日志信息进行删除,可以避免将第二日志文件中最近写入的、还未对第二数据库执行的写操作命令删除,为数据库的同步提供可靠保障。
[0127]在步骤405中,第二数据库服务器根据接收到的日志信息,对第二数据库执行上述写操作命令。
[0128]第二数据库服务器以重放操作的方式,对第二数据库执行写操作命令,从而实现第一数据库与第二数据库之间的数据同步备份。
[0129]可选地,第二数据库服务器在接收到第一数据库服务器发送的日志信息后,向第一数据库服务器发送成功接收响应,该成功接收响应用于指示已成功接收上述日志信息。
[0130]相应地,第一数据库服务器在向第二数据库服务器发出日志信息后,便可根据是否接收到成功接收响应的反馈,确定第二数据库服务器是否已成功接收上述日志信息。在上述步骤403之后,第一数据库服务器检测在发出日志信息后的预定时段内是否接收到第二数据库服务器反馈的成功接收响应;若未接收到成功接收响应,则第一数据库服务器向第二数据库服务器重发上述日志信息。通过上述接收反馈机制,能够保证第二数据库服务器成功接收到第一数据库服务器发送的日志信息,进而为数据库的同步提供可靠保障。
[0131]在本实施例中,实现了采用双主模式部署数据库系统。当第一数据库发生故障时,如第一数据库的相关进程奔溃,网络故障,甚至第一数据库所在的主机宕机等故障,第二数据库可以无缝接管第一数据库的业务。通过将对应于第一数据库的写操作命令记录为日志信息,在第二数据库中以重放操作的方式完成数据同步备份。即便第一数据库发生故障时被清空,由于因故障导致的数据清空不会产生相应的写操作命令,故第二数据库中的数据不会被清空,从而避免两个数据库中的数据完全丢失的风险。
[0132]综上所述,本实施例提供的数据同步方法,通过第一数据库服务器获取对应于第一数据库的写操作命令,并将该写操作命令写入第一日志文件中,然后向第二数据库服务器发送包括该写操作命令的日志信息,使得第二数据库服务器根据该日志信息对第二数据库执行上述写操作命令,完成数据同步备份;解决了相关技术因存在主库与从库中的数据同时丢失的风险,而导致整个数据库系统的可用性较差的问题;避免了两个数据库中的数据完全丢失的风险,保证了整个数据库系统的高可用性。
[0133]另外,还通过第一数据库服务器检测在发出日志信息后的预定时段内是否接收到第二数据库服务器反馈的成功接收响应,并在未接收到成功接收响应的情况下,向第二数据库服务器重发日志信息;保证了第二数据库服务器能够成功接收到第一数据库服务器发送的日志信息,进而为数据库的同步提供可靠保障。
[0134]结合参考图1,在一种可能的实施方式中,数据同步过程如下:
[0135]1、第一数据同步装置向第一数据库发送连接建立请求,该连接建立请求用于请求与第一数据库之间建立数据传输连接,该数据传输连接可以是TCP (Transmiss1n ControlProtocol,传输控制协议)连接;
[0136]2、第一数据库根据连接建立请求,与第一数据同步装置之间建立数据传输连接;
[0137]3、第一数据库接收用户触发的写操作命令;
[0138]4、第一数据库向第一数据同步装置发送该写操作命令;
[0139]5、第一数据同步装置将接收到的写操作命令写入第一日志文件中;
[0140]6、第一数据同步装置向第二数据同步装置发送日志信息,该日志信息中包含上述写操作命令;
[0141]7、第二数据同步装置将接收到的日志信息写入第二日志文件中;
[0142]8、第二数据同步装置根据接收到的日志信息,对第二数据库执行上述写操作命令。
[0143]下述为本公开装置实施例,可以用于执行本公开方法实施例。对于本公开装置实施例中未披露的细节,请参照本公开方法实施例。
[0144]图5是根据一示例性实施例示出的一种数据同步装置的框图。该数据同步装置可应用于图1所示实施环境中的第一数据库服务器120中。该数据同步装置可以包括:命令获取模块510、命令写入模块520和日志发送模块530。
[0145]命令获取模块510,被配置为获取对应于第一数据库的写操作命令。
[0146]命令写入模块520,被配置为将所述命令获取模块510获取的所述写操作命令写入第一日志文件中。
[0147]日志发送模块530,被配置为向第二数据库服务器发送包括所述命令写入模块520写入至所述第一日志文件中的所述写操作命令的日志信息,所述第二数据库服务器用于根据所述日志信息对第二数据库执行所述写操作命令。
[0148]综上所述,本实施例提供的数据同步装置,通过第一数据库服务器获取对应于第一数据库的写操作命令,并将该写操作命令写入第一日志文件中,然后向第二数据库服务器发送包括该写操作命令的日志信息,使得第二数据库服务器根据该日志信息对第二数据库执行上述写操作命令,完成数据同步备份;解决了相关技术因存在主库与从库中的数据同时丢失的风险,而导致整个数据库系统的可用性较差的问题;避免了两个数据库中的数据完全丢失的风险,保证了整个数据库系统的高可用性。
[0149]图6是根据一示例性实施例示出的一种数据同步装置的框图。该数据同步装置可应用于图1所示实施环境中的第一数据库服务器120中。该数据同步装置可以包括:日志接收模块610、日志写入模块620和命令执行模块630。
[0150]日志接收模块610,被配置为接收第一数据库服务器发送的日志信息,所述日志信息包括对应于第一数据库的写操作命令。
[0151 ]日志写入模块620,被配置为将所述日志接收模块610接收到的所述日志信息写入第二日志文件中。
[0152]命令执行模块630,被配置为根据所述日志写入模块620写入至所述第二日志文件中的所述日志信息,对第二数据库执行所述写操作命令。
[0153]综上所述,本实施例提供的数据同步装置,通过第二数据库服务器接收第一数据库服务器发送的日志信息,并根据该日志信息对第二数据库执行写操作命令;解决了相关技术因存在主库与从库中的数据同时丢失的风险,而导致整个数据库系统的可用性较差的问题;避免了两个数据库中的数据完全丢失的风险,保证了整个数据库系统的高可用性。
[0154]图7是根据一示例性实施例示出的一种数据同步系统的框图。该数据同步系统包括:第一数据库501、第二数据库601、与第一数据库501对应部署的第一数据同步装置502以及与第二数据库601对应部署的第二数据同步装置602。其中,第一数据库501
当前第3页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1