Unix系统Informix数据备份技巧
发布时间:2025-05-23 22:31:43 发布人:远客网络
一、Unix系统Informix数据备份技巧
在单位使用Unix Openserver 5.05操作系统和Informix 7.3数据库管理系统时,针对Unix系统Informix数据备份的技巧,我总结了一些实践经验,下面分享给大家。
首先,关于Informix数据备份命令,其中Ontape命令特别值得关注。它可以在在线模式下进行数据备份,提供0、1、2级三种不同的备份方式。0级备份是对数据空间的完整备份,包括数据库逻辑日志,备份量相对较大。1、2级备份是增量备份,备份量较小。但在数据恢复时,若0级备份出现问题,则无法进行数据恢复。备份数据以专用格式存储,对用户“不可见”,可能给用户带来不安全感。
接着,dbexport命令适用于对数据库的完整备份(包括数据结构),其备份数据格式为文本文件,用户可用VI编辑进行部分数据恢复。不过,此命令不支持在线备份,并需要使数据库离线。若需对多个数据库进行备份,需借助shell程序实现。
unload命令则专门用于备份数据库中的单张表,备份数据以文本文件格式存储,用户可用VI编辑进行部分数据恢复。优点在于支持在线数据备份,但如需对整个数据库进行完整备份,则需进行编程。
综合考虑Ontape、dbexport、unload命令的优缺点,个人建议采用Ontape命令进行周期性备份(0级备份),同时利用unload命令进行日常备份,这样既灵活又高效。
在使用unload命令备份Informix-4gl时,可以编写相应的shell程序来简化操作。例如,编写一个名为auto_backup的程序,可遍历数据库中的所有表,将其转存为对应表名的文本文件。
对于多个数据库的操作,可使用shell程序实现自动化备份。比如,通过一个shell程序自动执行对多个数据库的备份操作。
备份数据后,需要考虑将其传输到数据备份机。建议设置专用备份机,并配备光盘刻录机,以便实时将数据备份到可读写光盘。通过FTP程序,可以将数据从Unix系统传输至Windows系统进行备份。
为了实现备份自动化,可以利用Unix系统中的cron定时执行机制,建议由Informix用户执行备份任务。通过crontab命令设置定时执行备份脚本,例如每天12:30执行备份程序,自动将数据备份到可读写光盘。
综上所述,通过上述方法可以实现Unix系统Informix数据的自动备份,确保数据安全可靠。定期备份数据,不仅有助于数据恢复,还能提高数据备份的效率和可靠性。通过自动化备份流程,可以减轻系统管理员的工作负担,提高数据管理的效率。
二、如何实现Informix的ontape零级备份自动完成
ontape是informix数据库的简单易用的备份工具,但是它必须交互进行,对数据库的日常维护有一定的限制,比如,我们想在晚上进行备份,而不是在白天工作的时间。
下面我就简单示例,实现ontape的自动备份,这样我们就可以编写一个脚本,让操作系统在系统不忙时自动调用。
1)$ONCONFIG中参数 TAPEDEV已设置
TAPEDEV/Backup/archive0# Tape device path
TAPEBLK 16# Tape block size(Kbytes)
TAPESIZE 2000000# Maximum amount of data to put on tape(Kbytes)
3)备份过程产生的日志文件放在/opt/informix/archive目录下;
4) ftp.cmd文件放在/opt/informix/archive目录下;
#----------Autobackup.sh Begin----------
LOGFILE=/opt/informix/archive/archive.log
echo"---------- INFORMIX SYSTEM BACKUP(`date+%c`)----------">>$LOGFILE 2>&1
touch/Backup/archive0>>$LOGFILE 2>&1
chown informix:informix/Backup/archive0>>$LOGFILE 2>&1
chmod 660/Backup/archive0>>$LOGFILE 2>&1
echo ` `| ontape-s-L 0>>$LOGFILE 2>&1
#将备份完成后的文件加上时间戳
mv-f/Backup/archive0/Backup/archive.$DATE>>$LOGFILE 2>&1
compress-f/Backup/archive.$DATE>>$LOGFILE 2>&1
cp-f/Backup/archive.$DATE.Z/Backup/ftp>>$LOGFILE 2>&1
ftp-n</opt/informix/archive/ftp.cmd
rm-f/Backup/ftp/*>>$LOGFILE 2>&1
echo"There is$COUNTS files in/Backup...">>$LOGFILE 2>&1
echo"An oldest file will be delete,please wait...">>$LOGFILE 2>&1
OLDFILE=`ls/Backup|sort|head-1`>>$LOGFILE 2>&1
rm-f$OLDFILE>>$LOGFILE 2>&1
echo"Delete file completed,$OLDFILE was deleted.">>$LOGFILE 2>&1
echo"There is no more then 6 file,nothing to do...">>$LOGFILE 2>&1
#------------autobackup.sh End-----------
以上脚本可以使用操作系统的crontab命令,指定时间,自动运行,不用人工干预。
另外附上使用ftp命令的自动传输教本。
#------------ftp.cmd begin---------------------------
put/Backup/ftp/*/RemoteBackup/archive0
#--------------------------ftp.cmd end----------------------
在远端系统上同样可以使用crontab命令来处理传输过去的文件。
大家可以自行修改以上脚本,使之适用于自己的环境。
三、informix数据库如何导入导出数据表
1、Informix我之前是没有用到过的,因为这次需要采用Informix作为ETL的一个中间库,所以需要学习它。
2、所谓中间库,就是说把从各个业务系统卸载下来的数据(通常是文本),装载到这个中间库Informix中,然后再然过ETL过程操作,最后装载到数据仓库中。
3、之所以要采用一个中间库,主要是为了使数据容易维护,因为从各业务系统卸载下来的数据(通常是文本),文本文件是比较难于维护的。还有解决一些乱码问题,Informix这里可以把乱码的数据去除掉。最后一个就是解决文本文件取定长数据的问题,很容易出错,不过这个具体我还是不是很明白。
4、其实也可以直接使用文本文件,就是说不经过这个中间库,然后需要解决上面说的三个问题。
5、Informix数据导出,也叫做卸数:unload to fileName.txt select* from tableName
6、语法比较简单,unload to后面接导出的文本文件名称,select后面接你所要导出的数据的条件。
7、Informix数据导入,也叫做装数:load fileName.txt insert into tableName
8、load后面接需要导入的文本文件名称,后面insert into后面接数据表名。
9、备份表结构dbschema-d database database.sql
10、-d表示导出整个数据库的表结构,-t表示导出某一个数据表的表结构。