在SCO Unix下备份Informix数据库,一般的做法是通过tbtape或ontape命令在磁带介质上作各级备份。磁带备份具有使用灵活、存储方便和成本较低等特点。但是,采用磁带备份也会带来因磁带质量不佳而产生的可靠性问题。当所存储的业务数据的安全性和完整性至关重要时,我们就需要采用更安全的数据备份方法,例如双机热备份等等。这些方法相对来说十分可靠和安全,并且实时性强,可是所需要的软硬件投资很大。在实际工作中,我们找到了一种比较经济实用的方法,采用另外的一台计算机实现备份,即异机备份。
一、备份的思路
下面介绍一种方便实用而又十分安全可靠的Informix数据库文件异机备份方法,其指导思想是充分利用现有的软件和硬件资源,利用SCO Unix 5.0捆绑的NFS网络协议。为此,需要编制一个脚本,将Informix数据库文件于每个工作日夜晚的某一时刻自动备份到另一台SCO Unix主机上,这台主机有可能是企业升级主服务器后淘汰下来的闲置设备,或者是一台性能稍低、经过扩充硬盘后专门用于备份数据的服务器。备份机上可以没有安装Informix数据库管理系统,也不需要像双机热备份那样需要复杂的软硬件支持,一台普通的SCO Unix服务器就足够了。备份的方法是,首先在用于备份的主机(下面简称备份机)上安装NFS网络协议,再建立专用的备份目录,比如/u/archive,然后将此目录”输出”(export)到网络中。在运行Informix数据库的主机(下面简称主机)上先”安装”(mount)备份机的/u/archive目录到本机的某个目录,比如安装到/mnt目录,再利用Informix用户的定时文件/etc/cron/crontabs/Informix,自动在某一指定时刻使用数据库迁移命令dbexport进行备份。
这个备份方法的最大优点是安全可靠,因为是异机备份,所以主服务器的崩溃与否不会影响到备份机; 另外,硬盘的可靠性本身就比磁带高得多,所以备份数据十分可靠。dbexport命令一般用于数据迁移,这里我们用它来备份数据,主要优点是: 首先,该命令除了备份数据外,还会在备份盘上用SQL语句写上数据库里各种表的结构和授权方式等信息,便于系统管理员在系统崩溃后重新建数据库,即使我们建数据库时的各种原始参数丢失了都没有关系,不像用ontape命令在磁带上写的备份数据,其格式只有在磁带机上才能阅读; 其次,因为不同的主机位于不同的物理位置,大大提高了数据的安全性和隐蔽性; 最后,系统的运行方式是通过自动定时文件的方式来完成的,时间可以由系统管理员任意选定,增加了备份的灵活性。采用这种方法和原有的磁带备份相结合,可以真正做到重要业务数据的万无一失。
二、备份的实施
实现异机备份的条件是,企业已经有了一个运转良好的计算机局域网,并且有通过TCP/IP连接到一起的2台SCO Unix主机,假设一台机器命名为app01,其IP地址是10.100.0.11,把它作为备份机使用;另一台机器命名为app02,其IP地址是10.100.0.22,是运行Informix数据库的主机。要求SCO Unix操作系统的版本为5.0以上,这点很重要,因为只有5.0以上版本的SCO Unix才捆绑备份所要用到的网络协议–Sun公司的NFS网络协议。此外,使用OperServer 3.0企业版或类似的版本也可以,这种版本也捆绑了NFS协议。以下是详细的操作步骤。
第一步:配置和检测网络协议
在备份机app01上以root身份登录,然后使用netconfig命令检测系统是否除了TCP/IP外,已经配置好NFS网络协议,若还没有配置,则增加该协议。
第二步:建立关联
用root身份在备份机app01上的/etc目录下建一个文件,文件名为exports,不用设置文件的属性,在文件中写上以下一行内容:
/u/archive -accesss=app02
说明:/u/archive是我们已经在独立分区建好的一个空目录,预留的空间应该比较大,以便于存放数据库的数据。参数access的意思是只允许名为app02的主机访问这个目录,从安全的角度考虑,这样设定是必须的。注意: 这里此目录是读写属性,不能定义成只读属性,否则我们无法通过网络在此目录区写信息。假设app02主机的IP地址是10.100.0.22,在备份机app01的/etc/hosts文件中应该有以下一行内容:
10.100.0.22 app02
存盘退出后运行命令exportfs:
# exportfs /u/archive
这个命令的含义是将目录/u/archive输出到网络上,您只需要运行一次即可。以后系统在重新启动时,会自动将/etc/exports文件中定义的目录按规定的属性输出到网络上。
在备份机运行exportfs命令检测一下:
# exportfs
系统显示如下信息:
/u/archive -access=app02
这表示我们已经成功地将目录/u/archive输出到网络上。
第三步:配置主机
首先在app02主机上对备份机刚刚输出到网络的目录进行安装和测试。以root身份登录,运行如下命令:
# mount app01:/u/archive/mnt
注意:主机app02的/etc/hosts文件中应该有如下一行:
10.100.0.11 app01
10.100.0.11是备份机app01的IP地址。运行上述mount命令后就把备份机app01上的目录/u/archive映射成了主机app02上的/mnt目录。
注意上面的最后一行,系统告诉我们,/mnt目录现在映射的文件系统是备份机app01上的目录/u/archive,已用空间达76%。上面的信息表示主机和备份机的TCP/IP网络、NFS等运行等一切正常。
在app02主机以Informix身份登录,确认此时只有您一个人在使用数据库,否则采用onmode -s命令进入静态后,再执行onmode -m命令进入online状态,运行下面的命令
$ dbexport database1 -c -q -o /mnt
$ dbexport database2 -c -q -o /mnt
这样,我们就把主机app02上的2个Informix数据库文件database1和database2备份到了备份机app01上的/u/archive目录下。在备份机上检查/u/archive目录,会发现已经有了主机app02上database1和database2的数据库文件。
三、备份的方法
现在我们看看在主机app02上用数据迁移命令配置自动定时备份的具体方法。假设主机上app02已经给Informix用户授予了运行mount和umount的权限,我们在Informix的根目录下编制一个shell脚本,脚本的算法结构如下:
用ping检测与备份机网络连接正常与否?
if 正常 then
安装备份机的/u/archive目录到本机的/mnt目录
使Informix保证单一用户状态
用数据迁移命令dbexport逐个输出数据库到/mnt目录
if 备份成功
发送备份成功的邮件给Informix用户
else
发送备份不成功的邮件给Informix用户
end
卸载(umount)/mnt
else
发送网络不通、备份不成功的邮件给Informix用户
end
shell脚本编制完毕后,假设脚本名叫backup,设置为隐含和可执行,以便防止用户无意读写破坏脚本文件。可以在存盘时在文件名中加上一个控制符^A。这样,在列表显示目录时,该文件名看起来一切正常,但是实际上在中间隐含了一个控制符,不知道控制符的人永远打不开这个脚本。在$提示符下运行crontab -e命令,编辑Informix用户的定时执行文件,在文件中加上这样一行:
30 23 * * 1,2,3,4,5 /u/Informix/back^Aup
存盘后退出即可。上面一行的意思是,在星期一至星期五的晚上11点30分,系统自动运行文件/u/infomix/backup。
至此,采用数据迁移方式通过NFS网络协议将Informix数据库备份到异地主机上的操作就基本上到此为止了。我们采用这种备份方式之后,至今一直十分可靠,并且在一次主服务器的意外崩溃的情况下,使用备份机的业务数据成功地恢复了数据库。
实际上,可以对上述方法举一反三。比如,若我们尚未配置磁带机或磁带机发生故障,或根本不打算把数据备份到磁带机上,可以先在备份机app01上的独立分区内建立2个目录,一个叫/u/archive,用于存储主备份数据;另一个叫/u/logfile,用于存储逻辑日志。然后将这2个目录加到/exports文件中。在主机app02上运行mount命令,将备份机的上述2个目录分别安装到主机的/archive和/logback目录上,再运行onmonitor命令,将Informix的主备份磁带设备定义为/archive目录(这也是SCO Unix的优点之一: 系统将所有外设都作为文件系统来管理,反之亦然),逻辑日志的磁带设备定义为/logback目录。这样,当使用tbtape或ontape命令进行备份时,系统实际上是将数据写在备份机的/u/archive目录下,而逻辑日志写在备份机的/u/logfile目录下。
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
TechTarget
官方微博
TechTarget中国
相关推荐
-
DBA五大致命失误:你的备份可靠吗?
每个人都会犯错,DBA也不例外。不过DBA犯错时,通常他们也是第一个发现错误,并立刻修正错误。但,有些错误是不可原谅的。那什么样的失误会让DBA可能丢掉工作饭碗?
-
MySQL到OpenStack Swift的备份与恢复
在OpenStack中MySQL数据库的使用很普遍。OpenStack核心服务计算(Nova),存储(Cinder),Neutron(网络),镜像(Glance)和认证(Keystone)都使用MySQL数据库。
-
有效的MySQL备份与恢复
如果您接手了一个MySQL生产系统,但不确定它是否运行了MySQL备份策略,这时需要做哪些保障措施呢?
-
非DBA人士要不要接受数据库知识培训?
对于IT业内人士来说,想成为合格的SQL Server DBA或程序员似乎必须先接受培训才行。然而,对于不想成为DBA或程序员的人来讲,SQL Server相关培训也是必要的。