CN113868022A - 一种数据库的主从切换方法及装置 - Google Patents

一种数据库的主从切换方法及装置 Download PDF

Info

Publication number
CN113868022A
CN113868022A CN202111101760.8A CN202111101760A CN113868022A CN 113868022 A CN113868022 A CN 113868022A CN 202111101760 A CN202111101760 A CN 202111101760A CN 113868022 A CN113868022 A CN 113868022A
Authority
CN
China
Prior art keywords
database
binary log
backup
task
incremental
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202111101760.8A
Other languages
English (en)
Inventor
胡晓峰
胡新静
刘先攀
张纪宽
田勇
矫恒浩
王宝云
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Juhaokan Technology Co Ltd
Original Assignee
Juhaokan Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Juhaokan Technology Co Ltd filed Critical Juhaokan Technology Co Ltd
Priority to CN202111101760.8A priority Critical patent/CN113868022A/zh
Publication of CN113868022A publication Critical patent/CN113868022A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1458Management of the backup or restore process
    • G06F11/1469Backup restoration techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/25Integrating or interfacing systems involving database management systems

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Quality & Reliability (AREA)
  • Data Mining & Analysis (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请公开了一种数据库的主从切换方法及装置,用于解决主从切换时管理节点单点以及数据丢失的问题。本申请中提供的方法包括:管理节点在作为当前主数据库的第一数据库发生故障时,将所述第一数据库的从数据库中的第二数据库切换为主数据库;从所述第二数据库中获取数据补偿的起始位置,向备份服务节点发送数据补偿任务,所述数据补偿任务用于指示所述备份服务节点根据所述起始位置从所述备份数据文件中获取增量二进制日志,并写入所述第二数据库,完成数据补偿。

Description

一种数据库的主从切换方法及装置
技术领域
本申请涉及计算机技术领域,特别涉及一种数据库的主从切换方法及装置。
背景技术
MySQL是一种数据库管理***。一般的为了增强***的可靠性和稳定性,经常使用主备模式来部署在***中使用的数据库,目前MySQL通常包括一个主数据库和至少一个从数据库,主数据库用于提供数据管理和数据查询等功能,从数据库用于备份主数据库中的数据,用以在主数据库发生故障时代替主数据库提供相应的功能。在MySQL数据库中实现主从模式的方案为:从数据库从主数据库获取二进制日志文件,将该二进制日志(binlog)文件转换为中继日志文件(relaylog),根据中继日志文件在备份数据库中更新数据并生成备份数据库的二进制日志文件。
一些情况下,主数据库故障时,由于网络传输等原因,主数据库上的一些二进制日志还未被同步到从数据库,在该情况下,从数据库被切换为主数据库会导致一些二进制日志的丢失,进而可能导致一些业务的中断。
发明内容
本申请实施例提供了一种数据库的主从切换方法及装置,用以解决主从切换中数据丢失的问题。
第一方面,本申请实施例提供了一种备份服务节点,包括:
任务调度单元,用于在作为当前主数据库的第一数据库故障时,确定管理节点指示的数据补偿的起始位置和需切换作为主数据库的第二数据库;所述起始位置为所述第二数据库包括的最近从所述第一数据库同步的二进制日志的位置;
第一执行单元,用于根据所述起始位置获取备份数据文件中的增量二进制日志;
其中,所述备份数据文件包括所述第一执行单元实时从当前主数据库中复制的二进制日志文件,所述增量二进制日志为所述备份数据文件中包括的从所述第一数据库复制的二进制日志文件中位置位于所述起始位置之后的二进制日志;
所述第一执行单元,还用于将所述增量二进制日志写入所述第二数据库。
基于上述方案,备份服务节点当确定作为主数据库的第一数据库故障时,确定管理节点指示的数据补偿的起始位置和需切换作为主数据库的第二数据库,根据所述起始位置获取备份数据文件中的增量二进制日志并写入第二数据库中,解决了主从数据库切换时的数据丢失问题。
在一些实施例中,所述备份服务节点包括所述第一执行单元在内的多个执行单元,所述任务调度单元,具体用于:
接收管理节点发送的数据补偿任务,所述数据补偿任务包括所述起始位置、所述第一数据库的标识以及所述第二数据库的标识,所述数据补偿任务用于指示所述备份服务节点根据所述起始位置从所述备份数据文件中获取增量二进制日志,并写入所述第二数据库;
根据映射关系,确定所述第一数据库的标识所对应的执行单元;所述映射关系用于表征主数据库的标识与用于实时复制主数据库的二进制日志的执行单元的标识之间的关联关系;
任务调度单元向所述执行单元发送数据恢复任务,所述数据恢复任务用于指示所述执行单元根据所述起始位置从所述第一数据库的备份数据文件中获取增量二进制日志,并写入所述第二数据库。
基于上述方案,不同的执行单元执行不同的主数据库的备份任务,提高了备份服务节点的性能。根据执行单元与备份任务的映射关系,可以准确的找到与第一数据库的标识对应的数据备份文件所在的第一执行单元。
在一些实施例中,所述执行单元,具体用于接收所述任务调度单元发送的数据恢复任务;
根据所述起始位置从所述第一数据库的备份数据文件中获取所述增量二进制日志;
将所述增量二进制日志写入所述第二数据库的标识对应的所述第二数据库。
基于上述方案,执行单元接收数据恢复任务,并获取增量二进制日志,执行数据补偿任务,避免了第二数据库相对第一数据库的数据丢失问题。
在一些实施例中,任务调度单元,还用于接收所述第一数据库的备份任务,根据所述备份服务节点包括的多个执行单元的资源使用情况从所述多个执行单元中确定执行所述第一数据库的备份任务的所述第一执行单元,并向所述第一执行单元发送指示信息,所述指示信息用于指示所述第一执行单元从所述第一数据库复制二进制日志。
基于上述方案,任务调度单元根据执行单元的资源使用情况确定第一数据库备份任务的第一执行单元,避免了执行单元因负载过多导致执行备份任务中断的问题。任务调度单元指示第一执行单元从第一数据库复制二进制日志,为数据补偿任务提供了数据备份文件,保证数据补偿任务的执行。
第二方面,本申请实施例提供了一种管理节点,包括:
处理单元,用于在作为当前主数据库的第一数据库故障时,将所述第一数据库的从数据库中的第二数据库切换为主数据库;
通信单元,用于从所述第二数据库中获取数据补偿的起始位置,所述起始位置为所述第二数据库包括的最近从所述第一数据库同步的二进制日志的位置;
通信单元,还用于指示备份服务节点根据所述起始位置从备份数据文件中获取增量二进制日志,并写入所述第二数据库;
其中,所述备份数据文件包括所述备份服务节点实时从当前主数据库中复制的二进制日志文件,所述增量二进制日志为从所述第一数据库复制的二进制日志文件中位置位于所述起始位置之后的二进制日志。
在一些实施例中,所述通信单元,具体用于向备份服务节点发送数据补偿任务,所述数据补偿任务包括所述起始位置、所述第一数据库的标识以及所述第二数据库的标识,所述数据补偿任务用于指示所述备份服务节点根据所述起始位置从所述备份数据文件中获取增量二进制日志,并写入所述第二数据库。
第三方面,本申请实施例提供了一种数据库的主从切换方法,所述方法应用于备份服务节点,包括:
在作为当前主数据库的第一数据库故障时,确定管理节点指示的数据补偿的起始位置和需切换作为主数据库的第二数据库;
所述起始位置为所述第二数据库包括的最近从所述第一数据库同步的二进制日志的位置;
根据所述起始位置获取备份数据文件中的增量二进制日志;
其中,所述备份数据文件包括所述备份服务节点实时从当前主数据库中复制的二进制日志文件,所述增量二进制日志为所述备份数据文件中包括的从所述第一数据库复制的二进制日志文件中位置位于所述起始位置之后的二进制日志;
将所述增量二进制日志写入所述第二数据库。
在一些实施例中,所述确定管理节点指示的数据补偿的起始位置和需切换作为主数据库的第二数据库,包括:
接收管理节点发送的数据补偿任务,所述数据补偿任务包括所述起始位置、所述第一数据库的标识以及所述第二数据库的标识,所述数据补偿任务用于指示所述备份服务节点根据所述起始位置从所述备份数据文件中获取增量二进制日志,并写入所述第二数据库。
第四方面,本申请实施例提供了一种数据库的主从切换方法,所述方法应用于管理节点,包括:
在作为当前主数据库的第一数据库故障时,将所述第一数据库的从数据库中的第二数据库切换为主数据库;
从所述第二数据库中获取数据补偿的起始位置,所述起始位置为所述第二数据库包括的最近从所述第一数据库同步的二进制日志的位置;
指示备份服务节点根据所述起始位置从备份数据文件中获取增量二进制日志,并写入所述第二数据库;
其中,所述备份数据文件包括所述备份服务节点实时从当前主数据库中复制的二进制日志文件,所述增量二进制日志为从所述第一数据库复制的二进制日志文件中位置位于所述起始位置之后的二进制日志。
在一些实施例中,指示备份服务节点根据所述起始位置从备份数据文件中获取增量二进制日志,并写入所述第二数据库,可以通过如下方式实现:向备份服务节点发送数据补偿任务,所述数据补偿任务包括所述起始位置、所述第一数据库的标识以及所述第二数据库的标识,所述数据补偿任务用于指示所述备份服务节点根据所述起始位置从所述备份数据文件中获取增量二进制日志,并写入所述第二数据库。
第五方面,本申请实施例提供了一种数据库的主从切换装置,包括:
存储器以及处理器;
存储器,用于存储程序指令;
处理器,用于调用所述存储器中存储的程序指令,按照获得的程序执行第三方面或者第三方面的任一实施例所述的方法,或者执行第四方面或第四方面的任一实施例所述的方法。
另外,第二方面至第五方面中任一种实现方式所带来的技术效果可参见第一方面不同实现方式所带来的技术效果,此处不再赘述。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种数据库的主从切换的业务***架构示意图;
图2A为本申请实施例提供的一种备份服务节点的结构示意图;
图2B为本申请实施例提供的另一种备份服务节点的结构示意图;
图3为本申请实施例提供的一种数据库的主从切换方法的流程示意图;
图4为本申请实施例提供的一种数据库的主从切换的装置示意图;
图5为本申请实施例提供的另一种数据库的主从切换的装置示意图。
具体实施方式
为使本申请的目的、实施方式和优点更加清楚,下面将结合本申请示例性实施例中的附图,对本申请示例性实施方式进行清楚、完整地描述,显然,所描述的示例性实施例仅是本申请一部分实施例,而不是全部的实施例。需要说明的是,本申请中对于术语的简要说明,仅是为了方便理解接下来描述的实施方式,而不是意图限定本申请的实施方式。除非另有说明,这些术语应当按照其普通和通常的含义理解。
图1示出了本申请提供的一种数据库的主从切换的业务***的架构示意图,应理解,本申请实施例并不限于图1所示的***中,此外,图1中的装置可以是硬件,也可以是从功能上划分的软件或者以上二者结合后的结构。如图1所示,本申请提供的业务***中包括管理节点、数据库和备份服务节点。数据库可以采用MySQL。目前MySQL通常包括一个主数据库和至少一个备份数据库,主数据库用于提供数据管理和数据查询等功能,备份数据库用于备份主数据库中的数据,用以在主数据库发生故障时代替主数据库提供相应的功能。图1中以数据库包括主数据库和该主数据库对应的N个从数据库为例。需要说明的是,业务***中包括的主数据库数量本申请实施例不做具体限定。在MySQL数据库中实现主备模式的方案为:备份数据库从主数据库获取二进制日志(bin log)文件,将该二进制日志文件转换为中继日志文件(relay log),根据中继日志文件在备份数据库中更新数据并生成备份数据库的二进制日志文件。
二进制日志文件,用于记录MySQL中所有修改数据库数据的事件。所谓的事件,其实就是对数据库的一次操作记录,其中包括MySQL服务器执行的语句、语句的执行时间点、发起执行的客户线程ID、语句执行花费的时间开销等信息。操作可以包括创建操作(create)***操作(insert),删除表的操作(drop),更新操作(update)等等。本申请所述的二进制日志文件则包含了MySQL数据库当前使用的所有二进制日志文件。
一些实施例中,中继日志文件的格式与二进制日志的格式相同。从服务器获取主数据库的二进制日志之后就可解析并对从数据库的数据做同样的更新。示例性地,从数据库有两个线程,I/O线程、SQL线程。I/O线程用于下载主数据库的二进制日志,每次I/O线程启动时在本地创建一个中继日志,SQL线程获取中继日志的数据进行从库更新。SQL线程在读取完全部的更新语句后自动删除relay日志文件。
管理节点可以是一个服务器或者是服务器集群。服务器集群中可以包括多个服务器。管理节点用于对数据库进行管理,比如执行主从数据库的切换。为数据库下发服务任务,比如存储任务或者读取任务等。管理节点用于提供数据库高可用服务功能,或者说管理节点中可以部署一个或者多个数据库高可用服务。示例性地,管理节点可以采用Orchestrator服务***。即数据库高可用服务可以采用Orchestrator数据库高可用服务。
备份服务节点采用由一个服务器或多个服务器来实现,当使用多个服务器时,可通过集群的方式部署。备份服务节点支持实时的从业务***的主数据库中复制二进制日志。管理节点在确定某个主数据库发生故障时,将该发生故障的主数据库称为第一数据库。即在当前主数据库的第一数据库故障时,可以将第一数据库的从数据库中的第二数据库切换为主数据库。然后从第二数据库中获取数据补偿的起始位置。起始位置可以理解为第二数据库包括的最近从第一数据库同步的二进制日志的位置。可以理解的是,每条二进制日志存储到二进制日志文件都对应有一个位置。因此这里的起始位置,可以理解为第二数据库实时从第一数据库同步的最新的二进制日志所在的位置。进一步地,管理节点可以指示备份服务节点根据起始位置执行第二数据库的数据补偿。可以将起始位置、第一数据库的标识和第二数据库的标识指示给备份服务节点。从而备份服务节点在作为当前主数据库的第一数据库故障时,确定管理节点指示的数据补偿的起始位置和需切换作为主数据库的第二数据库。进而在管理节点的指示下从备份数据文件中获取增量二进制日志,并将增量二进制日志写入第二数据库。备份数据文件包括备份服务节点实时从当前主数据库中复制的二进制日志文件,增量二进制日志为从第一数据库复制的二进制日志文件中位置位于起始位置之后的二进制日志。
在一些实施例中,管理节点指示所述备份服务节点根据所述起始位置从备份数据文件中获取增量二进制日志,并写入所述第二数据库时,可以通过如下方式实现:管理节点向备份服务节点发送数据补偿任务,数据补偿任务包括起始位置、第一数据库的标识以及第二数据库的标识,数据补偿任务用于指示备份服务节点根据起始位置从备份数据文件中获取增量二进制日志,并写入第二数据库。
进一步地,备份服务为节点接收管理节点发送的数据补偿任务,数据补偿任务包括起始位置、第一数据库的标识以及第二数据库的标识,数据补偿任务用于指示备份服务节点根据起始位置从备份数据文件中获取增量二进制日志,并写入第二数据库。
在一些实施例中,备份服务节点在根据所述起始位置获取备份数据文件中的增量二进制日志时,可以通过如下方式实现:
备份服务节点根据第一数据库的标识与用于存储第一数据库的备份数据文件的存储位置之间的关联关系,确定第一数据库的备份数据文件的存储位置;根据起始位置从存储位置获取备份数据文件中的增量二进制日志;将增量二进制日志写入第二数据库的标识对应的第二数据库。
下面从逻辑功能划分角度对备份服务节点的结构进行描述。参见图2A所示,备份服务节点包括存储单元、任务调度单元和执行单元,图2A以N个执行单元为例。存储单元的功能可以由一个或者多个存储服务器来实现。任务调度单元的功能也可以由一个或者多个服务器来实现。执行单元可以由一个或者多个服务器来实现,一些实施例中,不同的执行单元可以部署于不同的服务器中。执行单元可以称为执行节点,还可以采用其它的称呼,本申请对此不作具体限定。执行单元可以采用容器的部署方式,比如采用pod的部署方式。一些实施例中,执行单元用于为主数据库执行二进制日志的备份任务,可以实时从主数据库中复制二进制日志。一些实施例中,一个执行单元可以为多个主数据库执行备份任务,不同的执行单元为不同的主数据库执行备份任务。示例性地,可以为每个执行单元统一配置可运行的最大备份任务数量,不同的备份任务对应不同的主数据库的备份。在执行单元中运行的备份任务数量达到最大备份任务数量时,不再接收任务调度单元分配的备份任务,从而保障各个执行单元的备份性能可控。一些实施例中,执行单元可以采用pod部署方式,不同的pod可以为不同的主数据库执行备份任务,比如一个pod可以执行3个主数据库的备份任务为例,参见图2B。
存储单元,可以存储执行备份任务的执行单元与所针对的主数据库的关联关系,比如存储主数据库的标识与用于实时复制该主数据库的二进制日志的执行单元的标识之间的关联关系。
当业务***中部署主数据库,执行该主数据库的备份任务的执行单元,可以由任务调度单元来从多个执行单元中选择。一些实施例中,任务调度单元在接收到新备份任务时,可以根据业务***中的各个执行单元的资源指标来从多个执行单元中选择某个执行单元来执行新备份任务。示例性地,资源指标可以包括当前备份任务数、处理资源剩余量、内存剩余量、磁盘剩余量等参数。处理资源可以理解为中央处理单元(central processingunit,CPU)资源剩余量。任务调度单元在为新备份任务分配执行单元后,可以将新备份任务对应的主数据库与执行单元之间的关联关系存储到存储单元中。
以第一数据库的备份任务为例,任务调度单元接收第一数据库的备份任务,根据备份服务节点包括的多个执行单元的资源使用情况从多个执行单元中确定执行第一数据库的备份任务的第一执行单元,并向第一执行单元发送指示信息,指示信息用于指示第一执行单元执行第一数据库的备份任务,备份任务指示第一执行单元复制第一数据库的二进制日志。
在一些实施例中,第一执行单元在接收到备份任务后,可以启动二进制备份进程来执行该备份任务。第一执行单元可以针对不同的主数据库的备份任务启动不同的二进制备份进程来执行。第一执行单元还可以执行二进制备份进程的保活操作,监控二进制备份进程执行备份任务是否正常。第一执行单元还可以支持二进制备份进程启停。比如在某个主数据库故障时,管理节点可以在接收数据恢复任务时,停止执行故障的数据库的备份任务,即可以停止从故障的主数据库中复制二进制日志,比如可以停止该故障的主数据库的二进制备份进程。
一些实施例中,业务***中还可以包括监控单元,用于获取各个执行单元的备份任务健康状态信息、资源指标信息、目前备份进度等信息。任务调度单元在为备份任务分配执行单元时,可以从监控单元获取资源指标信息,然后根据资源指标信息来为备份任务分配执行单元。备份任务健康状态信息可以包括执行单元在执行备份任务时执行是否正常,是否存在故障等。目前备份进度可以包括执行单元从主数据库中复制的二进制日志的位置。
示例性地,监控单元还可以监控到某个执行单元执行某个主数据库的备份任务出现故障时,可以执行任务调度单元将该主数据的备份任务迁移的其他执行单元中。
一些实施例中,任务调度单元中部署任务调度服务执行备份任务的分配等功能。示例性地,任务调度单元部署的任务调度服务可以配置为无状态服务,比如支持k8s无状态服务(deployment)部署。任务调度单元在业务***中还可以支持扩缩容。
一种可能的实现方式中,任务调度单元还可以进一步执行数据补偿任务。例如,以针对作为主数据库的第一数据库的从数据库执行数据补偿任务为例。任务调度单元在作为当前主数据库的第一数据库故障时,确定管理节点指示的数据补偿的起始位置和需切换作为主数据库的第二数据库。备份服务节点中的第一数据库对应的执行单元根据起始位置获取第一数据库的备份数据文件中的增量二进制日志。以第一数据库对应的执行单元为第一执行单元为例。第一执行单元根据起始位置获取备份数据文件中的增量二进制日志;然后第一执行单元将增量二进制日志写入第二数据库。
示例性地,管理节点部署的高可用服务将数据补偿任务发送给任务调度单元。数据补偿任务中包括数据补偿的起始位置、第一数据库的标识和第二数据库的标识。任务调度单元可以根据存储单元中记录的第一数据库的标识与执行单元的标识之间的关联关系,找到与第一数据库的标识对应的用于实时复制第一数据库的二进制日志的第一执行单元。任务调度单元向第一执行单元发送数据恢复任务,数据恢复任务用于指示第一执行单元根据起始位置从第一数据库的备份数据文件中获取增量二进制日志,并写入第二数据库。
示例性地,第一执行单元接收任务调度单元发送的数据恢复任务;然后根据起始位置从第一数据库的备份数据文件中获取增量二进制日志;将增量二进制日志写入第二数据库的标识对应的第二数据库。
在一些实施例中,所述执行单元,还用于备份数据的清理,根据任务调度单元指示执行备份任务的迁徙。例如,管理人员可以通过任务调度单元的接口,配置数据清理周期,从而任务调度单元可以周期性地向执行单元触发清理任务,用于清理距离当前时刻超过设定时长的复制的二进制日志。当某一执行单元(为了便于描述,比如旧执行单元)因资源不足等原因无法执行备份任务时,任务调度单元可以从其它执行单元中选择一个执行单元(比如新执行单元)来继续执行该旧执行单元所执行的备份任务,任务调度单元可以将旧执行单元的备份任务迁移到新执行单元。
在一些实施例中,业务***中还可以包括监控单元,监控单元可通过各个执行单元上的通信接口检测执行节点上备份任务的运行状态以及执行节点的资源使用情况等信息。比如,监控单元可以周期性地向各个执行单元获取运行状态以及资源使用情况等信息。再比如,监控单元可以向各个执行单元发送订阅消息,指示订阅的信息以及上报周期。从而各个执行单元周期性地向监控单元上报运行状态以及资源使用情况等信息。
本实施例提供了一种数据库的主从切换方法,图3示例性的示出了数据库的主从切换方法的流程,该流程可由一种数据库的主从切换装置执行,该装置可以位于如图1所示的业务***内。
图3为一种数据库的主从切换方法,具体流程如下:
301,管理节点实时监控主数据库的健康状态,监控到主数据库故障。
302,在主数据库故障时,管理节点选取需切换为主数据库的第二数据库。
以当前主数据库为第一数据库为例,管理节点在作为当前主数据库的第一数据库故障时,管理节点可以从第一数据库的从数据库选择一个数据库作为需切换的主数据库。比如可以选择第一数据库的从数据库中二进制日志位置最大的从数据库。二进制日志位置最大的从数据库可以理解为该从数据库中从主数据库中同步的二进制日志的速率最快效率最高,从而该从数据库中的二进制日志相比主数据库差异最小。
具体地,在MySQL的数据库管理***中,管理节点可以用于提供数据库高可用服务功能,或者说管理节点中可以部署一个或者多个数据库高可用服务。示例性地,管理节点可以采用Orchestrator服务***。即数据库高可用服务可以采用Orchestrator数据库高可用服务,以下简称高可用服务。高可用服务周期性的监测作为主数据库的第一数据库的运行状态,当发现第一数据库故障时,在第一数据库的从数据库中选取第二数据库,将第二数据库切换成新的主数据库。
一些实施例中,若第一数据库的从数据库中,二进制日志位置最大的从数据库只有一个,则选取该数据库作为需切换的主数据库。
另一些实施例中,若所述二进制日志位置最大的从数据库有两个或两个以上,则获取所述二进制日志位置最大的从数据库的中继日志,选出所述中继日志存储的二进制日志位置最大的从数据库作为需切换的主数据库。
又一些实施例中,若所述中继日志位置最大的从数据库有两个或两个以上,则在所述中继日志位置最大的从数据库中选择一个从数据库作为需切换的主数据库,比如可以随机选择一个。
为了便于后续描述,将需切换的从数据库称为第二数据库为例。
303,管理节点获取第二数据库的数据补偿的起始位置。
管理节点选取需切换成主数据库的第二数据库后,获取第二数据库的二进制日志最新位置,该最新位置为数据补偿的起始位置。起始位置为所述第二数据库包括的最近从所述第一数据库同步的二进制日志的位置。
在一些实施例中,从数据库实时复制主数据库中的二进制日志。高可用服务在选取第二数据库作为新的主数据库时,确定第二数据库中最近从所述第一数据库同步的二进制日志的位置,将该位置作为数据补偿的起始位置。
304,管理节点向备份服务节点发送数据补偿任务,指示备份服务节点执行数据补偿任务。
数据补偿任务包括所述起始位置、所述第一数据库的标识以及所述第二数据库的标识,所述数据补偿任务用于指示备份服务节点根据所述起始位置将第一数据库与第二数据库中二进制日志的数据差异补偿到第二数据库中。
备份服务节点采用由一个服务器或多个服务器来实现,当使用多个服务器时,可通过集群的方式部署。一些实施例中,可以在备份服务节点中部署日志备份与应用服务。示例性地,日志备份与应用服务可以包括日志备份与恢复服务以及任务调度服务。日志备份与恢复服务用于执行主数据的备份任务以及升为主数据库的从数据库的数据补偿任务。任务调度服务用于与高可用服务对接,接收数据补偿任务或者备份任务等等。一些实施例中,备份服务节点可以包括多个执行单元和任务调度单元。执行单元可以部署日志备份与恢复服务,任务调度单元部署任务调度服务。
高可用服务获取第二数据库中的二进制日志的同步位置,将数据补偿任务发送给日志备份与应用服务,日志备份与应用服务中的任务调度服务根据数据补偿任务指示日志备份与恢复服务执行数据补偿任务。
在一些实施例中,在管理节点向备份服务节点发送数据补偿任务之前,第二数据库暂停同步状态操作,即为停止从主数据库中复制二进制日志。第一数据库与第二数据库断开连接,结束第一数据库与第二数据库的主从关系。进一步地,管理节点可以将第二数据库设置成只读模式。
在一些实施例中,在管理节点将第二数据库设置成只读模式之后,将第二数据库设置成新的主数据库,并在第二数据库上配置接口,管理节点可通过该接口向备份服务节点触发数据补偿任务。示例性地,高可用服务可以在hook中配置数据补偿任务的参数,通过hook调用日志备份与应用服务,以指示备份服务节点中的执行节点对第二数据库执行数据补偿任务。所述数据补偿任务的参数包括第一数据库的标识、第二数据库的标识以及第二数据库的数据补偿的起始位置。示例性的,hook可以理解为线程钩子或者函数,当有数据补偿任务时,高可用服务通过hook函数经第二数据库上的接口调用日志备份与应用服务,指示备份服务节点上的执行节点对第二数据库执行数据补偿任务。
305,备份服务节点接收到数据补偿任务后,获取增量二进制日志。
备份服务节点接收管理节点发送的数据补偿任务,根据管理节点提供的第一数据库标识,找到与第一数据库的标识对应的第一执行单元,根据数据补偿的起始位置从第一执行单元的与第一数据库的标识对应的备份数据文件中获取增量二进制日志。其中,备份数据文件包括备份服务节点实时从当前主数据库中复制的二进制日志文件。增量二进制日志为从第一数据库复制的二进制日志文件中位置位于起始位置之后的二进制日志。
一些实施例中,每个执行单元存储对应主数据库的备份数据文件。执行单元可以实时从主数据库中复制二进制日志文件并存储到备份数据文件中。
备份服务节点在确定与第一数据库的标识对应的第一执行单元后,可以将数据补偿的起始位置、第一数据库的标识以及第二数据库的标识发送给第一执行单元。第一执行单元从第一数据库的标识对应的备份数据文件中获取增量二进制日志。
306,备份服务节点将获取的增量二进制日志写入第二数据库。
比如,备份服务节点将获取的增量二进制日志写入第二数据库的标识对应的第二数据库。
在一种可能实现的方式中,当与第一数据库的标识对应的备份数据文件中二进制日志的最大位置小于或等于数据补偿的起始位置时,任务调度单元不再指示第一执行单元对第二数据库执行数据补偿任务。
307,备份服务节点将补偿结果反馈给管理节点。
无论备份服务节点是否执行数据补偿任务,都将数据补偿结果反馈给管理节点,以便管理节点进行进一步的处理。
308,管理节点处理补偿结果,恢复服务。
备份服务节点完成数据补偿任务后,将补偿结果反馈给管理节点,管理节点根据补偿结果,恢复服务。
一种示例中,备份服务节点部署的日志备份与应用服务完成数据补偿任务后,将补偿结果通过hook反馈给高可用服务。高可用服务通过hook获取补偿结果,若补偿成功,将第二数据库设置为可写,以恢复服务。
另一种示例中,数据补偿失败或者超时,高可用服务通过配置数据补偿失败或超时的处理策略来执行进一步的操作,比如处理策略为容忍部分数据丢失,其中,容忍丢失的数据量可以包含在处理策略中。数据补偿失败或者超时,高可用服务可以通知管理设备,以通知到管理人员,进而管理人员来处理数据补偿失败或者超时的任务。
一些实施例中,数据补偿失败或者超时时,可以将第二数据库设置为可写,恢复第二数据库的服务。
基于与上述方法的同一构思,参见图4,本申请实施例提供了一种数据库的主从切换装置400。装置400能够执行上述方法中管理节点所执行的各个步骤,为了避免重复,在此不再详述。装置400包括:处理单元401和通信单元402。
处理单元401,用于在作为当前主数据库的第一数据库故障时,将所述第一数据库的从数据库中的第二数据库切换为主数据库。
通信单元402,用于从所述第二数据库中获取数据补偿的起始位置,所述起始位置为所述第二数据库包括的最近从所述第一数据库同步的二进制日志的位置。
通信单元402,还用于指示备份服务节点根据所述起始位置从备份数据文件中获取增量二进制日志,并写入所述第二数据库。
其中,所述备份数据文件包括所述备份服务节点实时从当前主数据库中复制的二进制日志文件,所述增量二进制日志为从所述第一数据库复制的二进制日志文件中位置位于所述起始位置之后的二进制日志。
一些实施例中,所述通信单元402,具体用于向备份服务节点发送数据补偿任务,所述数据补偿任务包括所述起始位置、所述第一数据库的标识以及所述第二数据库的标识,所述数据补偿任务用于指示所述备份服务节点根据所述起始位置从所述备份数据文件中获取增量二进制日志,并写入所述第二数据库。
本申请实施例还提供一种数据库的主从切换装置500,参见图5所示,包括存储器501以及处理器502。可选地,装置500还可以包括通信接口503。其中,装置500通过所述通信接口503与其它设备进行通信。存储器501,用于存储程序指令。
一种可能的场景中,数据库的主从切换装置500可以应用于管理节点。比如处理器502,用于调用所述存储器501中存储的程序指令,按照获得的程序执行上述实施例中管理节点执行的方法。处理器502可以通过通信接口503与备份服务节点进行信息交互。
另一种可能的场景中,数据库的主从切换装置500可以应用于备份服务节点。比如处理器502,用于调用所述存储器501中存储的程序指令,按照获得的程序执行上述实施例中备份服务节点执行的方法。处理器502可以通过通信接口503与管理节点进行信息交互。
本申请实施例中不限定上述存储器501、处理器502以及通信接口503之间的具体连接介质,比如总线,总线可以分为地址总线、数据总线、控制总线等。
在本申请实施例中,处理器可以是通用处理器、数字信号处理器、专用集成电路、现场可编程门阵列或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件,可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
在本申请实施例中,存储器可以是非易失性存储器,比如硬盘(hard disk drive,HDD)或固态硬盘(solID-state drive,SSD)等,还可以是易失性存储器(volatilememory),例如随机存取存储器(random-access memory,RAM)。存储器还可以是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。本申请实施例中的存储器还可以是电路或者其它任意能够实现存储功能的装置,用于存储程序指令和/或数据。
本申请实施例还提供一种计算机可读存储介质,包括程序代码,当程序代码在计算机上运行时,程序代码用于使计算机执行上述本申请实施例上述提供的方法的步骤。
本领域内的技术人员应明白,本申请的实施例可提供为方法、***、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请的方法、设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

Claims (10)

1.一种备份服务节点,其特征在于,包括:
任务调度单元,用于在作为当前主数据库的第一数据库故障时,确定管理节点指示的数据补偿的起始位置和需切换作为主数据库的第二数据库;所述起始位置为所述第二数据库包括的最近从所述第一数据库同步的二进制日志的位置;
第一执行单元,用于根据所述起始位置获取备份数据文件中的增量二进制日志;
其中,所述备份数据文件包括所述第一执行单元实时从当前主数据库中复制的二进制日志文件,所述增量二进制日志为所述备份数据文件中包括的从所述第一数据库复制的二进制日志文件中位置位于所述起始位置之后的二进制日志;
所述第一执行单元,还用于将所述增量二进制日志写入所述第二数据库。
2.如权利要求1所述的备份服务节点,其特征在于,所述备份服务节点包括所述第一执行单元在内的多个执行单元,所述任务调度单元,具体用于:
接收管理节点发送的数据补偿任务,所述数据补偿任务包括所述起始位置、所述第一数据库的标识以及所述第二数据库的标识,所述数据补偿任务用于指示所述备份服务节点根据所述起始位置从所述备份数据文件中获取增量二进制日志,并写入所述第二数据库;
根据映射关系,确定所述第一数据库的标识所对应的执行单元;所述映射关系用于表征主数据库的标识与用于实时复制主数据库的二进制日志的执行单元的标识之间的关联关系;
任务调度单元向所述执行单元发送数据恢复任务,所述数据恢复任务用于指示所述执行单元根据所述起始位置从所述第一数据库的备份数据文件中获取增量二进制日志,并写入所述第二数据库。
3.如权利要求2所述的备份服务节点,其特征在于,所述执行单元,具体用于:
接收所述任务调度单元发送的数据恢复任务;
根据所述起始位置从所述第一数据库的备份数据文件中获取所述增量二进制日志;
将所述增量二进制日志写入所述第二数据库的标识对应的所述第二数据库。
4.如权利要求1-3任一项所述的备份服务节点,其特征在于,所述任务调度单元,还用于接收所述第一数据库的备份任务,根据所述备份服务节点包括的多个执行单元的资源使用情况从所述多个执行单元中确定执行所述第一数据库的备份任务的所述第一执行单元,并向所述第一执行单元发送指示信息,所述指示信息用于指示所述第一执行单元从所述第一数据库复制二进制日志。
5.一种管理节点,其特征在于,包括:
处理单元,用于在作为当前主数据库的第一数据库故障时,将所述第一数据库的从数据库中的第二数据库切换为主数据库;
通信单元,用于从所述第二数据库中获取数据补偿的起始位置,所述起始位置为所述第二数据库包括的最近从所述第一数据库同步的二进制日志的位置;
通信单元,还用于指示备份服务节点根据所述起始位置从备份数据文件中获取增量二进制日志,并写入所述第二数据库;
其中,所述备份数据文件包括所述备份服务节点实时从当前主数据库中复制的二进制日志文件,所述增量二进制日志为从所述第一数据库复制的二进制日志文件中位置位于所述起始位置之后的二进制日志。
6.如权利要求5所述的管理节点,其特征在于,所述通信单元,具体用于向备份服务节点发送数据补偿任务,所述数据补偿任务包括所述起始位置、所述第一数据库的标识以及所述第二数据库的标识,所述数据补偿任务用于指示所述备份服务节点根据所述起始位置从所述备份数据文件中获取增量二进制日志,并写入所述第二数据库。
7.一种数据库的主从切换方法,其特征在于,所述方法应用于备份服务节点,包括:
在作为当前主数据库的第一数据库故障时,确定管理节点指示的数据补偿的起始位置和需切换作为主数据库的第二数据库;
所述起始位置为所述第二数据库包括的最近从所述第一数据库同步的二进制日志的位置;
根据所述起始位置获取备份数据文件中的增量二进制日志;
其中,所述备份数据文件包括所述备份服务节点实时从当前主数据库中复制的二进制日志文件,所述增量二进制日志为所述备份数据文件中包括的从所述第一数据库复制的二进制日志文件中位置位于所述起始位置之后的二进制日志;
将所述增量二进制日志写入所述第二数据库。
8.如权利要求7所述的方法,其特征在于,所述确定管理节点指示的数据补偿的起始位置和需切换作为主数据库的第二数据库,包括:
接收管理节点发送的数据补偿任务,所述数据补偿任务包括所述起始位置、所述第一数据库的标识以及所述第二数据库的标识,所述数据补偿任务用于指示所述备份服务节点根据所述起始位置从所述备份数据文件中获取增量二进制日志,并写入所述第二数据库。
9.一种数据库的主从切换方法,其特征在于,所述方法应用于管理节点,包括:
在作为当前主数据库的第一数据库故障时,将所述第一数据库的从数据库中的第二数据库切换为主数据库;
从所述第二数据库中获取数据补偿的起始位置,所述起始位置为所述第二数据库包括的最近从所述第一数据库同步的二进制日志的位置;
指示备份服务节点根据所述起始位置从备份数据文件中获取增量二进制日志,并写入所述第二数据库;
其中,所述备份数据文件包括所述备份服务节点实时从当前主数据库中复制的二进制日志文件,所述增量二进制日志为从所述第一数据库复制的二进制日志文件中位置位于所述起始位置之后的二进制日志。
10.一种数据库的主从切换装置,其特征在于,包括:
存储器以及处理器;
存储器,用于存储程序指令;
处理器,用于调用所述存储器中存储的程序指令,按照获得的程序执行权利要求7~9任一项所述的方法。
CN202111101760.8A 2021-09-18 2021-09-18 一种数据库的主从切换方法及装置 Pending CN113868022A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111101760.8A CN113868022A (zh) 2021-09-18 2021-09-18 一种数据库的主从切换方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111101760.8A CN113868022A (zh) 2021-09-18 2021-09-18 一种数据库的主从切换方法及装置

Publications (1)

Publication Number Publication Date
CN113868022A true CN113868022A (zh) 2021-12-31

Family

ID=78992939

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111101760.8A Pending CN113868022A (zh) 2021-09-18 2021-09-18 一种数据库的主从切换方法及装置

Country Status (1)

Country Link
CN (1) CN113868022A (zh)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8041679B1 (en) * 2008-06-04 2011-10-18 Symantec Operating Corporation Synthetic differential backups creation for a database using binary log conversion
CN105095245A (zh) * 2014-05-04 2015-11-25 阿里巴巴集团控股有限公司 基于关联型数据库的归档日志同步方法及***
CN106933703A (zh) * 2015-12-30 2017-07-07 阿里巴巴集团控股有限公司 一种数据库数据备份的方法、装置及电子设备
CN108984569A (zh) * 2017-06-05 2018-12-11 中兴通讯股份有限公司 数据库切换方法、***和计算机可读存储介质
CN110795287A (zh) * 2019-10-30 2020-02-14 深圳前海环融联易信息科技服务有限公司 数据恢复方法、***、电子设备及计算机存储介质
CN112286729A (zh) * 2020-11-03 2021-01-29 浪潮云信息技术股份公司 一种指定时间恢复的方法

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8041679B1 (en) * 2008-06-04 2011-10-18 Symantec Operating Corporation Synthetic differential backups creation for a database using binary log conversion
CN105095245A (zh) * 2014-05-04 2015-11-25 阿里巴巴集团控股有限公司 基于关联型数据库的归档日志同步方法及***
CN106933703A (zh) * 2015-12-30 2017-07-07 阿里巴巴集团控股有限公司 一种数据库数据备份的方法、装置及电子设备
CN108984569A (zh) * 2017-06-05 2018-12-11 中兴通讯股份有限公司 数据库切换方法、***和计算机可读存储介质
CN110795287A (zh) * 2019-10-30 2020-02-14 深圳前海环融联易信息科技服务有限公司 数据恢复方法、***、电子设备及计算机存储介质
CN112286729A (zh) * 2020-11-03 2021-01-29 浪潮云信息技术股份公司 一种指定时间恢复的方法

Similar Documents

Publication Publication Date Title
CN111427728B (zh) 状态管理方法、主备切换方法及电子设备
WO2017177941A1 (zh) 主备数据库切换方法和装置
CN101539873B (zh) 数据恢复的方法、数据节点及分布式文件***
CN105354108B (zh) 一种数据备份方法及节点
WO2019020081A1 (zh) 分布式***及其故障恢复方法、装置、产品和存储介质
JP2008059583A (ja) クラスタ・システムならびにクラスタ・システム内でレプリカをバックアップする方法およびプログラム製品
CN106657167B (zh) 管理服务器、服务器集群、以及管理方法
CN106452836B (zh) 主节点设置方法及装置
CN111460039A (zh) 关系型数据库处理***、客户端、服务器及方法
CN108173971A (zh) 一种基于主备切换的MooseFS高可用方法及***
CN109582459A (zh) 应用的托管进程进行迁移的方法及装置
CN114138732A (zh) 一种数据处理方法及装置
CN115658390A (zh) 容器容灾方法、***、装置、设备及计算机可读存储介质
CN113986450A (zh) 一种虚拟机备份方法及装置
CN104793981A (zh) 一种虚拟机集群的在线快照管理方法及装置
CN113946471A (zh) 基于对象存储的分布式文件级备份方法及***
CN114328009A (zh) 基于虚拟化和快照的异构数据库统一容灾备份方法和装置
CN117992283A (zh) 云主机备份方法、装置、计算机设备及存储介质
CN110858168A (zh) 集群节点故障处理方法、装置及集群节点
CN116185697B (zh) 容器集群管理方法、装置、***、电子设备及存储介质
CN110825758B (zh) 一种交易处理的方法及装置
CN111158956A (zh) 一种集群***的数据备份方法及相关装置
CN115878361A (zh) 数据库集群的节点管理方法、装置及电子设备
CN113868022A (zh) 一种数据库的主从切换方法及装置
US20240028611A1 (en) Granular Replica Healing for Distributed Databases

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination