数据库备份系统及其备份方法和从数据库服务器转让专利

申请号 : CN201210366439.7

文献号 : CN102880531B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 成江东童剑邱春武杨海朝陶会祥

申请人 : 新浪网技术(中国)有限公司

摘要 :

本发明公开了一种数据库备份系统及其备份方法和从数据库服务器,所述系统包括:主数据库服务器,用于维护数据库;从数据库服务器,用于对所述数据库进行备份,得到备份结果后进行发送;存储节点集群,其基于HDFS技术,包括:存储控制节点和至少一个存储节点,存储控制节点用于接收从数据库服务器发送的备份结果,并负责管理各存储节点对备份结果的分布式存储。由于将备份结果发送到基于HDFS技术的存储节点集群进行备份文件的存储,存储控制节点可以根据各存储节点的存储空间进行存储的统筹安排和调节,以分布式存储的方式将备份结果较为均匀地存储到各存储节点,从而可以提高数据库备份过程中存储空间的利用率。

权利要求 :

1.一种数据库备份系统,包括:

主数据库服务器,用于维护数据库;

从数据库服务器,用于对所述主数据库服务器中的数据库进行备份,所述从数据库服务器对主数据库服务器中的数据库进行流模式备份后再进行压缩,将得到的压缩文件作为备份结果,然后将所述备份结果进行发送;

存储节点集群,其为基于分布式文件系统HDFS技术的分布式结构,包括:存储控制节点和至少一个存储节点,所述存储控制节点用于接收所述从数据库服务器发送的备份结果,根据存储节点集群中的各存储节点的存储空间进行存储的统筹安排和调节,以分布式存储的方式将备份结果存储到各存储节点。

2.如权利要求1所述的系统,其特征在于,所述从数据库服务器具体包括:备份模块,用于对主数据库服务器中的数据库进行备份得到备份结果;

发送模块,用于将所述备份模块得到的备份结果发送到所述存储节点集群。

3.如权利要求2所述的系统,其特征在于,所述备份模块具体包括:备份文件集单元,用于将所述主数据库服务器中的数据库进行备份后得到的备份文件集作为所述备份结果;

或者,所述备份模块具体包括:

流模式备份单元,用于对所述主数据库服务器中的数据库进行流模式备份,并将备份的数据进行输出;

压缩单元,用于将所述流模式备份单元输出的备份的数据进行压缩,并将最终得到的压缩文件作为所述备份结果。

4.一种数据库备份方法,包括:

从数据库服务器对主数据库服务器中的数据库进行流模式备份后再进行压缩,将得到的压缩文件作为备份结果,然后将所述备份结果发送到基于分布式文件系统HDFS技术的存储节点集群;

所述存储节点集群中的存储控制节点在接收所述从数据库服务器发送的备份结果后,根据存储节点集群中的各存储节点的存储空间进行存储的统筹安排和调节,以分布式存储的方式将备份结果存储到各存储节点。

5.如权利要求4所述的方法,其特征在于,所述从数据库服务器对主数据库服务器中的数据库进行备份得到备份结果具体包括:所述从数据库服务器对主数据库服务器中的数据库进行备份后得到的备份文件集作为所述备份结果;或者,所述从数据库服务器对主数据库服务器中的数据库进行流模式备份后再进行压缩,将得到的压缩文件作为所述备份结果。

6.如权利要求5所述的方法,其特征在于,所述从数据库服务器对主数据库服务器中的数据库进行备份具体包括:所述从数据库服务器对所述数据库中的数据,以及所述数据库的配置文件进行备份。

7.如权利要求6所述的方法,其特征在于,所述存储控制节点在接收所述从数据库服务器发送的备份结果后,还包括:所述存储控制节点将所述备份结果进行复制,得到至少一份所述备份结果的副本;并且还负责管理各存储节点对所述备份结果的副本的分布式存储。

8.一种从数据库服务器,包括:

备份模块,用于对主数据库服务器中的数据库进行流模式备份后再进行压缩,将得到的压缩文件作为备份结果;

