数据页的刷盘方法、装置、设备及存储介质制造方法及图纸

技术编号:30527450 阅读:23 留言:0更新日期:2021-10-27 23:13
本发明专利技术实施例公开了一种数据页的刷盘方法、装置、设备及存储介质。应用于数据库集群,所述数据库集群包括一个主库和至少两个备库;包括:所述主库将心跳消息或者生成的日志包发送至各所述备库;所述备库提取当前重演的日志包中的第二已提交日志序列以及已写入本地磁盘的最后一个日志包中的最大日志序列,并获取当前待刷盘数据页中的页日志序列;所述备库根据所述第一已提交日志序列、所述第二已提交日志序列、所述最大日志序列以及所述页日志序列判断所述待刷盘数据页是否满足刷盘条件;若满足刷盘条件,则将所述待刷盘数据页中的数据写入本地磁盘中。可以避免备库出现数据页缓存不足、重演卡住的问题,确保数据库集群能够正常稳定运行。稳定运行。稳定运行。

【技术实现步骤摘要】
数据页的刷盘方法、装置、设备及存储介质


[0001]本专利技术实施例涉及数据库
,尤其涉及一种数据页的刷盘方法、装置、设备及存储介质。

技术介绍

[0002]随着信息技术的高速发展,数据库在日常工作、商业活动以及人们的生活中都起到极其重要的作用。为避免数据库使用过程中发生宕机,无法正常提供服务,现有应用中常采用搭建数据库集群的方式,即将多个数据库分为主库和备库,使得主库宕机时备库仍可继续提供服务。
[0003]为保证数据库集群中各数据库的数据同步,在对主库进行增删改等数据修改操作时生成日志包,并将日志包发送至备库,以使得备库根据日志包进行重演进而和主库保持数据同步。
[0004]现有技术中,当备库正在重演的日志包的包序号或者日志序列小于主库已提交到的包序号或者日志序列,此时,备库重演需要分配新的数据页,但该备库出现数据页缓存不足无法分配的情况,备库会尝试将已经分配出来的数据页刷盘,以便淘汰释放出可用的数据页缓存,但由于备库跟随日志包重演推进到的已提交日志包序号和已提交日志序列比较小,在尝试将数据页刷盘时会受限于已提交日志序列,使得有数据页无法被刷盘,从而引发备库分配不出新的数据页无法继续重演,导致备库异常、无法对外提供只读服务的情况发生。

技术实现思路

