书签 分享 收藏 举报 版权申诉 / 13

一种实现数据库双主改造的方法及装置.pdf

  • 上传人:li****8
  • 文档编号:4838945
  • 上传时间:2018-11-16
  • 格式:PDF
  • 页数:13
  • 大小:2.12MB
  • 摘要
    申请专利号:

    CN201210557332.0

    申请日:

    2012.12.19

    公开号:

    CN103019875A

    公开日:

    2013.04.03

    当前法律状态:

    授权

    有效性:

    有权

    法律详情:

    授权|||实质审查的生效IPC(主分类):G06F 11/07申请日:20121219|||公开

    IPC分类号:

    G06F11/07; G06F17/30

    主分类号:

    G06F11/07

    申请人:

    北京世纪家天下科技发展有限公司

    发明人:

    杨春宇

    地址:

    100081 北京市海淀区中关村南大街46号南区14号楼二层208B室

    优先权:

    专利代理机构:

    北京集佳知识产权代理有限公司 11227

    代理人:

    王宝筠

    PDF完整版下载: PDF下载
    内容摘要

    本发明公开了一种实现数据库双主改造的方法及装置以实现数据库系统能够连续服务且不丢失数据的目的,包括监测主数据库服务器的运行状态,其中,所述主数据库服务器提供写访问,配置有与其同步复制的备数据库服务器,在监测到所述主数据库服务器的运行状态异常时,以所述备数据库服务器代替主数据库服务器提供写访问,执行从库切换步骤,包括:通过计算所述备数据库服务器和从数据库服务器分别最后一次读取到主数据库服务器日志中的位置的差值,确定从数据库服务器在读取备数据库服务器日志时的起始位置,将所述备数据库服务器设置为所述从数据库服务器的主服务器,从而满足数据库系统提供连续服务、从库跟随切换延时的情况下不丢失数据的要求。

    权利要求书

    权利要求书一种实现数据库双主改造的方法,其特征在于,包括:
    监测主数据库服务器的运行状态,其中,所述主数据库服务器提供写访问,配置有:与其同步复制的备数据库服务器;
    在监测到所述主数据库服务器的运行状态异常时,以所述备数据库服务器代替主数据库服务器提供写访问;
    执行以下从库切换步骤,包括:
    通过计算所述备数据库服务器和从数据库服务器分别最后一次读取到主数据库服务器日志中的位置的差值,确定从数据库服务器在读取备数据库服务器日志时的起始位置;
    将所述备数据库服务器设置为所述从数据库服务器的主服务器。
    根据权利要求1所述的方法,其特征在于,所述主数据库服务器与所述备数据库服务器共同使用一个第一虚拟IP,该第一虚拟IP用于写访问。
    根据权利要求1所述的方法,其特征在于,所述从数据库服务器共同使用一个第二虚拟IP,该第二虚拟IP用于读访问。
    根据权利要求1所述的方法,其特征在于,所述通过计算所述备数据库服务器和从数据库服务器分别最后一次读取到主数据库服务器日志中的位置的差值,确定从数据库服务器在读取备数据库服务器日志时的起始位置具体包括以下步骤:
    获得备数据库服务器最后一次读取到主数据库服务器日志中的位置为第一位置;
    获得从数据库服务器最后一次读取到主数据库服务器日志中的位置为第二位置;
    获得备数据库服务器日志结束的位置为第三位置;
    比较第一位置与第二位置;
    若第一位置等于第二位置,确定第三位置为从数据库服务器读取备数据库服务器日志时的起始位置;
    若第一位置大于第二位置,确定从数据库服务器读取备数据库服务器日志时的起始位置为第三位置减去第一位置与第二位置的偏移量;
    若第一位置小于第二位置,将从数据库服务器的中继日志中取得的第二位置之后的日志信息,发送给所述备数据库服务器使其执行所述日志信息,获得执行日志信息后的备数据库服务器日志结束的位置为更新的第三位置,确定从数据库服务器读取备数据库服务器日志时的起始位置为更新的第三位置。
    根据权利要求1所述的方法,其特征在于,在监测到所述主数据库服务器的运行状态异常时,还包括:
    在预设的间隔时间后,再判断所述主数据库服务器的运行状态是否异常;
    如果是,则以所述备数据库服务器代替主数据库服务器提供写访问,执行所述从库切换步骤;
    如果否,则继续监测数据库系统中主数据库服务器的运行状态。
    根据权利要求1所述的方法,其特征在于,将所述备数据库服务器设置为所述从数据库服务器的主服务器之后,还包括:
    发出使所述从数据库服务器启动复制的指令。
    根据权利要求1所述的方法,其特征在于,还包括:
    监测所述从数据库服务器;
    在监测到所述从数据库服务器运行状态异常时,增加新的从数据库服务器,并建立所述新的从数据库服务器与所述主数据库服务器之间的从属关系。
    根据权利要求1‑7任意一项所述的方法,其特征在于,所述监测主数据库服务器的运行状态具体在所述从数据库服务器端监测,所述从库切换步骤具体在所述从数据库服务器端执行。
    一种实现数据库双主改造的装置,其特征在于,包括:
    监测单元:用于监测主数据库服务器的运行状态,将所述运行状态发送至切换单元,其中,所述主数据库服务器提供写访问,配置有与其同步复制的备数据库服务器,在监测到所述主数据库服务器的运行状态异常时,以所述备数据库服务器代替主数据库服务器提供写访问;
    切换单元:用于在监测到所述主数据库服务器的运行状态异常时,通过计算所述备数据库服务器和从数据库服务器分别最后一次读取到主数据库服务器日志中的位置的差值确定从数据库服务器在读取备数据库服务器日志时的起始位置,将所述备数据库服务器设置为所述从数据库服务器的主服务器。

    说明书

    说明书一种实现数据库双主改造的方法及装置
    技术领域
    本发明涉及数据库领域,特别涉及一种实现数据库双主改造的方法及装置。
    背景技术
    随着使用数据库应用的发展,各种应用对数据库系统稳定性的要求不断提高。
    数据库系统一般为单主多从构架,主数据库服务器为应用程序提供写入访问,从数据库服务器为应用程序提供只读访问。当主数据库服务器故障时,服务暂停,随后启用从数据库服务器中的一台做主库服务器,对其进行与主数据库服务器相同的配置,接受应用程序的写入操作,重新启动写入服务,重新配置从数据库服务器,将从数据库服务器的主服务器设置为重新定位的主数据库服务器。但是,由于单主多从构架的数据库系统在主数据库服务器发生故障时,服务会发生暂停,导致服务的连续性降低。
    目前,MY SQL‑MMM软件可以用来实现在主数据库服务器发生故障时自动切换主从关系,不必服务暂停,但是,从数据库服务器连接备数据库服务器的时间,与备用数据库服务器接替主数据库服务器的时间之间有一端延时,造成从数据库服务器会丢失延时这段时间内的写入数据,而且,该软件大概每个小时都会进行一次主备的相互切换,切换时间大概有2秒会无法访问数据库,造成了该软件现在已经无法满足各种应用对数据库系统稳定性和服务的连续性越来越高的要求。
    发明内容
    有鉴于此,本发明的主要目的在于提供一种实现数据库双主改造的方法及装置以实现保证数据库系统能够连续服务且不丢失数据的目的。
    本发明提供了一种实现数据库双主改造的方法,该方法包括:
    监测主数据库服务器的运行状态,其中,所述主数据库服务器提供写访问,配置有与其同步复制的备数据库服务器;
    在监测到所述主数据库服务器的运行状态异常时,以所述备数据库服务器代替主数据库服务器提供写访问;
    执行以下从库切换步骤,包括:
    通过计算所述备数据库服务器和从数据库服务器分别最后一次读取到主数据库服务器日志中的位置的差值,确定从数据库服务器在读取备数据库服务器日志时的起始位置;
    将所述备数据库服务器设置为所述从数据库服务器的主服务器。
    优选地,所述主数据库服务器与所述备数据库服务器共同使用一个第一虚拟IP,该第一虚拟IP用于写访问。
    优选地,所述从数据库服务器共同使用一个第二虚拟IP,该第二虚拟IP用于读访问。
    优选地,所述通过计算所述备数据库服务器和从数据库服务器分别最后一次读取到主数据库服务器日志中的位置的差值,确定从数据库服务器在读取备数据库服务器日志时的起始位置具体包括以下步骤:
    获得备数据库服务器最后一次读取到主数据库服务器日志中的位置为第一位置;
    获得从数据库服务器最后一次读取到主数据库服务器日志中的位置为第二位置;
    获得备数据库服务器日志结束的位置为第三位置;
    比较第一位置与第二位置;
    若第一位置等于第二位置,确定第三位置为从数据库服务器读取备数据库服务器日志时的起始位置;
    若第一位置大于第二位置,确定从数据库服务器读取备数据库服务器日志时的起始位置为第三位置减去第一位置与第二位置的偏移量;
    若第一位置小于第二位置,将从数据库服务器的中继日志中取得的第二位置之后的日志信息,发送给所述备数据库服务器使其执行所述日志信息,获得执行日志信息后的备数据库服务器日志结束的位置为更新的第三位置,确定从数据库服务器读取备数据库服务器日志时的起始位置为更新的第三位置。
    优选地,在监测到所述主数据库服务器的运行状态异常时,还包括:
    在预设的间隔时间后,再判断所述主数据库服务器的运行状态是否异常;
    如果是,则以所述备数据库服务器代替主数据库服务器提供写访问,执行所述从库切换步骤;
    如果否,则继续监测数据库系统中主数据库服务器的运行状态。
    优选地,将所述备数据库服务器设置为所述从数据库服务器的主服务器之后,还包括:
    发出使所述从数据库服务器启动复制的指令。
    优选地,还包括:
    监测所述从数据库服务器;
    在监测到所述从数据库服务器运行状态异常时,增加新的从数据库服务器,并建立所述新的从数据库服务器与所述主数据库服务器之间的从属关系。
    优选地,所述监测主数据库服务器的运行状态具体在所述从数据库服务器端监测,所述从库切换步骤具体在所述从数据库服务器端执行。
    本发明还提供一种实现数据库双主改造的装置,包括:
    监测单元:用于监测主数据库服务器的运行状态,将所述运行状态发送至切换单元,其中,所述主数据库服务器提供写访问,配置有与其同步复制的备数据库服务器,在监测到所述主数据库服务器的运行状态异常时,以所述备数据库服务器代替主数据库服务器提供写访问;
    切换单元:用于在监测到所述主数据库服务器的运行状态异常时,通过计算所述备数据库服务器和从数据库服务器分别最后一次读取到主数据库服务器日志中的位置的差值,确定从数据库服务器在读取备数据库服务器日志时的起始位置,将所述备数据库服务器设置为所述从数据库服务器的主服务器。
    可见本发明具有如下有益效果:
    由于本发明监测了主数据库服务器的运行状态,从而可以在主数据库服务器宕机时,由与其同步复制的备数据库服务器代替主数据库服务器提供写访问,不需要在主数据库服务器正常的状态下频繁的进行主数据库服务器和备数据库服务器之间的切换,满足了对数据库系统服务连续性的要求;在主数据库服务器与备数据库服务器切换之后,通过计算所述备数据库服务器和从数据库服务器分别最后一次读取到主数据库服务器日志中的位置的差值,确定从数据库服务器在读取备数据库服务器日志时的起始位置,从而保证了在延时的情况下,从数据库服务器或者备数据库服务器均不会发生丢失写入数据的情况,满足了对数据系统稳定性的要求。
    附图说明
    图1是本发明可以实施的一种数据库系统架构图例;
    图2是本发明一种实现数据库双主改造的方法的实施例的流程图;
    图3是本发明确定从数据库服务器读取备数据库服务器日志的起始位置的流程图例;
    图4是本发明一种实现数据库双主改造的装置的实施例的组成图。
    具体实施方式
    为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明实施例作进一步详细的说明。
    为了使得本发明以下实施例更加易于理解,首选介绍本发明可以实施的一种数据库系统架构,参见图1,该数据库系统的结构图可以如图1所示,所述数据库系统包括主数据库服务器101,与主数据库服务器同步复制的备数据库服务器102,至少一个从属于所述主数据库服务器的从数据库服务器,例如从数据库服务器103、从数据库服务器104、从数据库服务器105,其中主数据库服务器101负责提供写访问,备数据库服务器102与主数据库服务器101做成主备模式,从数据库服务器103到105负责读访问,具体地,可以利用MYSQL搭建该数据库系统架构,可以由MYSQL提供的replication实现所述同步复制,由MYSQL提供的lvs控制读访问在从数据库服务器之间轮替执行,当然本发明可以实施的数据库系统不仅局限于这一种架构,当然,该数据库系统架构,还可以利用其他方法或者工具搭建,并不局限于MYSQL或者某一具体工具,在这里介绍该数据库系统架构仅仅是为了使本领域技术人员能够更好地理解,进而实现本发明,而并非以任何方式限制本发明的范围。
    参见图2,为本发明提供的一种实现数据库双主改造的方法的实施例的流程,如图所示,包括:
    S201、监测主数据库服务器的运行状态,其中,所述主数据库服务器提供写访问,配置有与其同步复制的备数据库服务器;
    例如,在所述主数据库服务器的从属服务器端对主数据库服务器进行监测,其中,所述从数据库服务器提供读访问,是所述主数据库服务器的从属服务器,监测所述主数据库服务器的运行状态,可以通过以下步骤实现监测:向主数据库服务器发送写访问的数据,在从数据库服务器端正常的情况下,通过从数据库服务器发出读访问,如果读访问能够获得写访问的数据,则认为所述主数据库服务器运行状态正常,否则运行状态异常。
    S202、在监测到主数据库服务器的运行状态异常时,以所述备数据库服务器代替主数据库服务器提供写访问;
    例如,可以由MYSQL的keeplived实现在主数据库服务器故障时,所述备数据库服务器代替主数据库服务器提供写访问。
    S203、执行以下从库切换步骤:
    需要说明的是,执行以下从库切换步骤是在监测到所述主数据库服务器的运行状态异常后执行,所述从库切换步骤包括:
    S203.1、通过计算所述备数据库服务器和从数据库服务器分别最后一次读取到主数据库服务器日志中的位置的差值,确定从数据库服务器在读取备数据库服务器日志时的起始位置;
    需要说明的是,在本发明具体实施时,若步骤S101步骤所述监测主数据库服务器运行状态在所述从数据库服务器端监测,则在该步骤S102中所述从数据库服务器可以具体为该监测所述主数据库服务器的从数据库服务器,若步骤S101步骤所述检测主数据库服务器运行状态在单独的数据库管理服务器端进行检测,则在该步骤S102中所述从数据库服务器可以具体为所述主数据库服务器所有的从属数据库服务器,因此,在本发明的实施场景不同和需求不同的情况下,所述从数据库服务器具体所指的范围可以不同。
    S203.2、将所述备数据库服务器设置为所述从数据库服务器的主服务器。
    可见,在步骤S201中,本发明通过监测主数据库服务器的运行状态,从而可以在步骤S202主数据库服务器宕机时,由与其同步复制的备数据库服务器代替主数据库服务器提供写访问,不影响系统的正常访问,因此不需要在主数据库服务器正常的状态下频繁的进行主数据库服务器和备数据库服务器之间的切换,满足了对数据库系统服务连续性的要求;在步骤S202主数据库服务器与备数据库服务器切换之后,在步骤S203.2从数据库服务器连接到备数据库服务器之前,本发明提出步骤S203.1通过计算所述备数据库服务器和从数据库服务器分别最后一次读取到主数据库服务器日志中的位置的差值,确定从数据库服务器在读取备数据库服务器日志时的起始位置,从而保证了在延时的情况下,从数据库服务器或者备数据库服务器均不会发生丢失写入数据的情况,满足了对数据系统稳定性的要求。
    在本发明的另一个优选实施例中,所述主数据库服务器与所述备数据库服务器可以共同使用一个第一虚拟IP,该第一虚拟IP用于写访问,在外部访问使用的写IP不变的情况下,主数据库服务器和备数据库服务器切换不会对外部访问造成影响,另外,还可以将所述负责读访问的从数据库服务器共同使用一个第二虚拟IP,该第二虚拟IP用于读访问,也起到相类似的作用,当然,如果不共同使用一个虚拟IP,还可以通过其他可用的方法在写IP不变的情况下,将写访问数据发送到备数据库服务器,使其达到相同效果,在本发明中并不进行限制。
    在本发明又一优选实施例中,所述通过计算所述备数据库服务器和从数据库服务器分别最后一次读取到主数据库服务器日志中的位置的差值,确定从数据库服务器在读取备数据库服务器日志时的起始位置,参见图3,例如,具体可以包括以下步骤:
    S301、获得备数据库服务器最后一次读取到主数据库服务器日志中的位置为第一位置;
    S302、获得从数据库服务器最后一次读取到主数据库服务器日志中的位置为第二位置;
    需要说明的是,在该实施例中,所述备数据库服务器与所述从数据库服务器在复制主数据库服务器的数据时,读取的是相同的日志文件,在这里,所述第一位置,第二位置均指的是主数据库服务器日志中的位置,根据第一位置与第二位置,可以获知备数据库服务器与从数据库服务器复制了主数据库服务器日志中的哪些数据。
    S303、获得备数据库服务器日志结束的位置为第三位置;
    在该步骤中,该第三位置为所述备数据库服务器本身日志的结束位置,也就是在主数据库服务器和备数据库服务器切换时,备数据库服务器器本身日志的结束位置。
    S304、比较第一位置与第二位置;
    S305、若第一位置等于第二位置,确定第三位置为从数据库服务器读取备数据库服务器日志时的起始位置;
    在该步骤中,若第一位置等于第二位置,说明在主备切换时,备数据库服务器和从数据库服务器,从主数据库服务器中复制了相同数据的内容,在从数据库服务器和备数据库服务器端,都没有丢失任何数据,也就是说,在从数据库连接到备数据库之后,从数据库服务器可以直接在主备切换时备数据库服务器本身日志结束的位置开始从备数据库服务器复制数据,因此,确定第三位置为从数据库服务器读取备数据库服务器日志时的起始位置。
    S306、若第一位置大于第二位置,确定从数据库服务器读取备数据库服务器日志时的起始位置为第三位置减去第一位置与第二位置的偏移量;
    在该步骤中,若第一位置大于第二位置,说明在主备切换时,备数据库服务器比从数据库服务器,从主数据库服务器日志中多复制了一部分数据,若要从数据库服务器不丢失备数据服务器多复制的那部分数据,在从数据库连接到备数据库之后,从数据库服务器应该从备数据库服务器中复制回这部分未从主数据库服务器读取的数据,因此,确定从数据库服务器读取备数据库服务器日志时的起始位置为第三位置减去第一位置与第二位置的偏移量,也就是起始位置=第三位置(第一位置‑第二位置)或者起始位置=第三位置‑第一位置+第二位置。
    S307、若第一位置小于第二位置,将从数据库服务器的中继日志中取得的第二位置之后的日志信息,发送给所述备数据库服务器使其执行所述日志信息,获得执行日志信息后的备数据库服务器日志结束的位置为更新的第三位置,确定从数据库服务器读取备数据库服务器日志时的起始位置为更新的第三位置。
    在该步骤中,若第一位置大于第二位置,说明在主备切换时,备数据库服务器比从数据库服务器,从主数据库服务器日志中少复制了一部分数据,若要备数据库服务器不丢失从数据库服务器多复制的那部分数据,在从数据库连接到备数据库之前,备数据库服务器应该从从数据库服务器中复制回这部分未从主数据库服务器读取的数据,因此,需要将从数据库服务器的中继日志中取得的第二位置之后的日志信息,发送给所述备数据库服务器使其执行所述日志信息,获得执行日志信息后的备数据库服务器日志结束的位置为更新的第三位置,确定从数据库服务器读取备数据库服务器日志时的起始位置为更新的第三位置。
    另外,考虑到有可能出现主数据库服务器本身没有故障,而是网络或者其他原因导致的主数据库服务器短暂运行异常,又恢复正常的情况,在这种情况下,并不需要进行主备切换和从库切换,因此,在监测到所述主数据库服务器的运行状态异常时,还可以包括:
    在预设的间隔时间后,再判断所述主数据库服务器的运行状态是否异常;
    如果是,则以所述备数据库服务器代替主数据库服务器提供写访问,执行所述从库切换步骤;
    如果否,则继续监测数据库系统中主数据库服务器的运行状态。
    在本发明具体实施时,通常需要所述从数据库服务器与其主服务器同步更新,因此,在步骤S203.2将所述备数据库服务器设置为所述从数据库服务器的主服务器之后,还可以包括:发出使所述从数据库服务器启动复制的指令。
    考虑到整个数据库系统的运行稳定,在监测主数据库运行状态的基础上,还可以包括:监测所述从数据库服务器;在监测到所述从数据库服务器运行状态异常时,增加新的从数据库服务器,并建立所述新的从数据库服务器与所述主数据库服务器之间的从属关系。
    另外,为了解决从数据库服务器越来越多所导致的故障恢复时间越长的问题,在本发明的一个优选实施例中,所述监测主数据库服务器的运行状态具体在所述从数据库服务器端监测,所述从库切换步骤具体在所述从数据库服务器端执行,使得每个从数据库服务器端都能够对主数据库服务器的运行状态及时获知,并且对主备切换的动作及时跟随,及时连接到备数据库服务器,尽量降低读访问的影响。
    本发明还提供一种实现数据库双主改造的装置,参见图4,包括:
    监测单元401:用于监测主数据库服务器的运行状态,将所述运行状态发送至切换单元,其中,所述主数据库服务器提供写访问,配置有与其同步复制的备数据库服务器,在监测到所述主数据库服务器的运行状态异常时,以所述备数据库服务器代替主数据库服务器提供写访问;
    切换单元402:用于在监测到所述主数据库服务器的运行状态异常时,通过计算所述备数据库服务器和从数据库服务器分别最后一次读取到主数据库服务器日志中的位置的差值,确定从数据库服务器在读取备数据库服务器日志时的起始位置,将所述备数据库服务器设置为所述从数据库服务器的主服务器。
    需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
    以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

    关 键  词:
    一种 实现 数据库 改造 方法 装置
      专利查询网所有文档均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    0条评论

    还可以输入200字符

    暂无评论,赶快抢占沙发吧。

    关于本文
    本文标题:一种实现数据库双主改造的方法及装置.pdf
    链接地址:https://www.zhuanlichaxun.net/p-4838945.html
    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2017-2018 zhuanlichaxun.net网站版权所有
    经营许可证编号:粤ICP备2021068784号-1