刘坤峰,裴祥喜,陈玉芳,崔 晶
(河北工程技术高等专科学校,河北省沧州市浮阳南大道6号 061001)
在高校的应用服务器中安装了Oracle,Ms SQL Ser ver,My SQL等多种数据库服务器,其中的应用数据都是非常重要的,不允许数据出现丢失、损坏等任何问题,这就要求在数据库服务器的日常维护中,要做好数据的备份工作,确保数据万无一失。在做好数据库数据备份的情况下,如果因为更换服务器等各种情况需要恢复备份的数据时,要能够正确的恢复数据,保障有关服务的正常运行。
Oracle数据库是美国甲骨文公司的关系数据库产品,有8i,9i,10g,11g,12c等版本。Oracle的备份与恢复方法有逻辑备份与恢复、脱机备份与恢复(冷备份与恢复)、联机备份与恢复(热备份与恢复)等方式[1]。
逻辑备份与恢复是利用Oracle提供的exp和i mp导出导入工具、expdp和i mpdp数据泵导出导入工具等备份恢复数据。逻辑备份与恢复实施起来较为方便,但对于数据量比较大的数据库,比较耗费时间与空间。
脱机备份与恢复是在关闭数据库的情况下用操作系统命令对数据库使用的数据文件、控制文件、联机日志文件、初始化参数文件等必要文件进行备份与恢复。脱机备份与恢复需要在关闭数据库的情况下进行,单独使用只能恢复到备份时刻。这种方法只需拷贝文件,安全快速。
联机备份与恢复不需停止数据库服务,数据库工作于归档模式。备份恢复比较快速,但不能出错,操作较复杂,需要仔细谨慎。
对于运行中的Oracle服务器,综合考虑导出的数据库的大小和尚有的存储空间及恢复的便利性,本例采用逻辑备份的完全备份的策略。这样备份数据不影响数据库的运行,能够跨平台迁移数据。本例中Oracle安装在RHEL下。本例实现在/home/back下,在每天的凌晨1点,通过定时执行backup.sh脚本文件,自动产生以db开头后跟yy mmdd的d mp和l og的数据库备份文件。
在RHEL下,编辑一个脚本文件backup.sh,内容为:
filePat h=/home/back
rq=`date'+%y%m%d'`
su-oracle-c“exp user/pass wor d file=$filePat h/db$r q.d mp l og=$filePat h/db$r q.log”
执行cr ontab-e,添加如下一行:
0 1***/home/back/backup.sh
备份的文件名形如db141025.d mp,db141025.log。
在Windows客户端可以设置一个backup.bat的批处理文件,在任务计划中设置执行这个脚本,达到按设定的时间备份数据库的目的。backup.bat的内容为:
echo on
set ph=D:\data bak\
exp user/password@orcl file=%ph%%date:~0,10%.d mp log=%ph%exp.log
C:\Pr ogra~1\Win RAR\rar a%ph%%date:~0,10%.rar%ph%%date:~0,10%.d mp-df-m5-ep
在Windows客户端得到的是一个压缩的rar文件,比原始的d mp文件小很多,节约了磁盘空间。
对于使用exp导出的Oracle数据,使用与之相应的i mp工具实现恢复数据的操作。在数据库服务器的终端命令行窗口执行如下命令来恢复备份的数据。
i mp user/pass wor d file=db141025.d mp f ull=y
MS SQL Server是美国Microsoft公司的数据管理系统产品,有SQL Server 2000,2005,2008,2012,2014等版本。各版本的SQL Server在Windows系统上获得了广泛应用。SQL Server数据备份包括数据库的完整备份、事务日志备份、差异备份和对指定文件组和文件的备份。完整备份是对数据库内所有对象进行全部完整的备份。事务日志备份是对自上次备份事务日志后对数据库执行的所有事务的一系列记录进行备份,可以使用事务日志备份将数据库恢复到特定的时间点。差异备份是备份自上一次完整备份后数据库操作的部分[2]。备份指定的文件和文件组,不用备份数据库的其它部分,可以加快备份和恢复的速度。
以SQL Server 2008 R2为例,通过维护计划备份数据库。在Microsoft SQL Server Management Studio的“管理”下的“维护计划”上右击,选择维护计划向导,根据向导的提示,设置数据库备份策略。
需要利用备份的数据恢复数据库数据时,在Microsoft SQL Server Management Studio下,执行还原操作即可恢复数据。
My SQL数据库早先是瑞典的My SQL AB公司所有的开源关系型数据库产品,广泛应用于WEB开发。2008年My SQL AB公司被SUN公司收购,2009年SUN公司又被甲骨文公司收购,目前My SQL数据库属甲骨文公司所有,分为商业版和社区版,目前社区版的最新版本为5.6.21。My SQL和开源的Linux,Apache,PHP构成了著名的LA MP组合,获得了广泛应用。
通过操作系统命令直接拷贝数据文件快速、直接的实现完全备份。为了保证数据的一致性,需要在备份文件前暂时关闭数据库或执行SQL语句FL USH TABLES with READ LOCK把内存中的数据刷新到磁盘中,同时锁定数据表以保证备份过程中不会有新的数据写入。这种方法备份出来的数据恢复简单,只需直接拷贝到原来的数据库目录下。
My SQL提供了SQL语句和mysqldu mp等实用工具也可以实现数据库的备份与恢复。mysqldu mp程序可以备份表数据文件、数据库表的结构,还可以备份一个数据库和整个数据库系统[3]。
My SQL数据库在开启了二进制日志的情况下,由于更新日志记录了数据备份后进行的所有更新,因此可以实现增量备份,可以最大程度的恢复数据。查看和恢复二进制日志文件数据使用mysql binl og实用工具。
对于应用到My SQL的网站,My SQL安装到了Cent OS下,为了确保网站数据安全,对My SQL数据库进行备份。备份My SQL数据库使用My SQL的客户端实用程序mysqldu mp。
在/etc/cr on.daily/下产生一个autobackup mysql.sh文件,内容如下,备份文件名形如:DB20141026.sql.gz。
autobackup mysql.sh:
filename=`date+%Y%m%d`
/usr/bin/mysql du mp-u r oot-ppass wor d--opt c ms|gzip>/opt/backup/DB$filename.sql.gz
为autobackup mysql.sh脚本添加执行权限:
ch mod+x autobackup mysql.sh
检查/etc/crontab文件将相关行修改为如下:
55 23***root r un-parts/etc/cr on.daily
这样就实现了每天晚上23:55分自动压缩备份My SQl数据库的目的。
恢复数据库时在Cent OS的终端窗口执行如下命令:
解压缩:
gzip-d DB20141026.sql.gz
恢复数据:
mysql-u r oot-p<20141030.sql
SQLite是一个免费开源的、自包含、零配置、支持事务的嵌入式数据库引擎,类似Access,没有单独的服务进程。直接读写普通磁盘文件[4]。目前的最新版本是SQLite 3。
某精品课网站用到了SQLite数据库,为了确保数据安全,在任务计划程序里设置一个每周五晚上23点执行的任务计划程序,执行如下的批处理backup.bat实现备份数据库。
backup.bat:
echo on
set ph=d:\data_bak
sqlite3 jpk.db.du mp>%ph%\backup.sql
恢复数据库时,在命令行执行如下命令:
sqlite3 jpk.db<backup.sql
数据已成为企事业单位的重要资产。计算机系统在运行中由于软硬件故障、病毒、黑客攻击等可能造成数据库数据的丢失或损坏。数据库系统在运行中必须采取必要的备份措施,这样在遭遇数据灾难的时候才能尽快恢复系统的运行,避免遭受更大有形或无形的损失。本文结合校园网中常用的数据库提供的数据备份与恢复功能,针对数据库的完全备份策略,给出了相应的备份与恢复的具体方法,在实际应用场景中有实用价值。
[1] 路川,胡欣杰.Oracle 11g宝典[M].北京:电子工业出版社,2009:805-810.
[2] 方盈.SQL Server 2000中文版彻底研究[M].北京:中国铁道出版社,2001:319-321.
[3] 黄婧.My SQL数据库程序设计[M].北京:高等教育出版社,2013:150.