在Debian系统上备份Informix数据库前,需完成以下基础配置:
INFORMIXDIR(Informix安装目录,如/opt/IBM/informix)、INFORMIXSERVER(数据库服务器实例名)、ONCONFIG(配置文件路径,如/opt/IBM/informix/etc/onconfig.online)等环境变量已正确设置(通常添加到/home/informix/.bash_profile中)。ontape工具进行物理备份,需确认磁带设备路径(如/dev/st0)已在onconfig文件中配置(TAPEDEV参数)。onmode -m quiescent),避免备份过程中数据不一致(尤其适用于dbexport等逻辑备份)。ontape是Informix官方提供的物理备份工具,支持**0级(完整)、1级(增量)、2级(差异)**备份,适用于大规模生产环境。
sudo -u informix ontape -s -L 0 -d database_name -o /backup/informix/dbname_$(date +%F).bak
参数说明:-s(静默模式,减少输出)、-L 0(0级备份)、-d(指定数据库名)、-o(输出文件路径)。sudo -u informix ontape -s -L 1 -d database_name -o /backup/informix/dbname_inc_$(date +%F).bak
sudo -u informix ontape -s -L 2 -d database_name -o /backup/informix/dbname_diff_$(date +%F).bak
sudo systemctl stop informix),执行:sudo -u informix ontape -r -d database_name -i /backup/informix/dbname_$(date +%F).bak
参数说明:-r(恢复模式)、-i(指定备份文件路径)。dbexport将数据库导出为ASCII文本文件(包含数据结构与数据),适合需要手动修改数据或迁移至其他数据库的场景(如MySQL)。
informix用户):sudo -u informix dbexport database_name -ss -c "informix" -f /backup/informix/dbname_export.dmp
参数说明:-ss(抑制统计信息输出)、-c(指定连接密码)、-f(输出文件路径)。sudo -u informix dbimport database_name -i /backup/informix/dbname_export.dmp -c "informix"
参数说明:-i(指定导入文件路径)。onmode -m quiescent),恢复后需重启至联机模式(onmode -m online);不支持在线备份。onunload以页为单位卸出数据,备份效率高于dbexport,适合备份单个大表或特定数据(如近期新增数据)。
sudo -u informix onunload -l -t -b -s database_name:table_name -o /backup/informix/table_name.unl
参数说明:-l(加载模式,用于后续恢复)、-t(文本格式,可读性强)、-b(二进制格式,效率高)、-s(静默模式)。sudo -u informix onload -d database_name -i /backup/informix/table_name.unl
参数说明:-d(指定数据库名)、-i(指定卸出文件路径)。.unl文件需用onunload/onload配对使用;支持增量卸出(如仅卸出新增数据)。tar可将Informix的数据目录、配置文件打包成压缩文件,适合快速备份整个数据库实例(如首次备份或灾难恢复)。
sudo tar -czvf /backup/informix/full_backup_$(date +%F).tar.gz /opt/IBM/informix/data /opt/IBM/informix/etc/onconfig.*
参数说明:-c(创建归档)、-z(gzip压缩)、-v(显示进度)、-f(指定输出文件)。sudo tar -xzvf /backup/informix/full_backup_$(date +%F).tar.gz -C /
参数说明:-x(解压)、-C(指定解压目录)。sudo systemctl stop informix),避免数据不一致;恢复后需重新启动服务。通过Debian的cron定时任务,定期执行备份脚本(如每日0级备份+每周增量备份),确保备份的及时性。
/opt/informix/scripts/auto_backup.sh):#!/bin/bash
BACKUP_DIR="/backup/informix"
DATE=$(date +%Y%m%d)
LOG_FILE="$BACKUP_DIR/backup_$(date +%F).log"
# 执行0级备份
echo "[$(date)] Starting 0-level backup..." >> "$LOG_FILE"
sudo -u informix ontape -s -L 0 -d database_name -o "$BACKUP_DIR/dbname_$(date +%F).bak" >> "$LOG_FILE" 2>&1
if [ $? -eq 0 ]; then
echo "[$(date)] 0-level backup completed successfully." >> "$LOG_FILE"
else
echo "[$(date)] 0-level backup failed!" >> "$LOG_FILE"
fi
# 删除30天前的备份
find "$BACKUP_DIR" -name "dbname_*.bak" -type f -mtime +30 -exec rm -rf {} \; >> "$LOG_FILE" 2>&1
sudo crontab -e
添加以下内容:0 2 * * * /opt/informix/scripts/auto_backup.sh
chmod +x /opt/informix/scripts/auto_backup.sh);定期检查日志文件(/backup/informix/backup_*.log),确认备份是否成功。onconfig文件副本(如onconfig.bak),以便在恢复0级备份时需要修改日志模式。