一种内存数据库的主备复制方法及内存数据库系统技术方案

技术编号:13768254 阅读:39 留言:0更新日期:2016-09-29 02:48
本发明专利技术公开了一种内存数据库的主备复制方法及内存数据库系统,采用异步和半同步相结合的方式,与传统的半同步复制方式相比,本发明专利技术中的半同步并不等待备库主机对主库发送的REDO日志的接收确认,即可进行后续处理,可以使处理效率不受复制影响,另外,异步复制和半同步复制相互配合,共同保证主库和备库数据的一致性,在主库发生异常的情况下,备库可接管主库的功能,在保证数据安全的前提下,充分发挥内存数据库的高效处理优势。

【技术实现步骤摘要】

本专利技术涉及内存数据库领域,具体涉及一种内存数据库的主备复制方法及内存数据库系统
技术介绍
内存数据库由于把数据都放在内存中进行操作,有着比磁盘数据库高得多的性能表现,对于需要高速反应的数据库应用系统,如电信、金融等提供了有力支撑。但是由于内存的非持久性,一旦内存数据库进程或者所在主机发生异常停止,将直接导致应用程序无法继续进行访问。如何确保一个内存数据库节点(主库)损坏,另一个节点(备库)能够正常接管,成为内存数据库安全的关键技术。目前,内存数据库之间的数据保持一致的方式一般通过复制技术解决,复制方式有同步、异步、半同步等。同步方式要求事务操作必须在主库和备库上都完成提交操作才算成功,这种方式可以确保主库和备库的数据完全一致,缺点是处理效率成倍下降,无法充分发挥出内存数据库的高效率。异步方式是指事务仅在主库上完成提交即可,然后通过其他进程将REDO日志复制到备库,并在备库上完成提交。这就意味着在同一个时间点主备库上的数据可能不一致,异步复制的优点在于它比同步复制的处理效率要高。半同步复制模式下,事务在主库上完成提交的同时,将REDO日志发送到备库主机,待备库主机确认收到(仅是收到,并没有在备库完成提交)
后,才算完成提交动作。这在一定程度上保证了数据安全性,但是由于需要等待备库的确认,同样会造成处理效率的下降。
技术实现思路
本专利技术所要解决的技术问题是提供一种内存数据库的主备复制方法及内存数据库系统,能够解决现有技术的不足。本专利技术解决上述技术问题的技术方案如下:一方面,本专利技术提供了一种内存数据库的主备复制方法,所述内存数据库包括主库和备库,包括:S1、内存数据库中的主库服务进程在执行提交动作时,将REDO日志实时发送给备库复制进程,以及将REDO日志写入本地REDO日志文件;S2、备库复制进程接收到主库服务进程发送的REDO日志后,立即写入本地的半同步REDO日志文件;S3、主库复制进程实时扫描本地REDO日志文件的变化增量,并将REDO日志文件的变化增量发送给备库复制进程;S4、备库复制进程将接收到的REDO日志文件的变化增量写入本地异步REDO日志文件;S5、当主库发生异常时,备库复制进程立即读取本地异步REDO日志文件中的最后一条数据记录,并从本地半同步REDO日志文件中查找到该条数据记录,且将本地半同步REDO日志文件中该条数据记录以后的所有数据补充到本地异步REDO日志文件中;S6、备库复制进程读取本地异步REDO日志文件中的所有数据,在备库服务进程完成提交动作。另一方面,本专利技术提供了一种内存数据库系统,包括主库和备库,所述主库中具有主库复制进程和主库服务进程,所述备库中具有备库复制进程和
备库服务进程;所述主库服务进程,用于在执行提交动作时,将REDO日志实时发送给备库复制进程,以及将REDO日志写入本地REDO日志文件;所述主库复制进程,用于实时扫描本地REDO日志文件的变化增量,并将REDO日志文件的变化增量发送给备库复制进程;所述备库复制进程,用于接收到主库服务进程发送的REDO日志后,立即写入本地的半同步REDO日志文件;还用于将主库复制进程发送的REDO日志文件的变化增量写入本地异步REDO日志文件;还用于当主库发生异常时,立即读取本地异步REDO日志文件中的最后一条数据记录,并从本地半同步REDO日志文件中查找到该条数据记录,且将本地半同步REDO日志文件中该条数据记录以后的所有数据补充到本地异步REDO日志文件中;以及还用于读取本地异步REDO日志文件中的所有数据;所述备库服务进程,用于根据备库复制进程从本地异步REDO日志文件中读取的所有数据,完成提交动作。本专利技术提供的一种内存数据库的主备复制方法及系统,采用异步和半同步相结合的方式,与传统的半同步复制方式相比,本专利技术中的半同步并不等待备库主机对主库发送的REDO日志的接收确认,即可进行后续处理工作,可以使处理效率不受复制影响,另外,异步复制和半同步复制相互配合,共同保证主库和备库数据的一致性,在主库发生异常的情况下,备库可接管主库的功能,在保证数据安全的前提下,充分发挥内存数据库的高效处理优势。附图说明图1为本专利技术实施例1的一种内存数据库的主备复制方法流程图;图2为本专利技术实施例2的一种内存数据库系统示意图。具体实施方式以下结合附图对本专利技术的原理和特征进行描述,所举实例只用于解释本专利技术,并非用于限定本专利技术的范围。实施例1、一种内存数据库的主备复制方法。下面结合图1对本实施例提供的方法进行说明。参加图1,本实施例提供的方法包括:S1、内存数据库中的主库服务进程在执行提交动作时,将REDO日志实时发送给备库复制进程,以及将REDO日志写入本地REDO日志文件;S2、备库复制进程接收到主库服务进程发送的REDO日志后,立即写入本地的半同步REDO日志文件;S3、主库复制进程实时扫描本地REDO日志文件的变化增量,并将REDO日志文件的变化增量发送给备库复制进程;S4、备库复制进程将接收到的REDO日志文件的变化增量写入本地异步REDO日志文件;S5、当主库发生异常时,备库复制进程立即读取本地异步REDO日志文件中的最后一条数据记录,并从本地半同步REDO日志文件中查找到该条数据记录,且将本地半同步REDO日志文件中该条数据记录以后的所有数据补充到本地异步REDO日志文件中;S6、备库复制进程读取本地异步REDO日志文件中的所有数据,在备库服务进程完成提交动作。其中,步骤S1中的主库服务进程通过socket通讯方式将REDO日志实时发送给备库复制进程。本实施例中主库服务进程仅是将REDO日志(变化数据)发送给备库复制进程,并不等待备库复制进程的确认,这个本实施例与传统半同步复制的区别,提高了处理效率。步骤S5通过如下方式确定主库发生异常:备库复制进程发现与主库服
务进程的通信中断,将主库的故障状态设置为1;当备库复制进程发现与主库复制进程的通信中断且发现主库的故障状态为1时,确定主库发生异常。需要说明的是,当主库正常工作时,备库完全依赖异步复制,即可保证数据与主库保持一致,只是在时间上会有所延迟。此时,备库中的半同步redi日志文件完全不需要用,仅使用异步REDO日志,即使半同步REDO日志偶尔出现差错,也不会影响主备库数据的一致性。但是,一旦主库出现异常,由于异步复制的延时性,主库中的REDO日志,必然有一部分数据还没来不及发送到备库,而备库的半同步REDO日志,由于是主库实时发送过来的,可以保证最近一段时间的数据都是完整的。在本步骤中,备库的复制进程发现主库异常后,会立即去读取异步REDO日志文件的最后一条记录,然后到半同步REDO日志文件中查找这条记录,并将半同步REDO日志文件中,此条记录之后的所有数据(即主库在异常时,异步复制还未及时发送到备库的数据)补充到异步REDO日志文件中。步骤S6中备库复制进程通过线程实时扫描读取本地异步异步REDO日志文件中包括从半同步REDO日志补充的所有数据,在备库服务进程完成提交动作。当在备库服务进程完成提交动作之后,将备库的使用状态由主库正常时的不可用状态设置为可用状态,其中,当主库正常时,将备库的使用状态设置为不可用状态,只有当主库异常,备库本文档来自技高网
...

【技术保护点】
一种内存数据库的主备复制方法,所述内存数据库包括主库和备库,其特征在于,包括:S1、内存数据库中的主库服务进程在执行提交动作时,将REDO日志实时发送给备库复制进程,以及将REDO日志写入本地REDO日志文件;S2、备库复制进程接收到主库服务进程发送的REDO日志后,立即写入本地的半同步REDO日志文件;S3、主库复制进程实时扫描本地REDO日志文件的变化增量,并将REDO日志文件的变化增量发送给备库复制进程;S4、备库复制进程将接收到的REDO日志文件的变化增量写入本地异步REDO日志文件;S5、当主库发生异常时,备库复制进程立即读取本地异步REDO日志文件中的最后一条数据记录,并从本地半同步REDO日志文件中查找到该条数据记录,且将本地半同步REDO日志文件中该条数据记录以后的所有数据补充到本地异步REDO日志文件中;S6、备库复制进程读取本地异步REDO日志文件中的所有数据,在备库服务进程完成提交动作。

【技术特征摘要】
1.一种内存数据库的主备复制方法,所述内存数据库包括主库和备库,其特征在于,包括:S1、内存数据库中的主库服务进程在执行提交动作时,将REDO日志实时发送给备库复制进程,以及将REDO日志写入本地REDO日志文件;S2、备库复制进程接收到主库服务进程发送的REDO日志后,立即写入本地的半同步REDO日志文件;S3、主库复制进程实时扫描本地REDO日志文件的变化增量,并将REDO日志文件的变化增量发送给备库复制进程;S4、备库复制进程将接收到的REDO日志文件的变化增量写入本地异步REDO日志文件;S5、当主库发生异常时,备库复制进程立即读取本地异步REDO日志文件中的最后一条数据记录,并从本地半同步REDO日志文件中查找到该条数据记录,且将本地半同步REDO日志文件中该条数据记录以后的所有数据补充到本地异步REDO日志文件中;S6、备库复制进程读取本地异步REDO日志文件中的所有数据,在备库服务进程完成提交动作。2.如权利要求1所述的内存数据库的主备复制方法,其特征在于,步骤S1的主库服务进程通过socket通讯方式将REDO日志实时发送给备库复制进程。3.如权利要求1所述的内存数据库的主备复制方法,其特征在于,步骤S5通过如下方式确定主库发生异常:备库复制进程发现与主库服务进程的通信中断,将主库的故障状态设置为1;当备库复制进程发现与主库复制进程的通信中断且发现主库的故障状态为1时,确定主库发生异常。4.如权利要求3所述的内存数据库的主备复制方法,其特征在于,步骤S6中备库复制进程通过线程实时扫描读取本地异步异步REDO日志文件中的所有数据,在备库服务进程完成提交动作。5.如权利要求4所述的内存数据库的主备复制方法,其特征在于,当在备库服务进程完成提交动作之后,将备库的使用状态由主库正常时的不可用状态设置为可用状态,实现备库对主库的接管。6.一种内存数据库系统,其特征在于,包括主库和备库,所述主库中具有...

【专利技术属性】
技术研发人员:王金山
申请(专利权)人:北京思特奇信息技术股份有限公司
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1