确定数据库主从差异的方法、装置及切换控制方法、装置制造方法及图纸

技术编号:18525929 阅读:17 留言:0更新日期:2018-07-25 12:45
一种确定数据库主从差异的方法、装置及切换控制方法、装置,在主库故障时,获取主库最新日志文件的修改时间戳T0,及获取从库最新日志文件的修改时间戳T1;将所述T0和T1的时间差确定为数据库主从差异对应的时间延迟;判断所述时间延迟是否大于设定的时间延迟阈值,如果是,不进行主从切换,如果否,进行主从切换。本申请既能确定主从切换时主从数据库的差异并用于切换判定,又无需连接数据库执行更新操作,也无需数据库执行额外操作,具有更好的性能。

【技术实现步骤摘要】
确定数据库主从差异的方法、装置及切换控制方法、装置
本专利技术涉及计算机技术,更具体地,涉及一种确定数据库主从差异的方法、装置及切换控制方法、装置。
技术介绍
如图1所示,数据库一般采用一主一从的主从架构来提供高可用性的服务。正常情况下,由主数据库实例(简称为主库)对外服务。如果对外服务的进程执行了对数据的更改(一般是通过一个“事务”来进行),则会在把更改写入数据库存储前,由日志写入与发送模块先写入到事务日志中,一般是以日志文件的形式保存,在一个日志文件写满后再写下一个日志文件。所述日志写入与发送模块不断通过网络连接,将主库产生的日志发送给从数据库实例(简称为从库,也可称为备库)。从库接收到日志后,将其进行回放,以使其数据与主库同步。在主库发生宕机等异常,无法对外服务时,需要切换到从库,由从库继续提供服务,从而实现高可用性。主从如果采用同步的事务提交机制,则在一个数据库事务完成时,主库要等到事务日志到达从库后,才回复用户连接事务提交完成。但这种模式因事务完成时间较长导致性能较低。所以主从一般采用异步的事务提交机制,即在完成一个事务时,主库不等待日志发送到从库,即回复用户提交已完成。异步模式在出现主库宕机时,可能产生有些日志未从主库发到从库,导致主从数据差异的情况。因此,在主库宕机,准备切换到从库时,要判断主从之间的数据差异情况,如果数据差异过大,可以放弃切换。相关的判断数据差异的办法是主库将当前时间对应的时间戳不断写入一个心跳表,此心跳表的内容也会不断同步给从库。当主从切换时,查看从库现有心跳表里的时间戳数据,与最后更新到主库的时间戳的差异,即可算出主从之间的数据差异对应多长时间的延迟,即可以用该时间延迟来表征主从之间的数据差异。上述心跳表方案有如下缺点:一,在主库更新心跳表时,需要连接数据库并执行更新操作,因此占用了用户可用的连接数(一般数据库都有最大连接数限制),当用户连接数达到上限时,将无法连接到主库更新心跳表,此时,如果有主从切换,无法准确判定主从数据差异;二,此方案要求从库在切换前允许连接和查询心跳表。但某些数据库,例如Greenplum的Standby节点,在切换前是不允许连接的,因此无法实现查询心跳表。三,对于长期以读操作为主的数据库,更新心跳表,本身会造成额外的日志写入、IO操作等。
技术实现思路
本专利技术实施例提供了一种确定数据库主从差异的方法,包括:在主库故障时,获取主库最新日志文件的修改时间戳T0,及获取从库最新日志文件的修改时间戳T1;将所述T0和T1的时间差确定为数据库主从差异对应的时间延迟。本专利技术实施例还提供了一种确定数据库主从差异的确定装置,包括:时间获取模块,设置为:在主库故障时,获取主库最新日志文件的修改时间戳T0,及获取从库最新日志文件的修改时间戳T1;差异确定模块,设置为:将所述T0和T1的时间差确定为数据库主从差异对应的时间延迟。本专利技术实施例还提供了一种确定数据库主从差异的确定装置,包括存储器和处理器,其中:所述存储器设置为:保存程序代码;所述处理器设置为:读取所述程序代码以执行以下处理:在主库故障时,获取主库最新日志文件的修改时间戳T0,及获取从库最新日志文件的修改时间戳T1;将所述T0和T1的时间差确定为数据库主从差异对应的时间延迟。上述方案既能较准确地确定主从切换时主从数据库的差异,又无需连接数据库执行更新操作,也无需数据库执行额外操作,具有更好的性能。本专利技术实施例还提供了一种数据库主从切换的控制方法,包括:按照如上所述述的确定数据库主从差异的方法确定数据库主从差异,得到数据库主从差异对应的时间延迟;判断所述时间延迟是否大于设定的时间延迟阈值,如果是,不进行主从切换,如果否,进行主从切换。本专利技术实施例还提供了一种数据库主从切换的控制装置,包括如上所述的数据库主从差异的确定装置以及切换判定模块,其中:所述切换判定模块设置为:判断所述确定装置确定的时间延迟是否大于设定的时间延迟阈值,如果是,不进行主从切换,如果否,进行主从切换。本专利技术实施例还提供了一种数据库主从切换的控制装置,包括存储器和处理器,其中:所述存储器设置为:保存程序代码;所述处理器设置为:读取所述程序代码以执行以下处理:在主库故障时,获取主库最新日志文件的修改时间戳T0,及获取从库最新日志文件的修改时间戳T1;将所述T0和T1的时间差确定为数据库主从差异对应的时间延迟;判断所述时间延迟是否大于设定的时间延迟阈值,如果是,不进行主从切换,如果否,进行主从切换。上述方案既能确定主从切换时主从数据库的差异并用于切换判定,又无需连接数据库执行更新操作,也无需数据库执行额外操作,具有更好的性能。附图说明图1是数据库主从架构的示意图;图2是本专利技术实施例一确定数据库主从差异的方法的流程图;图3是本专利技术实施例一数据库主从差异确定装置的模块图;图4是本专利技术实施例二数据库主从切换的控制方法的流程图;图5是本专利技术实施例二数据库主从切换的控制装置的模块图;图6是本专利技术实施例三数据库主从切换的控制方法的流程图。具体实施方式为使本专利技术的目的、技术方案和优点更加清楚明白,下文中将结合附图对本专利技术的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。实施例一本实施例提供一种确定数据库主从库差异的方法,应用于数据库主从库差异的确定装置,如图2所示,所述方法包括:步骤110,在主库故障时,获取主库最新日志文件的修改时间戳T0,及获取从库最新日志文件的修改时间戳T1;本申请是针对主从采用异步的事务提交机制的情况。如前所述,主库是在机器上运行的主数据库实例,主库正常运行时,在一个数据库事务完成时会将该事件的信息写入主库最新日志文件,该日志文件的修改时间戳即主库最后一次更新日志的时间。此外,主库正常运行时,会向从库同步日志,而从库最新日志文件的修改时间戳也是从库最后一次更新日志的时间。主库故障可能是因为主库所在机器硬件或操作系统故障导致的,此时主库和主库所在操作系统均无法使用。主库故障也可能是被主库所在机器的操作系统挂起而无法继续运行或者主库本身出现错误而无响应即主库宕机(非操作系统宕机),此时主库无法使用但主库所在机器的操作系统仍可工作。本实施例中,在所述主库工作时,按照设定的时间间隔从主库所在机器的操作系统获取主库最新日志文件的修改时间戳并记录。在所述主库故障时,将最后记录的主库最新日志文件的修改时间戳作为T0。因为主库故障时主库所在机器的操作系统也可能同时故障,无法再获取主库最新日志文件的修改时间戳。因此本实施例在本库工作时即按照设定的时间间隔从主库所在机器的操作系统获取主库最新日志文件的修改时间戳并记录,这里设定的时间间隔如可以是秒数一级,这可以根据对主从差异精度、可用性等要求而自行设定。另外设定的时间间隔可以总是相等的,也可以不相等如在不同时段采用不同的间隔。在另一实施例中,在所述主库工作时,也按照设定的时间间隔从所述主库所在机器的操作系统获取主库最新日志文件的修改时间戳并记录;但在主库故障时,如果从所述主库所在机器的操作系统获取到主库最新日志文件的修改时间戳,将获取的修改时间戳作为T0,否则将最后记录的主库最新日志文件的修改时间戳作为T0。该实施例在主库故障时仍尝试从主库所本文档来自技高网
...

