Ubuntu 上 Informix 备份与恢复实操指南
一 常用方法与适用场景
二 备份操作示例
使用 ontape 做分级备份(建议每日/每周策略:每日 1 级,每周 0 级)
# 0级全备(示例路径,按实际环境调整)
sudo -u informix ontape -s -L 0 -t STDIO > /backup/inf/ontape_L0_$(date +%F).bak
# 1级增量(基于上一次备份后变更的数据)
sudo -u informix ontape -s -L 1 -t STDIO > /backup/inf/ontape_L1_$(date +%F).bak
# 2级差异(基于上一次1级后变更的数据)
sudo -u informix ontape -s -L 2 -t STDIO > /backup/inf/ontape_L2_$(date +%F).bak
# 自动/连续归档已用逻辑日志(避免日志满)
sudo -u informix ontape -a
# 或启用连续日志备份守护
sudo -u informix ontape -c
提示:如使用磁带设备,将 -t STDIO 替换为 -t /dev/st0 等实际设备;确保 TAPEDEV/TAPEBLK/TAPESIZE 等参数正确。
使用 dbexport/dbimport 做可移植备份(脱机)
# 导出(建议在静默/维护窗口)
sudo -u informix dbexport -d mydb -ss -c -f /backup/inf/mydb.exp
# 导入(目标库可不存在,会按导出内容重建)
sudo -u informix dbimport -d mydb -c -f /backup/inf/mydb.exp
说明:导出为可读文本,便于审计与迁移;导入时按对象定义与数据重建数据库。
使用 onunload/onload 做大表高效备份(脱机)
# 二进制卸出单表
sudo -u informix onunload -l /backup/inf/mytab.unl mydb:mytab
# 装入恢复
sudo -u informix onload -d mydb /backup/inf/mytab.unl
说明:适合大表快速备份/恢复,文件为页级二进制,必须与 onload 配对使用。
使用 tar 做物理备份(需停库)
# 停库
sudo systemctl stop informix # 或 onmode -ky
# 打包数据目录与关键配置
sudo tar -czvf /backup/inf/inf_phys_$(date +%F).tar.gz \
$INFORMIXDIR/etc $INFORMIXDIR/data /opt/IBM/informix/etc/onconfig.*
# 启动
sudo systemctl start informix # 或 oninit
说明:简单快速,适合同版本同路径恢复或整机迁移;跨版本/跨路径需谨慎评估。
三 恢复操作示例
使用 ontape 恢复(按备份级别回放)
# 1) 零级恢复(基础)
sudo -u informix ontape -r
# 2) 1级/2级增量回放(按备份顺序)
sudo -u informix ontape -r
# 3) 恢复到指定时间点(PITR):先恢复到最近0/1/2级,再回放逻辑日志
sudo -u informix ontape -r
# 在提示中按已归档逻辑日志继续回放,直至目标时间点
要点:恢复顺序必须为 0级 → 1级/2级 → 逻辑日志;如启用连续日志归档,可回放到故障前最近一致性点。
使用 dbexport/dbimport 恢复(重建数据库)
# 目标库不存在时直接导入
sudo -u informix dbimport -d mydb -c -f /backup/inf/mydb.exp
# 若库已存在且需覆盖,先 dropdb 再导入(谨慎操作)
sudo -u informix dbaccess - -
> drop database mydb;
> exit
sudo -u informix dbimport -d mydb -c -f /backup/inf/mydb.exp
说明:适合迁移、结构变更或跨平台恢复;导入过程会重建对象与数据。
使用 onunload/onload 恢复单表
sudo -u informix onload -d mydb /backup/inf/mytab.unl
说明:与 onunload 成对使用,恢复效率与一致性较好。
使用 tar 物理恢复(需停库)
# 停库
sudo systemctl stop informix
# 解压覆盖(务必先备份当前环境与配置)
sudo tar -xzvf /backup/inf/inf_phys_2025-09-01.tar.gz -C /
# 启动
sudo systemctl start informix
说明:适合同版本、同目录结构的快速回滚;跨版本/跨路径可能需调整 onconfig 与路径映射。
四 自动化与运维要点
定时任务示例(每日 0 级 + 每周 1 级,保留 30 天)
# /opt/informix/scripts/backup.sh
#!/usr/bin/env bash
BACKUP_DIR="/backup/inf"
DATE=$(date +%F)
LOG="$BACKUP_DIR/backup_$DATE.log"
echo "[$(date)] Start 0-level backup" >> "$LOG"
sudo -u informix ontape -s -L 0 -t STDIO >> "$LOG" 2>&1 || { echo "0-level failed"; exit 1; }
# 每周一 1级(示例:周日=0)
if [ $(date +%u) -eq 1 ]; then
echo "[$(date)] Start 1-level backup" >> "$LOG"
sudo -u informix ontape -s -L 1 -t STDIO >> "$LOG" 2>&1 || echo "1-level failed"
fi
# 清理30天前备份
find "$BACKUP_DIR" -name "*.bak" -mtime +30 -delete >> "$LOG" 2>&1
# crontab -e
0 2 * * * /opt/informix/scripts/backup.sh
建议:脚本加可执行权限,日志集中审计;定期校验备份可用性与恢复演练。
关键注意事项