一种数据库备份方法及装置与流程

文档序号:12271125阅读:215来源:国知局
一种数据库备份方法及装置与流程

本发明涉及数据库备份技术领域,特别是涉及一种数据库备份方法及装置。



背景技术:

数据备份是容灾的基础,是指为防止系统出现操作失误或系统故障导致数据丢失,而将全部或部分数据集合从应用主机复制到其他的存储介质的过程。Mysql是一种开放源代码的关系型数据库管理系统(RDBMS),mysql数据库系统使用最常用的数据库管理语言--结构化查询语言(SQL)进行数据库管理,提供了mysql的社区开源版本。提供的备份工具有mysqldump、mysqlhotcopy、文本备份。Mysqlhotcopy在社区开源版本只支持myisam引擎备份。Mysqldump命令是mysql自带的逻辑备份工具,可以实现数据库级、表级的备份,备份时把表结构及数据转储成sql到文本文件。Mysqldump能提供数据库一致性备份的控制参数,结合binlog文件能实现innodb引擎表的增量备份。

大型数据库场景的特点是数据量大,数据量基本在TB级别以上,当前mysql数据库通常采用事务型的innodb引擎表,在备份mysql innodb引擎表时可采用的工具有mysql自带的mysqldump、第三方工具xtrabackup等。由于xtrabackup是做数据库物理文件备份,备份的数据集无法压缩,且备份时需要中转空间,当数据库服务器存储空间紧张时,采用这种方法就会存在很多问题。



技术实现要素:

本发明的目的是提供一种数据库备份方法及装置,以解决现有mysql大型数据库场景下备份周期长、恢复周期长、备份文件占用空间大的问题。

为解决上述技术问题,本发明提供一种数据库备份方法,包括:

将数据库中的数据表进行分类,分为历史数据表以及实时业务数据表;

对所述业务数据表进行全量备份;

对所述历史数据表进行增量备份;

将备份的所述业务数据表以及所述历史数据表存储到介质中,完成数据库的备份。

可选地,所述对所述历史数据表进行增量备份包括:

确定所述历史数据表中的当日数据以及新增隔日历史数据;

分别对所述当日数据以及所述新增隔日历史数据进行备份。

可选地,在对所述新增隔日历史数据进行备份之后还包括:

根据预设命名规则对备份文件进行命名。

可选地,在所述将备份的所述业务数据表以及所述历史数据表存储到介质中之前还包括:

对所述业务数据表以及所述历史数据表进行数据压缩。

可选地,还包括:

当满足预设条件时,对过期数据进行清理。

本发明还提供了一种数据库备份装置,包括:

分类模块,用于将数据库中的数据表进行分类,分为历史数据表以及实时业务数据表;

全量备份模块,用于对所述业务数据表进行全量备份;

增量备份模块,用于对所述历史数据表进行增量备份;

存储模块,用于将备份的所述业务数据表以及所述历史数据表存储到介质中,完成数据库的备份。

可选地,所述增量备份模块具体为:确定所述历史数据表中的当日数据以及新增隔日历史数据;分别对所述当日数据以及所述新增隔日历史数据进行备份的模块。

可选地,还包括:

命名模块,用于在对所述新增隔日历史数据进行备份之后,根据预设命名规则对备份文件进行命名。

可选地,还包括:

数据压缩模块,用于在将备份的所述业务数据表以及所述历史数据表存储到介质中之前,对所述业务数据表以及所述历史数据表进行数据压缩。

可选地,还包括:

清理模块,用于当满足预设条件时,对过期数据进行清理。

本发明所提供的数据库备份方法及装置,通过将数据库中的数据表进行分类,分为历史数据表以及实时业务数据表;对业务数据表进行全量备份;对历史数据表进行增量备份;将备份的业务数据表以及历史数据表存储到介质中,完成数据库的备份。由于大型的mysql数据库中历史数据占用大量的存储空间,实时业务数据较少,因此将历史数据表和实时业务表分开备份,能够减少每次备份的数据量,缩短备份时间以及恢复时间,加快备份速度。可见,本申请快速实现了mysql大型数据库场景下数据库的备份,减少了备份恢复时间、减少了备份文件空间占用,提高了备份恢复的效率以及数据库的安全保障能力。

附图说明

为了更清楚的说明本发明实施例或现有技术的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明所提供的数据库备份方法的一种具体实施方式的流程图;

图2为本发明所提供的数据库备份方法的另一种具体实施方式的流程图;

图3为本发明实施例提供的数据库备份装置的结构框图。

具体实施方式

通常生成系统使用的mysql数据库都制定了的备份策略,但mysql大型数据库场景下数据量都比较大,而且mysql作为开源数据库能提供的备份工具有限,导致数据库备份时间长、备份文件占用空间大、备份期间长时间影响数据库正常的业务操作。本发明的核心是提供一种数据库备份方法及装置,以提高备份效率。

为了使本技术领域的人员更好地理解本发明方案,下面结合附图和具体实施方式对本发明作进一步的详细说明。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明所提供的数据库备份方法的一种具体实施方式的流程图如图1所示,该方法包括:

步骤S101:将数据库中的数据表进行分类,分为历史数据表以及实时业务数据表;

步骤S102:对所述业务数据表进行全量备份;

步骤S103:对所述历史数据表进行增量备份;

步骤S104:将备份的所述业务数据表以及所述历史数据表存储到介质中,完成数据库的备份。

本发明所提供的数据库备份方法,通过将数据库中的数据表进行分类,分为历史数据表以及实时业务数据表;对业务数据表进行全量备份;对历史数据表进行增量备份;将备份的业务数据表以及历史数据表存储到介质中,完成数据库的备份。由于大型的mysql数据库中历史数据占用大量的存储空间,实时业务数据较少,因此将历史数据表和实时业务表分开备份,能够减少每次备份的数据量,缩短备份时间以及恢复时间,加快备份速度。可见,本申请快速实现了mysql大型数据库场景下数据库的备份,减少了备份恢复时间、减少了备份文件空间占用,提高了备份恢复的效率以及数据库的安全保障能力。

本申请将mysql数据库中数据表进行分类,分为历史数据表和业务数据表。通常在大型的mysql数据库中历史数据占用大量的存储空间,业务实时数据表反而较少,结合mysqldump备份工具实现的备份程序完成备份的调度,输入历史表、业务表、备份条件等自动完成数据库备份。这样将历史数据表和实时业务表分开备份,能够减少每次备份的数据量以缩短备份及恢复时间,加快备份的速度。

在上述实施例的基础上,本发明所提供的数据库备份方法中对所述历史数据表进行增量备份可以具体为:

确定所述历史数据表中的当日数据以及新增隔日历史数据;

分别对所述当日数据以及所述新增隔日历史数据进行备份。

进一步地,在对所述新增隔日历史数据进行备份之后还包括:

根据预设命名规则对备份文件进行命名。

将大型数据库中的历史表和业务表分开备份,业务数据表和历史数据当日数据结合mysql binlog完成全量和增量备份,单独隔日备份历史表的历史数据,如:7月2号备份7月1号的历史分区数据,此时7月1号的数据不会发生变更,备份后形成单独的备份文件,对备份文件给与独立的命名规则,对文件压缩后放到备份存储介质中(如磁带库),完成整个备份流程。根据上述流程实现的备份程序大大缩短了备份时间,提高了备份的效率。

在上述任一实施例的基础上,本发明所提供的数据库备份方法,在所述将备份的所述业务数据表以及所述历史数据表存储到介质中之前还可以进一步包括:

对所述业务数据表以及所述历史数据表进行数据压缩。

优选地,本实施例还可以包括:当满足预设条件时,对过期数据进行清理。

本发明可以具体采用mysql自带的备份工具mysqldump来实现,myqldump能实现数据的一致性导出,导出的文件为文本文件,能实现较大程度实现压缩,根据业务场景对mysqldump采用不同的参数能实现数据库数据快速备份策略的实现。

下面对本发明所提供的备份过程进行进一步详细阐述,如图2本发明所提供的数据库备份方法的另一种具体实施方式的流程图所示,该方法包括:

