数据库多活方法及装置与流程

文档序号:20216386发布日期:2020-03-31 11:56阅读:349来源:国知局

本申请涉及数据库技术领域,尤其涉及一种数据库多活方法及装置。



背景技术:

随着公司业务的发展,基于容灾和业务扩展性的考虑,业务系统对于数据库多活的需求越来越多。比如,对于某个业务来说,如果某台或单套数据库系统故障,会导致整个业务访问异常,从而导致业务中断;另一方面,单套库的读写能力受制于服务器硬件资源的限制无法持续扩展,也需要实现更多套数据库提供相应的读写服务。

相关技术中,对于集中式架构的数据库,通过搭建备库方式,在主库读写、备库只读来实现读写分离,实现业务的读的多活;对于分布式架构数据库,采用分布式中间件来实现数据库的水平拆分、横向扩展从而做到业务的读写多活。但是,对于集中式架构的数据库,一旦主库发生故障,跟写场景相关的业务将无法继续提供服务,无法做到真正的“数据库多活”,容灾能力差;对于分布式架构的数据库,如果某个节点发生故障,其他节点依然可以提供相应的数据库服务,但是故障节点的数据跟其他节点的数据不同,跟故障数据库节点相关的业务服务将不可使用,也无法做到真正的“数据库多活”,容灾能力差。



技术实现要素:

本申请的目的旨在至少在一定程度上解决上述技术问题之一。

为此,本申请的第一个目的在于提出一种数据库多活方法,该方法通过获取每个待多活的数据库节点的待写入的数据,并将待写入的数据存储至待多活的数据库节点,并将待写入的数据实时同步至数据库架构的其他待多活的数据库节点中,实现了待多活的数据库节点之间的数据同步,避免了单个数据库故障导致整个服务或部分服务不可用的情况,同时也实现了多个数据库节点同时提供服务的多活,提高了容灾能力。

本申请的第二个目的在于提出一种数据库多活装置。

本申请的第三个目的在于提出另一种数据库多活装置。

本申请的第四个目的在于提出一种非临时性计算机可读存储介质。

为达上述目的,本申请第一方面实施例提出了一种数据库多活方法,包括:获取数据库架构中待多活的数据库节点,所述待多活的数据库节点的数量为至少两个;针对每个待多活的数据库节点,获取待写入的数据;将待写入的数据存储至待多活的数据库节点;将所述待写入的数据实时同步至所述数据库架构的其他待多活的数据库节点中,实现待多活的数据库节点之间的数据同步。

本申请实施例的数据库多活方法,通过获取数据库架构中待多活的数据库节点,所述待多活的数据库节点的数量为至少两个;针对每个待多活的数据库节点,获取待写入的数据;将待写入的数据存储至待多活的数据库节点;将所述待写入的数据实时同步至所述数据库架构的其他待多活的数据库节点中,实现待多活的数据库节点之间的数据同步,该方法通过获取每个待多活的数据库节点的待写入的数据,并将待写入的数据存储至待多活的数据库节点,并将待写入的数据实时同步至数据库架构的其他待多活的数据库节点中,实现了待多活的数据库节点之间的数据同步,避免了单个数据库故障导致整个服务或部分服务不可用的情况,同时也实现了多个数据库节点同时提供服务的多活,提高了容灾能力。

为达上述目的,本申请第二方面实施例提出了一种数据库多活装置,包括:获取模块,用于获取数据库架构中待多活的数据库节点,所述待多活的数据库节点的数量为至少两个;所述获取模块,还用于针对每个待多活的数据库节点,获取待写入的数据;存储模块,用于将所述待写入的数据存储至所述待多活的数据库节点;同步模块,用于将所述待写入的数据实时同步至所述数据库架构的其他待多活的数据库节点中,实现待多活的数据库节点之间的数据同步。

本申请实施例的数据库多活装置,通过获取数据库架构中待多活的数据库节点,所述待多活的数据库节点的数量为至少两个;针对每个待多活的数据库节点,获取待写入的数据;将待写入的数据存储至待多活的数据库节点;将所述待写入的数据实时同步至所述数据库架构的其他待多活的数据库节点中,实现待多活的数据库节点之间的数据同步,该装置可实现通过获取每个待多活的数据库节点的待写入的数据,并将待写入的数据存储至待多活的数据库节点,并将待写入的数据实时同步至数据库架构的其他待多活的数据库节点中,实现了待多活的数据库节点之间的数据同步,避免了单个数据库故障导致整个服务或部分服务不可用的情况,同时也实现了多个数据库节点同时提供服务的多活,提高了容灾能力。

