ubuntu informix如何进行备份恢复
Ubuntu 上 Informix 备份与恢复实操指南
一 常用方法与适用场景
- ontape:Informix 原生工具,支持 0级(全备)/1级(增量)/2级(差异) 备份,可联机执行,适合中小规模或快速恢复场景。
- onbar:企业级并行备份,支持大规模与更高并发,适合对 RTO/RPO 要求更高的环境。
- dbexport/dbimport:以 ASCII 导出/导入数据库对象与数据,便于迁移、编辑或跨平台,但为脱机方式。
- onunload/onload:以页为单位二进制卸出/装入,效率高于 dbexport,适合大表级备份与恢复。
- 物理打包(tar):对 $INFORMIXDIR(数据、配置等)做文件系统级快照,需停库,适合整机迁移/快速回滚。
- 逻辑日志管理:配合 ontape 的 -a/-c 实现已用日志备份与连续归档,保障可恢复到故障前的一致性点。
二 备份操作示例
-
使用 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建议:脚本加可执行权限,日志集中审计;定期校验备份可用性与恢复演练。
-
关键注意事项
- 恢复前确保 INFORMIXSERVER/INFORMIXDIR 等环境变量正确,实例处于 offline 状态(物理恢复/导入场景)。
- 使用 ontape 时,务必配置并验证 逻辑日志归档(如 -a/-c),避免日志满导致实例挂起。
- 物理恢复(tar)与 onunload/onload 均为脱机方式,需在维护窗口执行;跨版本迁移优先用 dbexport/dbimport。
- 定期做 恢复演练 与 备份完整性校验,并保留多份异地副本(如本地盘 + 远端存储)。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: ubuntu informix如何进行备份恢复
本文地址: https://pptw.com/jishu/749327.html
