薛慧珍
(中国煤炭科工集团太原研究院,太原 030006)
随着信息化的全面实施,企业的设计数据、生产数据、销售数据、财务数据等已电子化。对一个信息化程度比较高的企业来说,最有价值的财产或许就是企业数据库中的数据。因此,应根据具体环境和条件制定一个完善可行、确保系统安全的备份计划,没有备份的系统是不可靠的、危险的。破坏性病毒、误操作、自然灾害等,都可能会对数据库系统造成难以估量的破坏。尤其一个系统中最重要的是大量的实时数据,如果没有备份及恢复策略显然是不安全和不完善的,本文介绍了几种数据库备份与恢复的方法,其测试环境为,操作系统:Windows 2000 Server,数据库 MS-SQL Server2000(Server版)。
备份是数据库管理员定期将整个数据库复制到磁带或另一个磁盘上并保存起来的过程。常用的数据备份类型有:完全备份、差异备份、事务日志备份、文件或文件组备份。通用的备份策略是:以较长的时间间隔执行完全备份,以适中的时间间隔进行差异备份,并以较短的时间间隔进行事务日志备份。当数据遭到破坏后就可以利用备份来恢复数据库。恢复数据库是一个装载数据库备份然后应用事务日志重建的过程[1]。通用的恢复策略是:首先恢复完全备份的数据,然后恢复差异备份数据,最后根据事务日志备份进行恢复。
①完全备份可以备份整个数据库,包含用户表等所有数据库对象。但它需要花费较多的时间和空间。②事务日志备份。备份的内容是上次备份以来对数据库所做的改变,只需要很少的时间。③差异备份。它是只备份数据库中部分数据的另一种方法,它使用整个数据库的一种新的映像,它比完全备份小,其优点是存储和恢复速度快。④文件备份。数据库由硬盘上的许多文件构成,如果这个数据库非常大。那么可以使用文件备份,每晚备份数据库的一部分。由于一般情况下数据库不会大到必须使用多个文件存储,所以这种备份不是很常用。
在做各种备份前,如果日志特别大,应先收缩日志。方法如下:设置数据库模式为简单模式。在企业管理器中选取所要备份的数据库,右键选择属性,在属性中选择选项将模式设为简单,然后在当前数据库上点右键,看所有任务中的收缩数据库。一般的默认设置不用调整,直接点确定即可,收缩数据库完成后,再将数据库属性重新设置为标准模式。
①利用文件备份,即备份数据库本身的2个文件。首先打开SQL Server服务管理器,停止当前的服务,然后把要备份的数据库文件,即后缀名为(.dbf)和(.ldf)的2个文件拷贝到所备份的目录。这两个文件必须同时拷贝,否则恢复时将比较麻烦。也可不必停止服务,在SQL Server企业管理器中把需要备份的数据库分离出来,然后进行2个文件的拷贝。这种方法是使用数据库本身不大,并可以暂时停止使用的数据库。它的优点在于恢复时简单。②利用SQL Server企业管理器中的备份向导做备份。首先打开SQL企业管理器,选择要备份的数据库名称,然后菜单中的工具→选择要备份数据库,根据向导选择路径,输入备份文件名,点确定进行备份。这种备份用来做完整备份较好,它可以根据需要实时进行备份,并且不影响数据库的使用,但对于大的数据库这种方法比较费时[3]。③利用计划进行数据库的自动备份。首先打开企业管理器,选中需要备份的数据库,然后选择菜单中的工具→数据库维护计划器,根据提示先选择要进行自定备份的数据库。指定备份的周期和时间点,然后选择备份目录,根据提示最后确定,自动备份计划完成。这样还不能自动进行备份,还需要起动SQL Server Agent服务,此服务启动后,就可按照操作者上面的设置进行自动备份。这种方法只需要做一次计划就可使SQL Server根据操作者的设置进行数据库的自动备份。④利用SQL语句进行备份。首先打开查询分析器,连接到需要备份数据库的SQL Server服务器上,新建一个文档,输入:BACKUP DATABASE[数据库名称]TO DISK=’路径和文件名’WITH Format,然后按F5或点击执行按钮,即可对数据库进行备份。这种方法适合熟悉SQL语句的人员使用。
①利用备份的数据库文件直接进行恢复。打开企业管理器,选择所要恢复的数据库所在的服务器,右键单击数据库选择所有任务中的附加数据库,根据提示选择备份下的文件,即可进行恢复[2]。此方法适用于数据文件完全损坏或丢失的情况。②利用手工做的备份文件或执行计划所产生的备份文件进行恢复。打开企业管理器,选择所要恢复的数据库所在的服务器,然后新建一个数据库,新建的数据库自行取名(一般都与原数据库名称相同),建好数据库后选中,选择菜单中工具下的恢复数据库,在弹出窗口的还原选项中选择“从设备”,然后选择备份文件名,点击上方常规旁的选项按钮,在出现的窗口中选择“在现有数据库上强制还原。”并在恢复完成状态中,选择“使数据库可以继续运行,但无法还原其他事务日志”选项,最后点击确定即可进行恢复。如果出现错误提示,一般情况是因为数据库路径不正确或磁盘空间不足引起,因此在新建数据库时最好将数据文件和日志文件按原数据库的路径存放。这是一种最常用的方法,但这种方法恢复大的数据库比较费时,一个4G的数据库大约需30min以上。③利用SQL语句进行数据库的恢复,这种方法也是利用手工做的备份文件或计划产生的备份文件来进行恢复。首先,打开查询分析器,连接到需要恢复的数据库所在服务器上,新建一个文档,输入:RESTORE DATABASE[数据库名称]FROM DISK=’路径和文件名’WITH Stats,然后按F5或点执行,即可对数据库进行恢复。这种方法适合熟悉SQL语句的人员使用。④上述几种方法都是在有完整备份文件的情况下对数据库进行恢复。有时会碰到一些特殊情况。下面介绍特殊情况下恢复数据的2种方法:第一,利用sp attach single file db恢复。虽然恢复的可能性不大,但如果这个数据刚好执行了一个checkpoint,还是有可能成功的。在查询分析器中执行如下语句:EXEC sp attach single file db@dbname=’数据名称’,@physname=’路径和数据文件名’执行完后,如果提示设备激活错误,已创建新日志文件,则为恢复成功。第二,如果上述方法没有恢复,再按照如下步骤进行。首先,分离出损坏的数据库,然后把.mdf文件拷贝出来,再新建一个同名的数据库。停掉SQL Server(注意不要分离数据库),用原数据库的数据文件,即.mdf文件覆盖掉这个新建的数据库。重启SQL Server,此时打开企业管理器时会出现置疑,先不做处理。在查询分析器上执行下列语句(注意修改其中的数据库名):
执行完后,原来的数据库就恢复了,恢复后的日志文件比原来的要小。上述语句最好是单步执行,这样可以看到每一步的执行结果。
通常情况下,利用SQL Server自带的功能进行数据的备份与恢复。为确保数据的安全,最好的办法还是制定完善的数据备份制度,只有多做备份,才能在数据库发生故障时进行较好的恢复。另外,对出问题的数据库要谨慎处理,最好请专业人员处理。