为达上述目的,本申请第三方面实施例提出了另一种数据库多活装置,包括:存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上所述的数据库多活方法。

为了实现上述目的,本申请第四方面实施例提出了一种非临时性计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上所述的数据库多活方法。

本申请附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本申请的实践了解到。

附图说明

本申请上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:

图1为根据本申请一个实施例的数据库多活方法的流程示意图;

图2为根据本申请另一个实施例的数据库多活方法的流程示意图;

图3为根据本申请一个实施例的数据库多活装置的结构示意图;

图4为根据本申请一个实施例的另一种数据库多活装置的结构示意图。

具体实施方式

下面详细描述本申请的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本申请,而不能理解为对本申请的限制。

下面参考附图描述本申请实施例的数据库多活方法及装置。本申请提供的数据库多活方法的执行主体为数据库多活装置,数据库多活装置可以为终端设备、服务器等硬件设备,或者为硬件设备上安装的软件。

图1为本申请实施例提供的一种数据库多活方法的流程示意图。如图1所示,该数据库多活方法包括以下步骤:

步骤101,获取数据库架构中待多活的数据库节点,待多活的数据库节点的数量为至少两个。

可以理解,数据库架构中有多个数据库节点,多个数据库节点中需要进行多活的数据库节点作为待多活的数据库节点,其中,待多活的数据节点的数量可根据业务场景需求以获取,比如,需要在同城的跨机房数据库间实现数据的双向复制,此时待多活的数据库节点数量至少为2个;又比如,需要在同城、跨城的多个机房数据库间实现数据的互相复制,即多向复制,此时待多活的数据库节点数量至少为3个。

步骤102,针对每个待多活的数据库节点,获取待写入的数据。

步骤103,将待写入的数据存储至待多活的数据库节点。

不难理解,数据库节点用于处理业务数据,由于业务数据不断变化或更新,因此,为了数据库的完善性,需要将变化或更新的业务数据写入至数据库节点中。在本申请实施例中,针对每个待多活的数据库节点,需要获取待写入的数据,将待写入的数据存储至其中任意一个待多活的数据库节点中。比如,针对每个待多活的数据库节点,将需要更新的数据,存储至其中任意一个待多活的数据库节点中。其中,需要说明的是,待写入的数据可包括但不限于业务变化或更新数据、用户输入数据等,本申请不做具体限制。另外,数据库架构中待多活数据库节点数量的不同,将待写入数据存储至待多活数据库节点的方式也不同。具体参见后续实施例的描述。

步骤104,将待写入的数据实时同步至数据库架构的其他待多活的数据库节点中,实现待多活的数据库节点之间的数据同步。

进一步地,为了实现待多活的数据库节点之间的数据同步,将待写入的数据实时同步至数据库架构的其他待多活的数据库节点中。比如,可通过待多活数据库间数据的双向复制或多向复制实现待多活的数据库节点之间的数据同步。

为了将待写入数据存储至待多活数据库节点时,与存储其他待多活数据库节点间的同步数据时不造成冲突,在本申请实施例中,可根据数据库架构中待多活数据库数量,选择不同的方式将待写入数据存储至待多活数据库节点。

作为一种示例,数据库架构中共3个数据库节点,其中待多活的数据库节点数量为2个,分别为第一数据库节点和第二数据库节点。其中,第一数据库节点和第二数据库节点位于第一区域,另一个数据库节点位于第二区域。比如,位于同城的2个待多活数据库节点提供业务服务,跨城的数据库节点作为异地容灭不提供业务服务。可选地,第一数据库节点,用于在奇数主键值对应的行中存储待写入的数据,在偶数主键值对应的行中存储同步的数据;第二数据库节点,用于在偶数主键值对应的行中存储待写入的数据,在奇数主键值对应的行中存储同步的数据。