步骤S201:确定需要备份的数据库;确定历史数据表清单;确定历史表建表及数据查询规则:日表、月表、分区表等;确定历史表数据插入规则;

步骤S202:将数据库中的数据表进行分类,分为历史数据表以及实时业务数据表;

步骤S203:对业务数据表进行全量备份;

实时业务表数据可以做全表备份结合binlog文件备份完成全量增量备份。

步骤S204:对历史数据表进行增量备份;

历史表历史数据备份,独立历史物理表可以全表备份、按日期range分区表/大表可以指定查询条件备份,理论上要备份的数据表或分区数据不会变更(采用隔日备份策略),所以可以去掉一致性备份条件,防止指定条件备份是对表产生影响。

历史表备份当日数据备份存在2中情况:独立历史物理表可与实时业务表同时备份;按日期range分区表/大表等表加条件导出时由于mysqldump限制(多表备份时不能指定单表的条件)故需要单独备份,在做恢复操作时非常麻烦。

步骤S205:将备份的所述业务数据表以及所述历史数据表存储到介质中,完成数据库的备份。

下面对本发明实施例提供的数据库备份装置进行介绍,下文描述的数据库备份装置与上文描述的数据库备份方法可相互对应参照。

图3为本发明实施例提供的数据库备份装置的结构框图,参照图3数据库备份装置可以包括:

分类模块100,用于将数据库中的数据表进行分类,分为历史数据表以及实时业务数据表;

全量备份模块200,用于对所述业务数据表进行全量备份;

增量备份模块300,用于对所述历史数据表进行增量备份;

存储模块400,用于将备份的所述业务数据表以及所述历史数据表存储到介质中,完成数据库的备份。

在上述实施例的基础时,本发明所提供的数据库备份装置中,所述增量备份模块具体为:确定所述历史数据表中的当日数据以及新增隔日历史数据;分别对所述当日数据以及所述新增隔日历史数据进行备份的模块。

进一步地,本实施例还可以包括:

命名模块,用于在对所述新增隔日历史数据进行备份之后,根据预设命名规则对备份文件进行命名。

在上述任一实施例的基础上,本发明所提供的数据库备份装置还可以包括:

数据压缩模块,用于在将备份的所述业务数据表以及所述历史数据表存储到介质中之前,对所述业务数据表以及所述历史数据表进行数据压缩。

作为一种具体实施方式,本实施例还可以进一步包括:

清理模块,用于当满足预设条件时,对过期数据进行清理

本申请所提供的数据备份装置快速实现了mysql大型数据库场景下数据库的备份,减少了备份恢复时间、减少了备份文件空间占用,提高了备份恢复的效率以及数据库的安全保障能力。

以一具体项目为例,该项目需要备份的数据库每年容量预计为2.5T,其中业务表数据只有5G左右,其余的全部为历史数据,经计算每天产生的历史数据在10G左右,假设进行全库备份,备份速率为500G/H约需要5小时且备份出的文件无空间可已存放;使用分表备份的策略每天只需要做不到半小时,时间效率明显。通过编写脚本对各个备份过程处理后实现自动化,备份命令参数控制细化,可以在对数据库影响更小的前提下完成备份,与对应的数据库恢复过程,也可以实现业务数据表先行恢复,历史数据可以在不影响业务的情况下后续慢慢恢复,保证业务系统尽快恢复正常使用。

综上,传统的mysql数据库备份方案是通过mysqldump等工具进行整库的备份,导致备份时间长,对数据库影响大的问题,而本申请通过备份程序对各个备份过程处理后实现自动化,备份命令参数控制细化,可以在对数据库影响更小的前提下完成备份。同时,本申请减少了备份的恢复时间、减少备份文件的空间占用,从而提高了备份的效率。此外,对应的数据库恢复过程也可以实现业务数据表先行恢复,历史数据可以在不影响业务的情况下后续慢慢恢复,保证业务系统尽快恢复正常使用。

本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。

专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。

以上对本发明所提供的数据库备份方法以及装置进行了详细介绍。本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。

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