本发明专利技术公开一种检测主从延时方法、装置和系统,其中,检测主从延时方法,用于主库和从库之间的延时检测,所述检测主从延时方法包括如下步骤:所述主库获得心跳表参数,所述心跳表参数至少包括心跳更新间隔;根据所述心跳表参数创建第一心跳表;根据所述心跳更新间隔对所述第一心跳表进行更新,所述更新内容至少包括用于记录当前时间的第一时间戳,所述第一时间戳用以供所述从库计算获得主从延时时间。本发明专利技术具有提高判断主从延时的准确性的效果。
【技术实现步骤摘要】
本专利技术涉及数据库同步领域,特别涉及检测主从延时方法、装置和系统。
技术介绍
大型网站为了解决大并发访问,除了在网站实现分布式负载均衡,还需要在数据层上做优化。在用户访问请求到数据业务层和访问层的时候,如果还是按照原有的数据结构,或者只是单单靠一台数据服务器来承担,如此多的数据库连接操作,数据库必然会崩溃。这时候我们会考虑如何减少数据库的连接数:一方面采用优秀的代码框架,进行代码优化,包括采用优秀的数据缓存技术,如redis、memcached;另一方面是考虑架设服务器群,来分担主数据库的压力。因此我们引入了mysql的主从配置,实现读写分离,减轻数据库压力。这种方式,在如今的大型网站使用上已是标准配置。在实现数据库读写分离的时候,通过业务逻辑判断主库主要用于读写操作,从库用于读操作,主从库之间通过主从数据复制保证数据的一致性。但主从复制是需要一定的时间的,为保证在访问从库的数据足够新,不会出现数据脏读,我们可以设定主从延时是否在容忍范围内,如果判断延时时间超过我们设定的容忍时间,我们可以通过业务逻辑进行数据库的切换。但是,现有并没有较准确的判断主从延时的方法。
技术实现思路
本专利技术的主要目的是提供一种检测主从延时方法、装置和系统,旨在提高判断主从延时的准确性。为实现上述目的,本专利技术提出的一种检测主从延时方法,用于主库和从库之间的延时检测,所述检测主从延时方法包括如下步骤:所述主库获得心跳表参数,所述心跳表参数至少包括心跳更新间隔;根据所述心跳表参数创建第一心跳表;根据所述心跳更新间隔对所述第一心跳表进行更新,所述更新内容至少包括用于记录当前时间的第一时间戳,所述第一时间戳用以供所述从库计算获得主从延时时间。优选的,所述根据所述心跳更新间隔对所述第一心跳表进行更新的步骤包括:在所述第一心跳表内更新一条记录,所述记录至少包含用于保存当前时间的第一时间戳;通过所述心跳表参数获得心跳结束时间;判断是否到达所述心跳结束时间;若否,则睡眠到睡眠时间结束,并再次在所述第一心跳表内更新一条记录;其中,所述睡眠时间根据所述心跳更新间隔、上一条记录的更新时间、以及执行命令之后的当前时间获得;若是,则结束心跳更新。本专利技术提供的一种检测主从延时装置,用于主库和从库之间的延时检测,所述检测主从延时装置包括:获取模块,用于所述主库获得心跳表参数,所述心跳表参数至少包括心跳更新间隔;创建模块,用于根据所述心跳表参数创建第一心跳表;更新模块,用于根据所述心跳更新间隔对所述第一心跳表进行更新,所述更新内容至少包括用于记录当前时间的第一时间戳,所述第一时间戳用以供所述从库计算获得主从延时时间。优选的,所述更新模块包括:更新单元,用于在所述第一心跳表内更新一条记录,所述记录至少包含用于保存当前时间的第一时间戳;获得单元,用于通过所述心跳表参数获得心跳结束时间计算单元,用于根据心跳参数内的执行时间而计算线程的结束时间;判断单元,用于判断是否到达所述心跳结束时间,若否,则睡眠到睡眠时间结束,并再次在所述第一心跳表内更新一条记录;其中,所述睡眠时间根据所述心跳更新间隔、上一条记录的更新时间、以及执行命令之后的当前时间获得;若是,则结束心跳更新。本专利技术提供的一种检测主从延时方法,用于主库和从库之间的延时检测,所述检测主从延时方法包括如下步骤:所述从库预设有用于与所述主库同步的心跳表参数,所述心跳表参数至少包括心跳更新间隔;根据所述心跳表参数内的心跳更新间隔对所述主库进行同步备份,并将所述主库内的第一心跳表同步备份为所述从库内的第二心跳表;在所述第二心跳表内监控到第一时间戳时,记录所述从库当前时间为第二时间戳;根据所述第一时间戳和所述第二时间戳之间的差值获得延时时间。优选的,所述根据第一时间戳和第二时间戳之间的差值获得延时时间的步骤包括:获得所述第一时间戳和第二时间戳之间的差值;根据所获差值以及预设的频次输出延时时间;通过心跳表参数而获得心跳结束时间;判断是否到达所述心跳结束时间;若否,则睡眠到睡眠时间结束,并再次获得所述第一时间戳和第二时间戳之间的差值”;其中,所述睡眠时间根据所述心跳更新间隔、上一次求差值的时间、以及执行命令之后的当前时间获得;若是,则结束心跳监控。本专利技术提供的一种检测主从延时装置,用于主库和从库之间的延时检测,所述检测主从延时装置包括:预设模块,用于预设有用于与所述主库同步的心跳表参数,所述心跳表参数至少包括心跳更新间隔;同步模块,用于根据所述心跳更新间隔对所述主库进行同步备份,并将所述主库内的第一心跳表同步备份为所述从库内的第二心跳表;记录模块,用于在所述第二心跳表内监控到第一时间戳时,记录所述从库当前时间为第二时间戳;计算模块,用于根据第一时间戳和第二时间戳之间的差值获得延时时间。优选的,所述计算模块包括:差值单元,用于获得所述第一时间戳和第二时间戳之间的差值;输出单元,用于根据所获差值以及预设的频次输出延时时间;获得单元,用于通过心跳表参数而获得心跳结束时间;判断单元,用于判断是否到达所述心跳结束时间;若否,则睡眠到睡眠时间结束,然后返回步骤“获得所述第一时间戳和第二时间戳之间的差值”;其中,所述睡眠时间根据所述心跳更新间隔、上一次求差值的时间、以及执行命令之后的当前时间获得;若是,则结束心跳监控。本专利技术提供的一种检测主从延时系统,包括主库和用于同步备份所述主库的从库,所述主库用于获得心跳表参数,所述心跳表参数至少包括心跳更新间隔;根据所述心跳表参数创建第一心跳表;根据所述心跳更新间隔对所述第一心跳表进行更新,所述更新内容至少包括用于记录当前时间的第一时间戳,用以供所述从库计算获得主从延时时间;所述从库用于预设有用于与所述主库同步的心跳表参数,所述心跳表参数至少包括心跳更新间隔;根据所述心跳表参数内的心跳更新间隔对所述主库进行同步备份,并将所述主库内的第一心跳表同步备份为所述从库内的第二心跳表;在所述第二心跳表内监控到第一时间戳时,记录所述从库当前时间为第二时间戳;根据第一时间戳和第二时间戳之间的差值获得延时时间。优选的,所述主库和从库为mysql数据库;所述主库和从库通过与相同的一个网络协议服务器NTPserver来同步时钟。本专利技术所提供的检测主从延时方法,通过在主库建立第一心跳表,则当从库进行备份时,将该第一心跳表复制为从库内的第二心跳表;则当从库检测到第二心跳表建立并且其中存在第一时间戳时,将当前时间保存为第二时间戳,再通过第一时间戳和第二时间戳之间进行求差值,从而可以获知延时信息。该方案相较于现有方案具有准确性更高的效果。附图说明为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图示出的结构获得其他的附图。图1为SQL数据的主从备份流程。图2为本专利技术检测主从延时方法第一实施例的流程图;图3为本专利技术检测主从延时方法第二实施例的流程图;图4为本专利技术检测主从延时装置第一实施例的模块示意图;图5为图4中所示的更新模块的模块示意图;图6为本专利技术检测主从延时方法第三实施例的流程图;图7为本专利技术检测主从延时方法第四实施例的流程图;本文档来自技高网...
【技术保护点】
一种检测主从延时方法,用于主库和从库之间的延时检测,其特征在于,所述检测主从延时方法包括如下步骤:所述主库获得心跳表参数,所述心跳表参数至少包括心跳更新间隔;根据所述心跳表参数创建第一心跳表;根据所述心跳更新间隔对所述第一心跳表进行更新,所述更新内容至少包括用于记录当前时间的第一时间戳,所述第一时间戳用以供所述从库计算获得主从延时时间。
【技术特征摘要】
1.一种检测主从延时方法,用于主库和从库之间的延时检测,其特征在于,所述检测主从延时方法包括如下步骤:所述主库获得心跳表参数,所述心跳表参数至少包括心跳更新间隔;根据所述心跳表参数创建第一心跳表;根据所述心跳更新间隔对所述第一心跳表进行更新,所述更新内容至少包括用于记录当前时间的第一时间戳,所述第一时间戳用以供所述从库计算获得主从延时时间。2.如权利要求1所述的检测主从延时方法,其特征在于,所述根据所述心跳更新间隔对所述第一心跳表进行更新的步骤包括:在所述第一心跳表内更新一条记录,所述记录至少包含用于保存当前时间的第一时间戳;通过所述心跳表参数获得心跳结束时间;判断是否到达所述心跳结束时间;若否,则睡眠到睡眠时间结束,并再次在所述第一心跳表内更新一条记录;其中,所述睡眠时间根据所述心跳更新间隔、上一条记录的更新时间、以及执行命令之后的当前时间获得;若是,则结束心跳更新。3.一种检测主从延时装置,用于主库和从库之间的延时检测,其特征在于,所述检测主从延时装置包括:获取模块,用于所述主库获得心跳表参数,所述心跳表参数至少包括心跳更新间隔;创建模块,用于根据所述心跳表参数创建第一心跳表;更新模块,用于根据所述心跳更新间隔对所述第一心跳表进行更新,所述更新内容至少包括用于记录当前时间的第一时间戳,所述第一时间戳用以供所述从库计算获得主从延时时间。4.如权利要求3所述的检测主从延时装置,其特征在于,所述更新模块包括:更新单元,用于在所述第一心跳表内更新一条记录,所述记录至少包含用于保存当前时间的第一时间戳;获得单元,用于通过所述心跳表参数获得心跳结束时间计算单元,用于根据心跳参数内的执行时间而计算线程的结束时间;判断单元,用于判断是否到达所述心跳结束时间,若否,则睡眠到睡眠时间结束,并再次在所述第一心跳表内更新一条记录;其中,所述睡眠时间根据所述心跳更新间隔、上一条记录的更新时间、以及执行命令之后的当前时间获得;若是,则结束心跳更新。5.一种检测主从延时方法,用于主库和从库之间的延时检测,其特征在于,所述检测主从延时方法包括如下步骤:所述从库预设有用于与所述主库同步的心跳表参数,所述心跳表参数至少包括心跳更新间隔;根据所述心跳表参数内的心跳更新间隔对所述主库进行同步备份,并将所述主库内的第一心跳表同步备份为所述从库内的第二心跳表;在所述第二心跳表内监控到第一时间戳时,记录所述从库当前时间为第二时间戳;根据所述第一时间戳和所述第二时间戳之间的差值获得延时时间。6.如权利要求5所述的检测主从延时方法,其...
【专利技术属性】
技术研发人员:王福财,
申请(专利权)人:努比亚技术有限公司,
类型:发明
国别省市:广东;44
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。