也就是说,针对第一数据库节点,奇数主键值对应的行中存储待写入的数据,在偶数主键值对应的行中存储与第二数据库节点同步的数据;针对第二数据库节点,偶数主键值对应的行中存储待写入的数据,在奇数主键值对应的行中存储与第一数据库节点同步的数据。由此,避免了待多活数据库节点写入的数据与同步其他待多活数据库节点的数据存储时的冲突,保障了待多活数据库节点间数据复制链路的连续性;另外,如果其中一个数据库出现故障,另一个数据库可拥有其全量数据,可以完全接替故障服务器继续提供服务,这样,数据库读、写均实现了多活。

作为另一种示例,待多活的数据库节点数量为至少3个时,比如,同城、跨城的多个机房间实现数据的互相复制,即多向复制。可选地,如图2所示,将待写入的数据存储至待多活的数据库节点时,可对待多活的数据库节点进行冲突检测,根据待多活的数据库节点是否处于同步数据库存储状态进行待写入数据的存储,具体步骤如下:

步骤201,对待多活的数据库节点进行冲突检测,判断待多活的数据库节点是否处于同步数据存储状态。

可以理解,对于n(n大于等于3)个待多活数据库节点的架构场景,n台待多活数据库之间进行数据复制以实现数据同步,对于每个待多活数据库节点,有n-1个复制链路,用于同步其他待多活数据库节点的数据;另外,由于待多活数据库节点的增减以及机房扩缩等情况,利用主键值的奇偶配置,将待多活数据库节点的写入数据和同步其他待多活数据库节点的数据进行存储的方式,无法满足实际需求。因此,在本申请实施例中,可采用冲突检测算法对待多活的数据库节点进行冲突检测,判断待多活的数据库节点是否处于同步数据存储状态以进行待写入数据的存储。

步骤202,若待多活的数据库节点处于同步数据存储状态,则重新对待多活的数据库节点进行冲突检测,在待多活的数据库节点未处于同步数据存储状态时,将待写入的数据存储至待多活的数据库节点。

进一步地,若待多活的数据库节点处于同步数据存储状态,也就是待多活数据库节点间正在复制其他待多活数据库节点的数据,以实现数据的同步,如果此时将待写入的数据存储至待多活的数据库节点,将导致该待多活数据库节点数据的写入与同步其他待多活数据库节点的数据存储时造成冲突,因此,需要重新对待多活的数据库节点进行冲突检测,直至待多活的数据库节点未处于同步数据存储状态时,将待写入的数据存储至待多活的数据库节点。由此,避免了待多活数据库节点写入的数据与同步其他待多活数据库节点的数据存储时的冲突,并且每个待多活的数据库节点都拥有其他待多活数据库节点的全量数据,实现了数据库的多活。

本申请实施例的数据库多活方法,通过获取数据库架构中待多活的数据库节点,所述待多活的数据库节点的数量为至少两个;针对每个待多活的数据库节点,获取待写入的数据;将待写入的数据存储至待多活的数据库节点;将所述待写入的数据实时同步至所述数据库架构的其他待多活的数据库节点中,实现待多活的数据库节点之间的数据同步,该方法通过获取每个待多活的数据库节点的待写入的数据,并将待写入的数据存储至待多活的数据库节点,并将待写入的数据实时同步至数据库架构的其他待多活的数据库节点中,实现了待多活的数据库节点之间的数据同步,避免了单个数据库故障导致整个服务或部分服务不可用的情况,同时也实现了多个数据库节点同时提供服务的多活,提高了容灾能力。

与上述几种实施例提供的数据库多活方法相对应,本申请的一种实施例还提供一种数据库多活装置,由于本申请实施例提供的数据库多活装置与上述几种实施例提供的数据库多活方法相对应,因此在前述数据库多活方法的实施方式也适用于本实施例提供的数据库多活装置,在本实施例中不再详细描述。图3为根据本申请一个实施例的数据库多活装置的结构示意图。如图3所示,该数据库多活装置包括:获取模块310、存储模块320、同步模块330。

其中,获取模块310,用于获取数据库架构中待多活的数据库节点,待多活的数据库节点的数量为至少两个;获取模块310,还用于针对每个待多活的数据库节点,获取待写入的数据;存储模块320,用于将所述待写入的数据存储至所述待多活的数据库节点;同步模块330,用于将待写入的数据实时同步至数据库架构的其他待多活的数据库节点中,实现待多活的数据库节点之间的数据同步。

作为本申请实施例的一种可能实现方式,待多活的数据库节点的数量为两个,分别为第一数据库节点和第二数据库节点;第一数据库节点,用于在奇数主键值对应的行中存储待写入的数据,在偶数主键值对应的行中存储同步的数据;第二数据库节点,用于在偶数主键值对应的行中存储待写入的数据,在奇数主键值对应的行中存储同步的数据。

作为本申请实施例的一种可能实现方式,数据库架构包括:位于第一区域的两个数据库节点,以及位于第二区域的一个数据库节点;数据库架构中待多活的数据库节点,为位于第一区域的两个数据库节点。

作为本申请实施例的一种可能实现方式,待多活的数据库节点的数量为至少三个;存储模块320具体用于,对待多活的数据库节点进行冲突检测,判断待多活的数据库节点是否处于同步数据存储状态;若待多活的数据库节点处于同步数据存储状态,则重新对待多活的数据库节点进行冲突检测,在待多活的数据库节点未处于同步数据存储状态时,将待写入的数据存储至待多活的数据库节点。

本申请实施例的数据库多活装置,通过获取数据库架构中待多活的数据库节点,待多活的数据库节点的数量为至少两个;针对每个待多活的数据库节点,获取待写入的数据;将待写入的数据存储至待多活的数据库节点;将待写入的数据实时同步至数据库架构的其他待多活的数据库节点中,实现待多活的数据库节点之间的数据同步,该装置可实现通过获取每个待多活的数据库节点的待写入的数据,并将待写入的数据存储至待多活的数据库节点,并将待写入的数据实时同步至数据库架构的其他待多活的数据库节点中,实现了待多活的数据库节点之间的数据同步,避免了单个数据库故障导致整个服务或部分服务不可用的情况,同时也实现了多个数据库节点同时提供服务的多活,提高了容灾能力。

为了实现上述实施例,本申请还提出另一种数据库多活装置,图4为本申请实施例提供的另一种数据库多活装置的结构示意图。该数据库多活装置包括:

存储器1001、处理器1002及存储在存储器1001上并可在处理器1002上运行的计算机程序。

处理器1002执行所述程序时实现上述实施例中提供的数据库多活方法。

进一步地,数据库多活装置还包括:

通信接口1003,用于存储器1001和处理器1002之间的通信。

存储器1001,用于存放可在处理器1002上运行的计算机程序。

存储器1001可能包含高速ram存储器,也可能还包括非易失性存储器(non-volatilememory),例如至少一个磁盘存储器。

处理器1002,用于执行所述程序时实现上述实施例所述的数据库多活方法。

如果存储器1001、处理器1002和通信接口1003独立实现,则通信接口1003、存储器1001和处理器1002可以通过总线相互连接并完成相互间的通信。所述总线可以是工业标准体系结构(industrystandardarchitecture,简称为isa)总线、外部设备互连(peripheralcomponent,简称为pci)总线或扩展工业标准体系结构(extendedindustrystandardarchitecture,简称为eisa)总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图4中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。

可选的,在具体实现上,如果存储器1001、处理器1002及通信接口1003,集成在一块芯片上实现,则存储器1001、处理器1002及通信接口1003可以通过内部接口完成相互间的通信。

处理器1002可能是一个中央处理器(centralprocessingunit,简称为cpu),或者是特定集成电路(applicationspecificintegratedcircuit,简称为asic),或者是被配置成实施本申请实施例的一个或多个集成电路。

为了实现上述实施例,本申请实施例还提出一种非临时性计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上述实施例的数据库多活方法。

在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本申请的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。

此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本申请的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。

流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现定制逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本申请的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本申请的实施例所属技术领域的技术人员所理解。

在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,"计算机可读介质"可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(ram),只读存储器(rom),可擦除可编辑只读存储器(eprom或闪速存储器),光纤装置,以及便携式光盘只读存储器(cdrom)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。

应当理解,本申请的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。如,如果用硬件来实现和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(pga),现场可编程门阵列(fpga)等。

本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。

此外,在本申请各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。

上述提到的存储介质可以是只读存储器,磁盘或光盘等。尽管上面已经示出和描述了本申请的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本申请的限制,本领域的普通技术人员在本申请的范围内可以对上述实施例进行变化、修改、替换和变型。

当前第1页1 2 3 
网友询问留言 留言:0条
  • 还没有人留言评论。精彩留言会获得点赞!