发送模块,用于将所述备份模块得到的所述备份结果发送到基于分布式文件系统HDFS分布式结构的存储节点集群;所述存储节点集群中的存储控制节点在接收所述从数据库服务器发送的备份结果后,根据存储节点集群中的各存储节点的存储空间进行存储的统筹安排和调节,以分布式存储的方式将备份结果存储到各存储节点。

9.如权利要求8所述的服务器,其特征在于,所述备份模块具体包括:备份文件集单元,用于将所述主数据库服务器中的数据库进行备份后得到的备份文件集作为所述备份结果;

或者,所述备份模块具体包括:流模式备份单元,用于对所述主数据库服务器中的数据库进行流模式备份,并将备份的数据进行输出;

压缩单元,用于将所述流模式备份单元输出的备份的数据进行压缩,并将最终得到的压缩文件作为所述备份结果。

10.如权利要求9所述的服务器,其特征在于,还包括:备份管理模块,用于接收用户输入的设置参数,根据设置参数控制所述备份模块;

备份进度展示模块,用于从所述备份模块获取进度的相关参数,根据所述相关参数显示出所述备份模块中的备份进度。

说明书 :

数据库备份系统及其备份方法和从数据库服务器

技术领域

[0001] 本发明涉及数据库技术,尤其涉及一种数据库备份系统及其备份方法和从数据库服务器。

背景技术

[0002] 随着办公自动化和电子商务的飞速发展,企业对信息系统的依赖性越来越高,数据库作为信息系统的核心担当着重要的角色。尤其在一些对数据可靠性要求很高的行业如银行、证券、电信等,如果发生意外停机或数据丢失其损失会十分惨重。因此,有必要对数据库进行备份。这样,在数据库出现故障遭到损坏后,可以通过备份的数据库进行恢复。
[0003] 目前,业界对于大数据量的MySQL数据库的备份通常采用xtrabackup热备方式来解决;采用这种方式进行备份的数据库备份系统架构,如图1所示,包括:主数据库服务器、从数据库服务器、多个存储服务器。
[0004] 主数据库服务器也可称为master数据库服务器,从数据库服务器也可称为slave数据库服务器。
[0005] 主数据库服务器用于对数据库进行维护,比如增加、修改、删除数据库中的元素,如数据表、数据表中的数据等。
[0006] 从数据库服务器用于使用流模式将主数据库服务器中的数据库备份到存储服务器中。
[0007] 通常,主数据库服务器可以是多个,每个主数据库服务器中的数据库也可以是多个,例如,多个主数据库服务器中的数据库共有100个,从数据库服务器需要将这100个数据库分别备份到10个存储服务器中;平均每个存储服务器中存储10个数据库备份。
[0008] 具体地,在从数据库服务器中存储了备份配置表,备份配置表中对应每个数据库或数据库实例记录了用于存储该数据库备份的存储服务器的地址或标识;从数据库服务器根据该备份配置表将100个数据库备份分别存储到各存储服务器中。
[0009] 然而,本发明的发明人发现,随着时间的推移,基于不同业务的数据库,或者同一业务的不同数据库的数据量增长并不均匀;有的数据库数据量增长非常迅猛,有的数据库的数据量增长缓慢;或者,某个时期段中,某个数据库的数据量增长很大,其它数据库的数据量增长很小;在另一个时期段中,数据库的数据量增长又发生了改变;这样,导致各存储服务器中的存储量与流量不均衡:可能会出现有的存储服务器的存储量已经超过90%、接近100%,有的存储服务器的存储量才达到20%;为高效利用存储服务器的存储空间,维护人员则不得不通过手动调整、配置备份配置表的方式来使得各存储服务器的存储量趋于均匀。
[0010] 由此可以看出,由于现有技术的数据库备份方法中在各存储服务器中进行分散式存储备份时,存储量与流量不均衡,导致数据库备份过程中存储空间利用效率低、浪费存储空间;因此,现有技术存在高效利用备份存储空间的问题。

发明内容