【技术保护点】
1.一种确定数据库主从差异的方法,包括:在主库故障时,获取主库最新日志文件的修改时间戳T0,及获取从库最新日志文件的修改时间戳T1;将所述T0和T1的时间差确定为数据库主从差异对应的时间延迟。

【技术特征摘要】
1.一种确定数据库主从差异的方法,包括:在主库故障时,获取主库最新日志文件的修改时间戳T0,及获取从库最新日志文件的修改时间戳T1;将所述T0和T1的时间差确定为数据库主从差异对应的时间延迟。2.如权利要求1所述的方法,其特征在于:所述方法还包括:在所述主库工作时,按照设定的时间间隔从主库所在机器的操作系统获取主库最新日志文件的修改时间戳并记录;在主库故障时,获取主库最新日志文件的修改时间戳T0,包括:在所述主库故障时,将最后记录的主库最新日志文件的修改时间戳作为T0。3.如权利要求1所述的方法,其特征在于:所述方法还包括:在所述主库工作时,按照设定的时间间隔从所述主库所在机器的操作系统获取主库最新日志文件的修改时间戳并记录;在主库故障时,获取主库最新日志文件的修改时间戳T0,包括:在所述主库故障时,如果从所述主库所在机器的操作系统获取到主库最新日志文件的修改时间戳,将获取的修改时间戳作为T0,否则将最后记录的主库最新日志文件的修改时间戳作为T0。4.如权利要求1或2或3所述的方法,其特征在于:在主库故障时,获取从库最新日志文件的修改时间戳T1,包括:在所述主库故障时,从所述从库所在机器的操作系统获取从库最新日志文件的修改时间戳,将获取的修改时间戳作为T1。5.如权利要求1或2或3所述的方法,其特征在于:所述方法还包括:在所述主库工作时,按照设定的时间间隔从所述从库所在机器的操作系统获取从库最新日志文件的修改时间戳并记录;在主库故障时,获取从库最新日志文件的修改时间戳T1,包括:在所述主库故障时,如果从所述从库所在机器的操作系统获取到从库最新日志文件的修改时间戳,将获取的修改时间戳作为T1,否则将最后记录的从库最新日志文件的修改时间戳作为T1。6.一种确定数据库主从差异的确定装置,其特征在于,包括:时间获取模块,设置为:在主库故障时,获取主库最新日志文件的修改时间戳T0,及获取从库最新日志文件的修改时间戳T1;差异确定模块,设置为:将所述T0和T1的时间差确定为数据库主从差异对应的时间延迟。7.如权利要求6所述的确定装置,其特征在于:所述确定装置还包括:主库记录模块,设置为:在所述主库工作时,按照设定的时间间隔从主库所在机器的操作系统获取主库最新日志文件的修改时间戳并记录;所述时间获取模块在主库故障时,获取主库最新日志文件的修改时间戳T0,包括:在所述主库故障时,将所述主库记录模块最后记录的主库最新日志文件的修改时间戳作为T0。8.如权利要求6所述的确定装置,其特征在于:所述确定装置还包括:时间记录模块,设置为:在所述主库工作时,按照设定的时间间隔从主库所在机器的操作系统获取主库最新日志文件的修改时间戳并记录;所述时间获取模块在主库故障时,获取主库最新日志文件的修改时间戳T0,包括:在所述主库故障时,如果从所述主库所在机器的操作系统获取到主库最新日志文件的修改时间戳,将获取的修改时间戳作为T0,否则将最后记录的主库最新日志文件的修改时间戳作为T0。9.如权利要求6或7或8所述的确定装置,其特征在于:所述时间获取模块在主库故障时,获取从库最新日志文件的修改时间戳T1,包括:在所述主库故障时,从所述从库所在机器的操作系统获取从库最新日志文件的修改时间戳,将获取的修改时间戳作为T1。10.如权利要求6或7或8所述的确定装置,其特征在于:所述确定装置还包括:从库记录模块,设置为:在所述主库工作时,按照设定的时间间隔从所述从库所在机器的操作系统获取从库最新日志文件的修改时间戳并记录;所述时间获取模块在主库故障时,获取从库最新日志文件的修改时间戳T1,包括:在所述主库故障时,如果从所述从库所在机器的操作系统获取到从库最新日志文件的修改时间戳,将获取的修改时间戳作为T1,否则将所述从库记录模块最后记录的从库最新日志文件的修改时间戳作为T1。11.一种数据库主从差异的确定装置,包括存储器和处理器,其特征在于:所述存储器设置为:保存程序代码;所述处理器设置为:读取所述程序代码以执行以下处理:在主库故障时,获取主库最...

【专利技术属性】
技术研发人员:林江彬王勇
申请(专利权)人:阿里巴巴集团控股有限公司
类型:发明
国别省市:开曼群岛,KY

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

1