数据库灾备方法、装置及灾备系统与流程

文档序号:16207654发布日期:2018-12-08 07:19阅读:376来源:国知局
本申请涉及数据库
技术领域
:,尤其涉及一种数据库灾备方法、装置及灾备系统。
背景技术
:随着数据量的高速增长,数据库的架构开始由集中式向分布式发展。目前所使用的分布式数据库系统通常包括分布式数据库的中间件、分布式数据库等。为了保证分布式数据库系统的安全性,数据库灾备至关重要。在相关技术中,灾备管理设备先从主中心的中间件中获取需要灾备的数据库,并将针对需要灾备的数据库的读指令发送至主中心的中间件,由主中心的中间件查询数据库路由表读取该数据库的数据,并将读取的数据发送至灾备中心的中间件中,由灾备中心的中间件将该数据写入灾备中心的存储设备中,从而完成数据库灾备。然而,由于主中心的中间件除了需要处理属于灾备数据流的读指令,还需要处理各类业务对数据库的访问,因此主中心的中间件的处理压力比较大,进而影响到各类业务对数据库的访问性能,降低用户使用体验。技术实现要素:有鉴于此,本申请提供一种数据库灾备方法、装置及灾备系统,以解决现有技术会影响各类业务对数据库的访问性能,降低用户使用体验的问题。根据本申请实施例的第一方面,提供一种数据库灾备方法,所述方法应用于灾备系统中主中心的第一灾备引擎设备,所述灾备系统还包含灾备管理设备和灾备中心的第二灾备引擎设备,所述第一灾备引擎设备中预先配置有数据库路由表,所述数据库路由表包含数据表的标识与该数据表的位置;所述方法包括:在接收到所述灾备管理设备发送的读指令时,依据所述读指令携带的待灾备数据库的标识确定待灾备数据表;在所述数据库路由表中查找所述待灾备数据表的位置;依据所述待灾备数据表的位置读取所述待灾备数据表中的数据,并将读取的数据发送至所述第二灾备引擎设备,以使所述第二灾备引擎设备将所述数据写入灾备中心的存储设备中。根据本申请实施例的第二方面,提供一种灾备系统,所述系统包括:灾备管理设备,用于发送携带待灾备数据库的标识的读指令;主中心的第一灾备引擎设备,用于在接收到所述灾备管理设备发送的读指令时,依据所述读指令携带的待灾备数据库的标识确定待灾备数据表;在所述数据库路由表中查找所述待灾备数据表的位置;依据所述待灾备数据表的位置读取所述待灾备数据表中的数据,并将读取的数据发送至所述第二灾备引擎设备;灾备中心的第二灾备引擎设备,用于将所述第一灾备引擎设备发送的数据写入灾备中心的存储设备中;存储设备,用于存储数据。根据本申请实施例的第三方面,提供一种数据库灾备装置,所述装置应用于灾备系统中主中心的第一灾备引擎设备,所述灾备系统还包含灾备管理设备和灾备中心的第二灾备引擎设备,所述第一灾备引擎设备中预先配置有数据库路由表,所述数据库路由表包含数据表的标识与该数据表的位置;所述装置包括:确定模块,用于在接收到灾备管理设备发送的读指令时,依据所述读指令携带的待灾备数据库的标识确定待灾备数据表;查找模块,用于在所述数据库路由表中查找所述待灾备数据表的位置;第一读取模块,用于依据所述待灾备数据表的位置读取所述待灾备数据表中的数据,并将读取的数据发送至灾备中心的第二灾备引擎设备,以使所述第二灾备引擎设备将所述数据写入灾备中心的存储设备中。应用本申请实施例,主中心的第一灾备引擎设备在接收到灾备管理设备发送的读指令时,可以依据读指令携带的待灾备数据库的标识确定待灾备数据表,并在预先配置的数据库路由表中查找待灾备数据表的位置,然后依据待灾备数据表的位置读取待灾备数据表中的数据,并将读取的数据发送至灾备中心的第二灾备引擎设备,以使第二灾备引擎设备将该数据写入灾备中心的存储设备中。基于上述描述可知,由于第一灾备引擎设备中预先配置有数据库路由表,因此通过第一灾备引擎设备可以直接查找本地的数据库路由表完成数据读取,而无需主中心的中间件处理,进而使得主中心的中间件可专门处理各类业务对数据库的访问,因此本申请相对现有技术,主中心的中间件对各类业务的处理性能至少能够提升一倍。附图说明图1为本申请根据一示例性实施例示出的现有的数据库灾备结构示意图;图2为本申请根据一示例性实施例示出的一种数据库灾备结构示意图;图3为本申请根据一示例性实施例示出的一种数据库灾备方法的实施例流程图;图4为本申请根据一示例性实施例示出的另一种数据库灾备方法的实施例流程图;图5为本申请根据一示例性实施例示出的又一种数据库灾备方法的实施例流程图;图6为本申请根据一示例性实施例示出的一种主中心的第一引擎设备的硬件结构图;图7为本申请根据一示例性实施例示出的一种数据库灾备装置的实施例结构图。具体实施方式这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。应当理解,尽管在本申请可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。图1为本申请根据一示例性实施例示出的一种现有数据库灾备结构示意图,图1所示的灾备系统包括灾备管理设备、主中心及灾备中心。其中,主中心和灾备中心对称设置,均包含数据库的中间件和存储设备(图1在主中心中列举了3个存储设备,在灾备中心中列举了3个存储设备),灾备管理设备可以分别与主中心和灾备中心通过网络进行交互,用于获取需要灾备的数据库,并向主中心的中间件发送读指令,主中心用于处理业务,灾备中心用于备份主中心在处理业务过程中产生的数据,且主中心和灾备中心也可以通过网络进行交互。下面结合图1详细介绍现有技术中灾备管理设备如何控制将主中心中的数据备份到灾备中心:当灾备管理设备监测到主中心的中间件中有数据库发生变化时,将发生变化的数据库的标识确定为需要灾备的数据库的标识,并针对需要灾备的数据库向主中心的中间件下发读指令,主中心的中间件通过查询本地的数据库路由表读取需要灾备的数据库的数据(来源于主中心的存储设备),并将读取的数据发送至灾备中心的中间件,由于灾备中心的中间件中记录有主中心的存储设备与灾备中心的存储设备的对应关系,如存储设备1对应存储设备4,存储设备2对应存储设备5、存储设备3对应存储设备6。从而灾备中心的中间件将需要灾备的数据库的数据写入对应的存储设备中。然而,由于主中心的中间件除了需要处理属于灾备数据流的读指令,即通过查询数据库路由表读取数据,还需要处理各类业务对数据库的访问,即也需要查询数据库路由表,因此中间件的处理压力比较大,尤其在需要灾备的数据量大的情况下,会严重影响各类业务对数据库的访问性能,降低用户使用体验。基于此,图2为本申请根据一示例性实施例示出的一种数据库灾备结构示意图,本申请在上述图1的基础上,分别在主中心和灾备中心中增加了灾备引擎设备(即第一灾备引擎设备和第二灾备引擎设备),且灾备管理设备可以与灾备引擎设备通过网络进行交互,主中心的第一灾备引擎设备和灾备中心的第二灾备引擎设备也可以通过网络进行交互。在进行数据库灾备时,灾备管理设备在从主中心的中间件中获取到待灾备数据库后,控制第一灾备引擎设备直接读取待灾备数据库的数据,并由第一灾备引擎设备将读取的数据发送至第二灾备引擎设备,以使第二灾备引擎设备将读取的数据写入灾备中心的存储设备中。由此可知,整个灾备系统在完成数据库灾备过程中,由灾备引擎完成数据读取,主中心的中间件专门用于处理各类业务对数据库的访问,从而本申请通过业务数据流和灾备数据流的分离,确保了业务的稳定性、可靠性。需要说的是,在灾备系统中包含的数据库比较多的情况下,表示需要灾备的数据库也比较多,此时灾备管理设备可以根据实际需求,对灾备引擎设备进行垂直扩展,即对灾备引擎设备的cpu、内存等进行升级,也可以横向扩展灾备引擎设备的数量,以将数据库划分调度到不同的灾备引擎设备上。下面以具体实施例详细介绍本申请的技术方案:图3为本申请根据一示例性实施例示出的一种数据库灾备方法的实施例流程图,结合上述图2所示的数据库灾备结构示意图,该数据库灾备方法可以应用在主中心的第一灾备引擎设备(如pc机)中。本申请实施例中所涉及的数据库可以是分布式数据库,且第一灾备引擎设备中预先配置有数据库路由表,该数据库路由表可以包含数据表的标识和该数据表的位置,且与主中心的中间件中的数据库路由表记录的信息一致。如图3所示,该数据库灾备方法包括如下步骤:步骤301:在接收到灾备管理设备发送的读指令时,依据该读指令携带的待灾备数据库的标识确定待灾备数据表。在一实施例中,当灾备管理设备监测到主中心的中间件中有数据库发生变化时,可以将发生变化的数据库的标识确定为待灾备数据库的标识,并将针对该待灾备数据库的读指令发送至第一灾备引擎设备,第一灾备引擎设备基于该读指令触发灾备数据的读取。其中,灾备管理设备可以通过监测数据库实例实现,每个数据库实例对应一个数据库,数据库实例用于对数据库中的数据进行运算处理。在一实施例中,针对依据该读指令携带的待灾备数据库的标识确定待灾备数据表的过程,可以根据待灾备数据库的标识对应的灾备策略确定待灾备数据表,即若待灾备数据库的标识对应的灾备策略为全量同步,则在数据库路由表中查找待灾备数据库包含的数据表,并将查找到的数据表确定为待灾备数据表,若待灾备数据库的标识对应的灾备策略为增量同步,则在数据库路由表中查找到待灾备数据库包含的数据表之后,再依据该待灾备数据库的变化日志确定有数据更新的数据表,并将有数据更新的数据表确定为待灾备数据表。其中,数据库对应的灾备策略可以根据实际需求预先配置。对于灾备策略为全量同步的数据库,需要将该数据库包含的所有数据表进行灾备,对于灾备策略为增量同步的数据库,需要解析该数据库的变化日志(如binlog日志)以确定有数据更新的数据表,仅将有数据更新的数据表作为待灾备数据表。例如,数据库a的灾备策略为增量同步,其包含数据表1、数据表2、数据表3,变化日志中记录有数据表2中在某一时刻有数据写入,那么将数据表2作为待灾备数据表。步骤302:在数据库路由表中查找该待灾备数据表的位置。在一示例性场景中,表1为一种示例性的数据库路由表,假设待灾备数据表为数据表2,通过查找表1,可以查找到待灾备数据表的位置为存储设备2。数据表的标识位置数据表1存储设备1数据表2存储设备2数据表3存储设备3数据表4存储设备2表1步骤303:依据该待灾备数据表的位置读取该待灾备数据表中的数据,并将读取的数据发送至第二灾备引擎设备,以使第二灾备引擎设备将该数据写入灾备中心的存储设备中。在一实施例中,基于上述步骤301所述,对于灾备策略为全量同步的数据表,第一灾备引擎设备可以直接读取待灾备数据表中的所有数据;对于灾备策略为增量同步的数据表,可以依据变化日志读取待灾备数据表中有更新的数据。本领域技术人员可以理解的是,依据变化日志读取数据表中有更新的数据可以通过相关技术实现,在此不再详述。在一实施例中,第二灾备引擎设备在接收到数据时,将接收的数据发送至灾备中心的中间件中,由灾备中心的中间件将该数据写入灾备中心中对应的存储设备中。其中,灾备中心的中间件中记录有主中心的存储设备与灾备中心的存储设备的对应关系,因此灾备中心的中间件可以通过该对应关系,将数据写入对应的存储设备中。基于上述步骤302所示的场景,如果数据表2的灾备策略为全量同步,则第一灾备引擎设备直接从存储设备2上读取数据表2的所有数据;如果数据表2的灾备策略为增量同步,则第一灾备引擎设备依据变化日志从存储设备2上读取数据表2中有更新的数据,然后第一灾备引擎设备通过灾备中心的第二灾备引擎设备,将读取的数据发送至灾备中心的中间件,假设主中心的存储设备2灾备中心的存储设备5对应,那么灾备中心的中间件通过该对应关系,将数据写入对应的存储设备5中。在一实施例中,由于主中心的中间件中还记录有描述数据库的元数据,即数据库配置信息,例如,数据库生成时间、数据库容量、包含的数据表、具备读写权限的用户名等信息,为了保证主中心与灾备中心的数据一致性,第一灾备引擎设备在将读取的数据发送至灾备中心的第二灾备引擎设备之后,还可以从主中心的中间件中读取数据库配置信息,并将读取的数据库配置信息发送至第二灾备引擎设备,以使第二灾备引擎设备将该数据库配置信息写入灾备中心的中间件中。针对上述步骤301至步骤303所述的过程,第一灾备引擎设备也可以每隔预设时长,直接导出主中心中所有数据库的数据表文件,并将导出的数据库的数据表文件压缩到业务数据备份文件中,并将业务数据备份文件写入文件服务器,同时从主中心中间件中读取管理元数据(包含数据库路由表和数据库配置信息),并压缩到元数据备份文件中,并将元数据备份文件写入文件服务器。本实施例中,主中心的第一灾备引擎设备在接收到灾备管理设备发送的读指令时,可以依据读指令携带的待灾备数据库的标识确定待灾备数据表,并在预先配置的数据库路由表中查找待灾备数据表的位置,然后依据待灾备数据表的位置读取待灾备数据表中的数据,并将读取的数据发送至灾备中心的第二灾备引擎设备,以使第二灾备引擎设备将该数据写入灾备中心的存储设备中。基于上述描述可知,由于第一灾备引擎设备中预先配置有数据库路由表,因此通过第一灾备引擎设备可以直接查找本地的数据库路由表完成数据读取,使得主中心的中间件可以专门用于处理各类业务对数据库的访问,进而提升了数据库的访问性能和用户的使用体验。图4为本申请根据一示例性实施例示出的另一种数据库灾备方法的实施例流程图,基于上述图3所示实施例的基础上,本实施例以如何配置数据库路由表为例进行示例性说明,如图4所示,配置数据库路由表的流程可以包括:步骤401:接收灾备管理设备发送的数据库配置通知。在一实施例中,主中心在进行扩容时,增加的数据库由中间件进行配置,灾备管理设备实时监控中间件的扩容配置,在监控到中间件扩容配置后,从中间件获取增加的数据库的配置信息(如数据库包含的数据表、数据表的位置、具备读写权限的用户名等信息),并将获取的数据库的配置信息下发至主中心的第一灾备引擎设备。步骤402:将数据库配置通知携带的数据库的标识、该数据库包含的数据表以及数据表的位置保存到数据库路由表中。在一实施例中,第一灾备引擎设备可以先提取该数据库配置通知携带的数据库的标识、该数据库包含的数据表以及数据表的位置,然后将提取的数据库的标识、该数据库包含的数据表以及数据表的位置对应保存到数据库路由表中。需要说明的是,灾备管理设备还可以在数据库配置通知中携带主中心的各存储设备的秘钥,从而第一灾备引擎设备也可以将存储设备的秘钥保存到数据库路由表中,以供读取数据时使用。至此,完成图4所示流程,通过图4所示流程,最终实现数据库路由表的配置。图5为本申请根据一示例性实施例示出的又一种数据库灾备方法的实施例流程图,基于上述图3和图4所示实施例的基础上,本实施例以如何锁住待灾备数据表中数据为例进行示例性说明,如图5所示,该文本修正方法包括如下步骤:步骤501:在依据待灾备数据表的位置读取待灾备数据表中的数据之前,为待灾备数据表生成读锁指令,并依据待灾备数据表的位置确定待灾备数据表所在的存储设备。其中,由于不同存储设备支持不同的锁机制,而表级锁相对简单、开销小,不同的存储设备均可支持,因此生成的读锁指令可以是表级锁。如mysql>locktablesdb1tblread的表级锁,表示的是锁住数据库db1包含的数据表tb1中的数据。数据表的位置可以是该数据表在某一存储设备中的具体位置,因此依据数据表的位置可以确定出该数据表所在的存储设备。步骤502:将生成的读锁指令发送至待灾备数据表所在的存储设备,以使所述存储设备禁止对待灾备数据表的更新。需要说明的是,第一灾备引擎设备在依据待灾备数据表的位置读取待灾备数据表中的数据之后,需要释放待灾备数据表的读锁,针对上述步骤501中的例子,释放读锁指令可以是mysql>unlocktablesdb1tbl。针对上述步骤501至步骤502的实现过程,为了提升第一灾备引擎设备的处理性能,灾备管理设备在通过主中心的中间件获取到待灾备数据库之后,也可以先向灾备中心的第二灾备引擎设备发送通知消息,以使第二灾备引擎设备向第一灾备引擎设备发送针对待灾备数据库的读锁指令,并在接收到第二灾备引擎设备返回的响应消息之后,向第一灾备引擎设备发送读指令。本实施例中,第一灾备引擎设备在依据待灾备数据表的位置读取待灾备数据表中的数据之前,通过读锁指令将待灾备数据表中的数据锁住,以确保能够读取到同一时刻的数据,保持数据的一致性。与前述数据库灾备方法的实施例相对应,本申请还提供了数据库灾备装置的实施例。本申请数据库灾备装置的实施例可以应用在第一灾备引擎设备上。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在设备的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,如图6所示,为本申请根据一实施例性实施例示出的一种第一灾备引擎设备的硬件结构图,除了图6所示的处理器、内存、网络接口、以及非易失性存储器之外,实施例中装置所在的设备通常根据该设备的实际功能,还可以包括其他硬件,对此不再赘述。图7为本申请根据一示例性实施例示出的一种数据库灾备装置的实施例结构图,该数据库灾备装置应用于主中心的第一灾备引擎设备,所述第一灾备引擎设备中预先配置有数据库路由表,所述数据库路由表包含数据表的标识与该数据表的位置,所述数据库灾备装置包括:确定模块710,用于在接收到所述灾备管理设备发送的读指令时,依据所述读指令携带的待灾备数据库的标识确定待灾备数据表;查找模块720,用于在所述数据库路由表中查找所述待灾备数据表的位置;第一读取模块730,用于依据所述待灾备数据表的位置读取所述待灾备数据表中的数据,并将读取的数据发送至所述第二灾备引擎设备,以使所述第二灾备引擎设备将所述数据写入灾备中心的存储设备中。在一可选的实现方式中,所述装置还包括(图7中未示出):读锁模块,具体用于所述第一读取模块730在依据所述待灾备数据表的位置读取所述待灾备数据表中的数据之前,为所述待灾备数据表生成读锁指令,并依据所述待灾备数据表的位置确定所述待灾备数据表所在的存储设备;将生成的读锁指令发送至所述存储设备,以使所述存储设备禁止对所述待灾备数据表的更新。在一可选的实现方式中,所述装置还包括(图7中未示出):第二读取模块,用于所述第一读取模块730在将读取的数据发送至灾备中心的第二灾备引擎设备之后,从所述主中心的中间件中读取数据库配置信息;将读取的数据库配置信息发送至所述第二灾备引擎设备,以使所述第二灾备引擎设备将所述数据库配置信息写入所述灾备中心的中间件中。在一可选的实现方式中,所述数据库路由表中还包含数据库的标识和该数据库包含的数据表,所述确定模块710,具体用于若所述待灾备数据库的标识对应的灾备策略为全量同步,则在所述数据库路由表中查找所述待灾备数据库包含的数据表,并将查找到的数据表确定为待灾备数据表;若所述待灾备数据库的标识对应的灾备策略为增量同步,则在所述数据库路由表中查找到所述待灾备数据库包含的数据表之后,再依据该待灾备数据库的变化日志确定有数据更新的数据表,并将有数据更新的数据表确定为待灾备数据表。在一可选的实现方式中,所述装置还包括(图7中未示出):配置模块,具体用于接收所述灾备管理设备发送的数据库配置通知;将所述数据库配置通知携带的数据库的标识、该数据库包含的数据表以及数据表的位置保存到所述数据库路由表中。上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本申请方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未公开的本
技术领域
:中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本申请的真正范围和精神由下面的权利要求指出。还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1