[0011] 本发明的实施例提供了一种数据库备份系统及其备份方法和从数据库服务器,用以在数据库备份过程中更为高效地利用存储空间。
[0012] 根据本发明的一个方面,提供了一种数据库备份系统,包括:
[0013] 主数据库服务器,用于维护数据库;
[0014] 从数据库服务器,用于对所述主数据库服务器中的数据库进行备份,得到备份结果后进行发送;
[0015] 存储节点集群,其为基于分布式文件系统HDFS技术的节点集群,包括:存储控制节点和至少一个存储节点,所述存储控制节点用于接收所述从数据库服务器发送的备份结果,并负责管理各存储节点对所述备份结果的分布式存储。
[0016] 其中,所述从数据库服务器具体包括:
[0017] 备份模块,用于对主数据库服务器中的数据库进行备份得到备份结果;
[0018] 发送模块,用于将所述备份模块得到的备份结果发送到所述存储节点集群。
[0019] 所述备份模块具体包括:
[0020] 备份文件集单元,用于将所述主数据库服务器中的数据库进行备份后得到的备份文件集作为所述备份结果;
[0021] 或者,所述备份模块具体包括:
[0022] 流模式备份单元,用于对所述主数据库服务器中的数据库进行流模式备份,并将备份的数据进行输出;
[0023] 压缩单元,用于将所述流模式备份单元输出的备份的数据进行压缩,并将最终得到的压缩文件作为所述备份结果。
[0024] 根据本发明的另一个方面,还提供了一种数据库备份方法,包括:
[0025] 从数据库服务器对主数据库服务器中的数据库进行备份得到备份结果,将所述备份结果发送到基于分布式文件系统HDFS技术的存储节点集群;
[0026] 所述存储节点集群中的存储控制节点在接收所述从数据库服务器发送的备份结果后,负责管理所述存储节点集群中的各存储节点对所述备份结果的分布式存储。
[0027] 较佳地,所述从数据库服务器对主数据库服务器中的数据库进行备份得到备份结果具体包括:
[0028] 所述从数据库服务器对主数据库服务器中的数据库进行备份后得到的备份文件集作为所述备份结果;或者,
[0029] 所述从数据库服务器对主数据库服务器中的数据库进行流模式备份后再进行压缩,将得到的压缩文件作为所述备份结果。
[0030] 较佳地,所述从数据库服务器对主数据库服务器中的数据库进行备份具体包括:
[0031] 所述从数据库服务器对所述数据库中的数据,以及所述数据库的配置文件进行备份。
[0032] 进一步,所述存储控制节点在接收所述从数据库服务器发送的备份结果后,还包括:
[0033] 所述存储控制节点将所述备份结果进行复制,得到至少一份所述备份结果的副本;并且还负责管理所述存储节点集群中的各存储节点对所述备份结果的副本的分布式存储。
[0034] 根据本发明的另一个方面,还提供了一种从数据库服务器,包括:
[0035] 备份模块,用于对主数据库服务器中的数据库进行备份得到备份结果;
[0036] 发送模块,用于将所述备份模块得到的备份结果发送到基于分布式文件系统HDFS技术的存储节点集群;所述存储节点集群中的存储控制节点在接收所述从数据库服务器发送的备份结果后,负责管理所述存储节点集群中的各存储节点对所述备份结果的分布式存储。
[0037] 其中,所述备份模块具体包括:
[0038] 备份文件集单元,用于将所述主数据库服务器中的数据库进行备份后得到的备份文件集作为所述备份结果;
[0039] 或者,所述备份模块具体包括:
[0040] 流模式备份单元,用于对所述主数据库服务器中的数据库进行流模式备份,并将备份的数据进行输出;
[0041] 压缩单元,用于将所述流模式备份单元输出的备份的数据进行压缩,并将最终得到的压缩文件作为所述备份结果。
[0042] 进一步,所述服务器还包括:
[0043] 备份管理模块,用于接收用户输入的设置参数,根据设置参数控制所述备份模块;
[0044] 备份进度展示模块,用于从所述备份模块获取进度的相关参数,根据所述相关参数显示出所述备份模块中的备份进度。
[0045] 本发明实施例的从数据库服务器由于在对主数据库服务器中数据库进行备份后,将备份结果发送到基于HDFS技术的存储节点集群进行备份文件的存储,而基于HDFS技术的存储节点集群中的存储控制节点可以根据存储节点集群中的各存储节点的存储空间进行存储的统筹安排和调节,以分布式存储的方式将备份结果较为均匀地存储到各存储节点,从而避免出现有的存储节点的存储空间紧张,有的存储节点的存储空间得不到利用的现象,避免浪费存储节点的存储空间,提高数据库备份过程中存储空间的利用率,解决了分散式备份、存储过程中存储空间利用效率不高、浪费存储空间的问题。
[0046] 进一步,由于在数据库备份过程中,还对数据库的配置文件也进行了备份,从而在进行数据库进行恢复还原时,不用重新设置数据库参数,直接用之前备份的配置文件进行数据库参数的设置。
[0047] 进一步,由于采用流模式备份、压缩的方案,得到的备份结果为压缩文件,大大节约了用于存储数据库的备份文件的存储空间。
[0048] 进一步,存储节点集群中的存储控制节点将备份结果进行复制得到的副本也存储到存储节点集群,从而提高了备份的可靠性。