[0005]本专利技术实施例提供一种数据页的刷盘方法、装置、设备及存储介质。可以避免备库出现数据页缓存不足、重演卡住的问题,确保数据库集群能够正常稳定运行。
[0006]第一方面,本专利技术实施例提供了一种数据页的刷盘方法,应用于数据库集群,所述数据库集群包括一个主库和至少两个备库;所述方法包括:
[0007]所述主库将心跳消息或者生成的日志包发送至各所述备库;其中,所述心跳消息或者所述日志包中携带有第一已提交日志序列;
[0008]所述备库提取当前重演的日志包中的第二已提交日志序列以及已写入本地磁盘的最后一个日志包中的最大日志序列,并获取当前待刷盘数据页中的页日志序列;
[0009]所述备库根据所述第一已提交日志序列、所述第二已提交日志序列、所述最大日志序列以及所述页日志序列判断所述待刷盘数据页是否满足刷盘条件;
[0010]若满足刷盘条件,则将所述待刷盘数据页中的数据写入本地磁盘中。
[0011]第二方面,本专利技术实施例还提供了一种数据页的刷盘装置,设置于数据库集群,所述数据库集群包括一个主库和至少两个备库;所述装置包括:
[0012]心跳消息或者日志包发送模块,设置于主库中,用于将心跳消息或者生成的日志包发送至各所述备库;其中,所述心跳消息或者所述日志包中携带有第一已提交日志序列;
[0013]日志序列获取模块,设置于备库中,用于提取当前重演的日志包中的第二已提交日志序列以及已写入本地磁盘的最后一个日志包中的最大日志序列,并获取当前待刷盘数据页中的页日志序列;
[0014]刷盘条件判断模块,设置于备库中,用于根据所述第一已提交日志序列、所述第二已提交日志序列、所述最大日志序列以及所述页日志序列判断所述待刷盘数据页是否满足刷盘条件;
[0015]数据页刷盘模块,用于当满足刷盘条件时,将所述待刷盘数据页中的数据写入本地磁盘中。
[0016]第三方面,本专利技术实施例还提供了一种电子设备,包括:数据库集群、存储装置以及一个或多个处理器;
[0017]所述数据库集群包括一个主库和至少两个备库;
[0018]所述存储装置,用于存储一个或多个程序;
[0019]当所述一个或多个程序被所述一个或多个处理执行,使得所述一个或多个处理器实现如本专利技术实施例所述的数据页的刷盘方法。
[0020]第四方面,本专利技术实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本专利技术实施例所述的数据页的刷盘方法。
[0021]本专利技术实施例公开了一种数据页的刷盘方法、装置、设备及存储介质。应用于数据库集群,数据库集群包括一个主库和至少两个备库;该方法包括:主库将心跳消息或者生成的日志包发送至各备库;其中,心跳消息或者日志包中携带有第一已提交日志序列;备库提取当前重演的日志包中的第二已提交日志序列以及已写入本地磁盘的最后一个日志包中的最大日志序列,并获取当前待刷盘数据页中的页日志序列;备库根据第一已提交日志序列、第二已提交日志序列、最大日志序列以及页日志序列判断待刷盘数据页是否满足刷盘条件;若满足刷盘条件,则将待刷盘数据页中的数据写入本地磁盘中。本专利技术实施例提供的数据页的刷盘方法,根据第一已提交日志序列、第二已提交日志序列、最大日志序列以及页日志序列判断待刷盘数据页是否满足刷盘条件,可以及时释放出更多的内存空间来分配新的数据页缓存,可以避免备库出现数据页缓存不足、重演卡住的问题,确保数据库集群能够正常稳定运行。
附图说明
[0022]图1是本专利技术实施例一中的一种数据页的刷盘方法的流程图;
[0023]图2是本专利技术实施例二中的一种数据页的刷盘装置的结构示意图;
[0024]图3是本专利技术实施例三中的一种电子设备的结构示意图。
具体实施方式
[0025]下面结合附图和实施例对本专利技术作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本专利技术,而非对本专利技术的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本专利技术相关的部分而非全部结构。
[0026]相关技术中,主库和备库之间通过同步日志包来推进各自的已提交日志序列(C_LSN)和已提交日志包序号(C_SEQNO),通过已提交日志序列对主库和备库的数据页刷盘动
作进行限定,仅在数据页的页日志序列(PAGE_LSN)小于等于已提交日志序列时,才允许数据页刷盘,以确保大于已提交日志序列的日志可以被安全截断。
[0027]主库产生的日志包只要已经写入超过设定数量的数据库内(包括主库),就可以向前推进C_SEQNO和C_LSN,少数重演比较慢的备库不会影响到主库的正常运行,备库的C_SEQNO和C_LSN是依赖于主库日志包中填充的C_SEQNO和C_LSN向前推进的。但对于少数备库,当前正在重演的日志包上的C_SEQNO和C_LSN有可能小于主库已经推进到的C_SEQNO和C_LSN,如果这些备库上出现数据页缓存不足(分配不出来新的数据页缓存)的情况,备库会尝试将已经分配出来的数据页淘汰刷盘,但由于备库跟随日志包重演推进到的C_LSN比较小,在尝试淘汰数据页时会受限于C_LSN值,使得PAGE_LSN大于C_LSN的数据页无法被刷盘,使得备库无法继续重演,导致备库系统异常、无法对外提供只读服务的情况发生。
[0028]示例性的,假设某个数据库集群包括3个数据库,分别为EP1、EP2、EP3,其中EP1为主库,EP2和EP3为备库,主库当前的C_SEQNO=2999,C_LSN=5000。
[0029]1、EP1产生了一个新的日志包(RPKG1),RPKG1日志包中填充的信息:C_SEQNO=2999,C_LSN=50本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种数据页的刷盘方法,其特征在于,应用于数据库集群,所述数据库集群包括一个主库和至少两个备库;所述方法包括:所述主库将心跳消息或者生成的日志包发送至各所述备库;其中,所述心跳消息或者所述日志包中携带有第一已提交日志序列;所述备库提取当前重演的日志包中的第二已提交日志序列以及已写入本地磁盘的最后一个日志包中的最大日志序列,并获取当前待刷盘数据页中的页日志序列;所述备库根据所述第一已提交日志序列、所述第二已提交日志序列、所述最大日志序列以及所述页日志序列判断所述待刷盘数据页是否满足刷盘条件;若满足刷盘条件,则将所述待刷盘数据页中的数据写入本地磁盘中。2.根据权利要求1所述的方法,其特征在于,所述备库根据所述第一已提交日志序列、所述第二已提交日志序列、所述最大日志序列以及所述页日志序列判断所述待刷盘数据页是否满足刷盘条件,包括:取所述第一已提交日志序列和所述第二已提交日志序列的最大值,确定为中间值;取所述中间值和所述最大日志序列的最小值,确定为结果值;根据所述结果值和所述页日志序列判断所述待刷盘数据页是否满足刷盘条件。3.根据权利要求2所述的方法,其特征在于,根据所述结果值和所述页日志序列判断所述待刷盘数据页是否满足刷盘条件,包括:若所述页日志序列小于或者等于所述结果值,则所述待刷盘数据页满足刷盘条件;否则,所述待刷盘数据页不满足刷盘条件。4.根据权利要求1所述的方法,其特征在于,所述主库生成日志包,包括:所述主库根据已同步日志包序号数组、已同步日志序列数组以及接收到的数据修改操作生成日志包。5.根据权利要求4所述的方法,其特征在于,所述日志包至少包括日志包序号、已提交日志包序号、已提交日志序列以及至少一条日志。6.根据权利要求5所述的方法,其特征在于,所述主库根据已同步日志包序号数组、已同步日志序列数组以及接收到的数据修改操作生成日志包,包括:根据所述已同步日志包序号数组确定已提交日...

【专利技术属性】
技术研发人员:王蒙蒙钱晨亮刘新宇
申请(专利权)人:上海达梦数据库有限公司
类型:发明
国别省市:

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

1