基于集群架构的高可靠性数据备份与恢复方法
【技术领域】
[0001]本发明属于数据库技术领域,主要涉及一种基于集群架构的高可靠性数据备份与恢复方法。
【背景技术】
[0002]在信息化的今天,随着数据量的几何级增长,使得传统单一的数据库服务难以满足企业级的应用需求,在此背景下,数据库集群技术逐渐成为解决海量数据高效并发问题的有效途径。简单来说,数据库集群是利用多台数据库服务器构成的一个虚拟单一的数据库逻辑映像,并向客户端提供透明的数据服务,每台数据库服务器即为一个集群节点。除了需要提供正常的服务功能外,集群还必须具有恢复系统遭遇故障的能力,以防止数据的灾难性丢失或损坏,因此,高可靠性的数据备份与恢复成为衡量集群服务的重要指标。
[0003]集群是由多个数据库服务器节点组成,因此每个独立节点的高可用性、高可靠性数据的备份与恢复成为影响整个集群服务的关键。一般可以将单个节点的故障分为事务故障、系统故障和介质故障三种。事务故障是由内部逻辑错误、系统错误(如死锁)等不可预知原因而导致的事务夭折或中止,当出现故障时,事务对数据库的修改将被取消,即要求数据库系统实现事务回滚。系统故障是由掉电、操作系统出错等原因引起的,一般会导致系统崩溃、内存内容丢失,但磁盘内容不受影响,当数据库系统崩溃重启后可进行系统自动恢复。介质故障主要是由磁头损坏或数据传输操作失败等原因引起的,可导致部分或全部磁盘数据丢失或损坏。不难看出,介质故障是三种故障中最为严重的,该故障甚至会导致数据灾难性的毁灭,因此,如何实现介质故障情况下高可靠性数据的备份与恢复显得尤为重要。
[0004]目前,各大主流数据库集群产品一般采用双机热备方案进行高可靠性数据的备份。这种方案的主要思路是实现集群中各个节点间的两两互备,当一个节点发生介质故障时,可实现备用节点的自动平滑过渡对外提供相同的服务,这在一定程度上解决了在不增加硬件设备前提下的单节点故障,保证了数据和业务的高可靠性。但是,当一个节点发生介质故障时,该节点的数据将丢失或损坏且无法恢复,一旦该节点的备用节点也发生介质故障时,会造成该节点所有数据的丢失,给整个应用系统带来难以挽回的损失。
[0005]综上所述,在节点发生介质故障时,双机热备方案并不能利用其备份节点实现该节点数据的恢复,且不能解决备份节点同时发生介质故障所带来的数据丢失问题。
【发明内容】
[0006]本发明的目的在于克服现有技术的不足,提供一种基于集群架构的高可靠性数据备份与恢复方法,解决双机热备方案不能利用其备份节点实现该节点数据的恢复且不能解决备份节点同时发生介质故障所带来的数据丢失问题。
[0007]本发明解决现有的技术问题是采取以下技术方案实现的:
[0008]—种基于集群架构的高可靠性数据备份与恢复方法,包括在线数据备份与恢复方法和历史数据备份与恢复方法,其中:
[0009]所述在线数据备份与恢复方法包括以下步骤:
[0010]步骤1:创建表空间并按时间划分范围分区表;
[0011]步骤2:在向数据库导入数据的过程中实现一个备份功能;
[0012]步骤3:将备份信息写入系统表;
[0013]步骤4:当天数据变成历史数据时将其按历史数据备份方式完成备份,删除当天数据的备份文件,同时清空系统表中当天信息的相关记录;
[0014]步骤5:当发生磁盘故障时,根据备份系统表里的相关信息,重新装载数据,实现在线数据的恢复;
[0015]所述历史数据备份与恢复方法包括以下步骤:
[0016]步骤1:在某一时间点,添加当天数据子分区表,用以接收当天数据;
[0017]步骤2:执行锁定操作,锁定在线数据子分区表,将其变成历史数据;
[0018]步骤3:在锁定在线数据子分区表的同时,通过操作系统拷贝命令,对当前节点的所有数据文件进行磁盘间互相复制备份;
[0019]步骤4:在锁定操作完成后,将当前节点的所有历史数据文件的备份,通过操作系统拷贝命令,复制到集群系统其它节点;
[0020]步骤5:当磁盘发生故障时,通过更换磁盘并复制已备份的历史子分区表数据文件,实现历史数据的恢复。
[0021]所述在线数据备份与恢复方法中的步骤1包括以下处理过程:在集群环境下创建包含若干数据文件的表空间,该表空间下的数据文件个数和每个节点的磁盘数相同且每个数据文件放在一个单独的磁盘上,然后在该表空间下创建一个按天划分的范围分区表。
[0022]所述在线数据备份与恢复方法中的步骤2包括以下处理过程:(1)设置在线数据备份参数;(2)设置在线数据备份路径,不同的路径对应不同的磁盘目录;(3)设置备份所用内存缓冲区大小;(4)建立连接并访问数据库集群;(5)创建表空间及数据文件,不同的数据文件对应不同的磁盘目录;(6)添加在线子分区表;(7)利用数据库导入工具向在线子分区表导入数据;(8)采用循环方式将导入数据写入指定的数据备份路径。
[0023]所述在线数据备份与恢复方法中的步骤3的备份信息包括:表名、备份结束时间、备份路径和导入语句信息。
[0024]所述在线数据备份与恢复方法中的步骤5包括以下处理过程:当发生磁盘故障时,修复磁盘,重新启动数据库并创建当天数据子分区表,利用数据库导入工具,根据步骤3中的系统表信息,将对应的备份文件重新导入该分区表,从而实现在线数据的恢复。
[0025]所述历史数据备份与恢复方法中的步骤1包括以下处理过程:创建包含若干数据文件的表空间,该表空间下的数据文件个数和每个节点的磁盘数相同且每个数据文件放在一个单独的磁盘上,然后在该表空间下添加新的一天数据子分区表。
[0026]所述历史数据备份与恢复方法中的步骤2包括以下处理过程:每天在特定的时间点将当天数据划分为历史数据,通过锁定操作将该部分在线数据子分区表进行锁定,禁止其他事务对其进行操作。
[0027]所述历史数据备份与恢复方法中的步骤3包括以下处理过程:创建备份脚本,在锁定在线数据子分区表的同时,通过备份脚本将所有数据文件通过循环复制方式进行磁盘间互相备份。
[0028]所述历史数据备份与恢复方法中的步骤4包括以下处理过程:创建备份脚本,在锁定操作完成后,将当前节点的所有历史数据文件的备份,通过备份脚本复制到集群系统其它节点。
[0029]所述历史数据备份与恢复方法中的步骤5包括以下处理过程:当磁盘发生故障时更换磁盘,创建恢复脚本,通过恢复脚本复制已备份的历史子分区表数据文件至当前节点,重新启动数据库即可实现历史数据的恢复。
[0030]本发明的优点和积极效果是:
[0031]1、本发明为基于集群架构的单节点高可靠性数据备份与恢复方法,能够在数据库服务器运行状态下对数据库进行备份,实现了联机备份,在备份时,能够向用户提供正常的服务,实现了系统事务和备份的并行处理,有效地提高了系统可用性。当一个服务器节点发生介质故障时,通过修复并启动该节点,并利用已备份数据对该节点进行介质恢复,从而增强整个集群数据库系统的高可用性、高可靠性。
[0032]2、本发明结合了数据的时间特征,将数据划分为在线数据和历史数据,根据数据的不同特征采用了不同的备份恢复方法,在线数据通过在数据库导入数据过程中实现备份操作,而历史数据由于数据不再进行变化,只通过操作系统拷贝命令的方式进行备份数据文件,有效地提高了数据备份的效率。
[0033]3、本发明在集群架构下,不仅当前节点上通过磁盘间互相备份的方式实现数据冗余,而且还将当前节点的备份拷贝到集群其它节点上,避免了当前节点发生多个磁盘故障时备份文件丢失的问题,提高了单数据库节点的高可用性、高可靠性。并有效地解决了一般集群双机热备方案中无法有效恢复节点数据、互备节点同时发生介质故障时的数据丢失等问题。
【附图说明】
[0034]图1是本发明的系统架构示意图;
[0035]图2是本发明的处理流程示意图;
[0036]图3是在线数据备份处理流程示意图;
[0037]图4是历史数据备份处理流程示意图。
【具体实施方式】
[0038]以下结合附图对本发明实施例做进一步详述:
[0039]—种基于集群架构的高可靠性数据备份与恢复方法,是在如图1所示的系统框架上实现的。该系统框架将数据划分为在线数据和历史数据,针对两种类型数据分别进行备份和恢复,如图2所示,在线数据及历史数据备份和恢复的处理思路如下:
[0040]在线数据的备份与恢复的处理思路是:由于在线数据一直处在一种不断加载和更新的动态变化过程中,所以对在线数据文件进行复制是起不到备份效果的,针对在线数据,可在导入数据过程中实现一个备份处理过程,该过程实现在数据导入在线子分区表的同时,将数据以循环方式备份到所有的磁盘上,每次备份一条数据到多个磁盘目录,这样每次备份数据都在多个磁盘上存在冗余,同时将这些备份信息记录到系统表中;当在线数据所在磁盘发生介质故障时,更换磁盘后重建在线数据子分区表,根据在线数据备份系统表中的记录信息重新导入该子分区表数据,即可实现在线数据的恢复。
[0041]历史数据的备份与恢复的处理思路是:由于历史数据具有不再更改的特点,所以可以通过操作系统拷贝命令对每个数据文件采用循环复制的方式进行备份;当发生磁盘故障时,通过更换磁盘并从备份的磁盘中复制历史数据文件,重新启动数据库即可实现历史数据的恢复。在节点发生介质故障时,本发明能够利用历史数据和在线数据在其他磁盘上的备份,及时、可靠的对发生故障的节点进行数据恢复,从而保证集群中每个数据库服务器节点的正常启动与运行,避免了数据的丢失与损坏。
[0042]本发明有效地解决了一般集群双机热备方案中无法有效恢复节点数据、互备节点同时发生介质故障时的数据丢失等问题,提高了单数据库节点的高可用性、高可靠性,进而提高了整个集群系统的服务能力。
[0043]如图3所示,本发明的在线数据备份与恢复方法包括以下步骤:
[0044]步骤1:创建表空间并按时间划分范围分区表。
[0045]本步骤包括以下处理过程:在集群环境下创建包含若干数据文件的表空间,该表空间下的数据文件个数和每个节点的磁盘数相同,且每个数据文件放在一个单独的磁盘上,然后在该表空间下创建一个按天划分的范围分区表。