附图说明

[0049] 图1为现有技术的数据库备份系统示意图;
[0050] 图2为本发明实施例的数据库备份系统示意图;
[0051] 图3为本发明实施例的数据库备份方法流程图;
[0052] 图4为本发明实施例的从数据库服务器的内部结构框图。

具体实施方式

[0053] 为使本发明的目的、技术方案及优点更加清楚明白,以下参照附图并举出优选实施例,对本发明进一步详细说明。然而,需要说明的是,说明书中列出的许多细节仅仅是为了使读者对本发明的一个或多个方面有一个透彻的理解,即便没有这些特定的细节也可以实现本发明的这些方面。
[0054] 本申请使用的“模块”、“系统”等术语旨在包括与计算机相关的实体,例如但不限于硬件、固件、软硬件组合、软件或者执行中的软件。例如,模块可以是,但并不仅限于:处理器上运行的进程、处理器、对象、可执行程序、执行的线程、程序和/或计算机。举例来说,计算设备上运行的应用程序和此计算设备都可以是模块。一个或多个模块可以位于执行中的一个进程和/或线程内,一个模块也可以位于一台计算机上和/或分布于两台或更多台计算机之间。
[0055] 下面结合附图详细说明本发明实施例的技术方案。本发明实施例提供的数据库备份系统,如图2所示,包括:主数据库服务器201、从数据库服务器202,以及存储节点集群203。
[0056] 其中,主数据库服务器201用于维护数据库;例如,主数据库服务器201中可以对数据库进行编辑、修改、增加、删除数据库元素,包括修改、增加、删除数据表,或者数据表中的字段,或者数据表中的数据。主数据库服务器201中维护的数据库可以是多个。
[0057] 从数据库服务器202用于对主数据库服务器201中的数据库进行备份,得到备份结果,将备份结果发送到存储节点集群203进行存储,实现对主数据库服务器201中的数据库的备份。
[0058] 具体地,从数据库服务器202可以是对主数据库服务器201中的数据库进行备份后,得到备份文件集;将备份文件集作为备份结果发送到存储节点集群203进行存储;从数据库服务器202对主数据库服务器201中的数据库进行备份后得到的备份文件集中可以包括多个数据库的文件,比如数据表、索引、视图、数据库的配置文件等,而且还可包括这些文件的路径结构。这样,备份后得到的备份文件集具体可以文件夹的形式进行保存,在该文件夹中保存了各级子文件夹,以及各级子文件夹中的文件。具体地,从数据库服务器202可以利用innobackupex脚本对主数据库服务器201中的数据库进行流模式备份;由于利用innobackupex脚本进行流模式备份的技术为本领域技术人员所熟知,此处不再详细介绍。
[0059] 或者,从数据库服务器202对主数据库服务器201中的数据库进行备份、压缩后,得到压缩文件,将压缩文件作为备份结果发送到存储节点集群203进行备份存储。具体地,从数据库服务器202对主数据库服务器中的数据库进行流模式备份后再进行压缩,将得到的压缩文件作为所述备份结果发送到存储节点集群203进行备份存储。
[0060] 存储节点集群203中包括存储控制节点211和至少一个存储节点212;存储节点集群203为基于HDFS(Hadoop Distributed File System,分布式文件系统)的分布式结构。这里简单介绍一下HDFS:HDFS是一个主从结构的体系,一个HDFS集群是由一个管理文件的命名空间和调节客户端访问文件的主服务器和多个数据节点组成,主服务器管理各数据节点的存储。HDFS的内部机制是主服务器将一个文件分割成一个或多个的块,这些块存储在一组数据节点中,从而可以合理利用、调配各数据节点的存储空间。HDFS内部的所有通信都基于标准的TCP/IP协议。
[0061] 从数据库服务器202通过HDFS技术,将备份文件集,或者压缩文件存储到存储节点集群203中实现数据库的备份。对于从数据库服务器202而言,存储节点集群203就像一个传统的分级文件系统,并不需要了解存储节点集群203中各存储节点212的存储情况。从数据库服务器202可以通过广域网或局域网来访问存储节点集群203,进行文件的存储与读取。在存储节点集群203中,存储控制节点211用以负责管理文件系统名称空间和控制外部客户机的访问。存储控制节点211负责管理各存储节点212的存储:
[0062] 存储控制节点211在接收到从数据库服务器202发送的备份结果后,负责管理各存储节点对所述备份结果的分布式存储:存储控制节点211决定将备份结果具体存储到存储节点集群203中的哪个存储节点212或者哪组存储节点212,以合理利用、调配各存储节点212的存储空间。
[0063] 存储控制节点211通过HDFS技术可以避免出现有的存储节点212的存储空间紧张,有的存储节点212的存储空间得不到利用的现象,使得各存储节点212存储量与流量较为均匀,在数据库备份的过程中更为高效地利用存储空间,从而解决了分散式备份、存储过程中存储空间利用效率不高、浪费存储空间的问题。
[0064] 本发明实施例提供的一种具体的数据库备份方法流程图,如图3所示,包括如下步骤:
[0065] S301:从数据库服务器202对主数据库服务器中的数据库进行流模式备份。
[0066] 具体地,从数据库服务器202以流模式的方式从主数据库服务器获取数据库中的数据,进一步还可以获取数据库的配置文件;从数据库服务器202将获取的数据和配置文件进行流模式的备份。该步骤可以通过执行脚本文件中的相关代码实现,通过可以通过执行innobackupex脚本中的相关代码实现。对数据库的配置文件的备份,有利于进行数据库的还原。例如,innobackupex脚本中实现流模式备份的代码如下:
[0067] innobackupex--tmpdir=/tmp--defaults-file=/data1/mysql3697/my3697.cnf.bakuse--slave-info--no-timestamp--parallel=1--throttle=800--socket=/tmp/mysql3697.sock--user=mysqlha--pass=123456--stream=tar./2>>/data1/mysql3697/bak.log
[0068] S302:从数据库服务器202在流模式备份后进行压缩操作。
[0069] 从数据库服务器202以流模式的方式备份主数据库服务器获取数据库中的数据和配置文件后还进行压缩操作,最终得到压缩文件作为备份结果。压缩操作也可通过脚本文件中的代码实现:
[0070] innobackupex--tmpdir=/tmp--defaults-file=/data1/mysql3697/my3697.cnf.bakuse--slave-info--no-timestamp--parallel=1--throttle=800--socket=/tmp/mysql3697.sock--user=mysqlha--pass=123456--stream=tar./2>>/data1/mysql3697/bak.log|pbzip2-p4|sudo-uhadoop/usr/local/hadoop/bin/hadoop fs-put -hdfs://marduk21:9000/dbbackup/mysql3697_`date+%m%d_%H%M%S`.tar.bz2[0071] S303:从数据库服务器202将备份结果发送到存储节点集群。
[0072] 存储节点集群中的存储控制节点在接收到从数据库服务器202发送的备份结果后,负责管理各存储节点对所述备份结果的分布式存储。
[0073] 进一步,存储节点集群中的存储控制节点还可在接收到从数据库服务器202发送的备份结果后,将所述备份结果进行复制,得到至少一份所述备份结果的副本;并且还负责管理所述存储节点集群中的各存储节点对所述备份结果的副本的分布式存储。
[0074] 具体地,存储控制节点根据预先设置的备份总数对该备份结果进行复制,得到备份结果的副本。例如,设置的备份总数为3,则存储控制节点对备份结果进行复制,得到该备份结果的2个副本;存储控制节点负责管理各存储节点对所述备份结果及其副本的分布式存储,即存储控制节点将备份结果以及副本以分布式方式存储到各存储节点。
[0075] 在将备份结果存储到存储节点集群后,如果主数据库服务器出现了故障,导致其中的数据库无法正常运行,其中的数据无法访问、获取,或者丢失,那么,可以通过服务器或客户端访问存储节点集群的存储控制节点,从存储控制节点下载备份结果;而存储控制节点由于管理各存储节点,可以将分散存储于各存储节点上的备份结果汇总后返回给服务器或客户端;服务器或客户端在接收到备份结果后进行解压,从而实现数据库的恢复。而上述步骤S301中,由于对数据库的配置文件也进行了备份,那么,在进行数据库的恢复过程中,可以根据以前备份的配置文件对新恢复的数据库进行参数配置,更方便维护人员对数据库的恢复。
[0076] 本发明实施例提供的一种从数据库服务器,其内部结构如图4所示,包括:备份模块401和发送模块402。
[0077] 其中,备份模块401用于对主数据库服务器中的数据库进行备份得到备份结果;
[0078] 发送模块402用于将备份模块401得到的备份结果发送到基于分布式文件系统HDFS技术的存储节点集群;所述存储节点集群中的存储控制节点在接收所述从数据库服务器发送的备份结果后,负责管理所述存储节点集群中的各存储节点对所述备份结果的分布式存储。
[0079] 其中,备份模块401具体可以包括:备份文件集单元(图中未标),用于将所述主数据库服务器中的数据库进行备份后得到的备份文件集作为所述备份结果。
[0080] 或者,所述备份模块具体可以包括:流模式备份单元411、压缩单元412。
[0081] 流模式备份单元411用于对所述主数据库服务器中的数据库进行流模式备份,并将备份的数据输出到压缩单元412;
[0082] 压缩单元412用于将流模式备份单元411输出的备份的数据进行压缩,并输出最终得到的压缩文件作为所述备份结果进行输出。
[0083] 进一步,从数据库服务器中还可包括:备份管理模块403和备份进度展示模块404。
[0084] 备份管理模块403用于接收用户输入的设置参数,根据设置参数控制所述备份模块;例如,输入的设置参数可以包括:备份方式、时间、模式、周期、目标、保留周期,并且是否支持年/季/月/周备份等参数。
[0085] 备份进度展示模块404用于从备份模块403获取进度的相关参数,根据所述相关参数显示出所述备份模块中的备份进度。例如,备份进度展示模块404从备份模块403获取流模式备份过程中,已备份的文件占所有需要备份的文件的百分比;根据该获取的参数以进度条的方式显示备份进度。
[0086] 本发明实施例的从数据库服务器由于在对主数据库服务器中数据库进行备份后,将备份结果发送到基于HDFS技术的存储节点集群进行备份文件的存储,而基于HDFS技术的存储节点集群中的存储控制节点可以根据存储节点集群中的各存储节点的存储空间进行存储的统筹安排和调节,以分布式存储的方式将备份结果较为均匀地存储到各存储节点,从而避免出现有的存储节点的存储空间紧张,有的存储节点的存储空间得不到利用的现象,避免浪费存储节点的存储空间,提高数据库备份过程中存储空间的利用率,解决了分散式备份、存储过程中存储空间利用效率不高、浪费存储空间的问题。
[0087] 进一步,由于在数据库备份过程中,还对数据库的配置文件也进行了备份,从而在进行数据库进行恢复还原时,不用重新设置数据库参数,直接用之前备份的配置文件进行数据库参数的设置。
[0088] 进一步,由于采用流模式备份、压缩的方案,得到的备份结果为压缩文件,大大节约了用于存储数据库的备份文件的存储空间。
[0089] 进一步,存储节点集群中的存储控制节点将备份结果进行复制得到的副本也存储到存储节点集群,从而提高了备份的可靠性。
[0090] 本领域普通技术人员可以理解实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读取存储介质中,如:ROM/RAM、磁碟、光盘等。
[0091] 以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。