Informix在Ubuntu上的备份可通过**ontape/onbar(物理备份)、dbexport(逻辑备份)、tar/rsync(文件级备份)**三类方式实现,以下是详细演练步骤:
ontape是Informix原生物理备份工具,支持**0级(全量)、1级(增量)、2级(累积增量)**备份;onbar是其增强版,支持并行备份和恢复到指定时间点,适用于大规模数据库。
TAPEDEV(备份设备路径,如/dev/st0或目录)、TAPEBLK(块大小,默认64)、TAPESIZE(磁带大小,默认10240MB)等参数已在$INFORMIXDIR/etc/onconfig中正确配置;sudo mkdir -p /backup/informix
sudo chown informix:informix /backup/informix
# 启动ontape备份,指定备份目录和标签
sudo -u informix ontape -s -L 0 -t /backup/informix/full_backup_$(date +%Y%m%d)
-s:表示备份模式;-L 0:零级备份(全量);-t:备份标签(可选,用于标识备份集)。若已配置onbar,需先初始化备份环境(参考Informix官方文档),然后执行:
# 执行全量备份
sudo -u informix onbar -b -c -f /backup/informix/bar_full_$(date +%Y%m%d)
# 执行增量备份(需先完成0级备份)
sudo -u informix onbar -b -c -f /backup/informix/bar_incr_$(date +%Y%m%d)
-b:备份模式;-c:创建备份集。通过cron每天凌晨2点执行备份脚本(如/data/db_backup/auto_back.sh):
# 编辑cron任务
crontab -e
添加以下内容:
0 2 * * * /data/db_backup/auto_back.sh
脚本示例(auto_back.sh):
#!/bin/bash
BACKUP_DIR="/backup/informix"
LOG_FILE="$BACKUP_DIR/backup_$(date +%Y%m%d).log"
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
# 执行ontape零级备份
echo "[$TIMESTAMP] Starting ontape full backup..." >> $LOG_FILE
sudo -u informix ontape -s -L 0 -t "$BACKUP_DIR/full_$TIMESTAMP" >> $LOG_FILE 2>&1
if [ $? -eq 0 ]; then
echo "[$TIMESTAMP] Backup completed successfully." >> $LOG_FILE
# 删除30天前的备份
find "$BACKUP_DIR" -name "full_*" -type f -mtime +30 -exec rm -f {} \;
else
echo "[$TIMESTAMP] Backup failed!" >> $LOG_FILE
fi
赋予执行权限:
chmod +x /data/db_backup/auto_back.sh
dbexport将数据库导出为ASCII文本文件(包含表结构和数据),适合跨平台迁移或小库备份。
# 导出数据库(如mydb),输出到指定目录
dbexport -c "informix@localhost:mydb" -o /backup/informix/mydb_export_$(date +%Y%m%d)
-c:连接字符串(格式:username@hostname:database);-o:输出目录。# 创建空数据库(如mydb_restore)
dbaccess - - <<EOF
CREATE DATABASE mydb_restore WITH BUFFERED LOG;
EOF
# 导入备份数据
dbimport -d mydb_restore -i /backup/informix/mydb_export_$(date +%Y%m%d) -c -l buffered
-i:输入目录;-l buffered:使用缓冲日志模式(提升恢复性能)。适用于备份Informix配置文件和数据目录(需停机,避免数据不一致)。
# 备份数据目录和配置文件
tar -czvf /backup/informix/informix_files_$(date +%Y%m%d).tar.gz \
/opt/IBM/informix/data \
/opt/IBM/informix/etc/onconfig
-z:gzip压缩;-v:显示进度。# 解压到目标目录(需停止Informix服务)
sudo systemctl stop informix
tar -xzvf /backup/informix/informix_files_$(date +%Y%m%d).tar.gz -C /
sudo systemctl start informix
恢复需根据备份类型选择对应工具,以下是常见场景的演练步骤:
sudo systemctl stop informix
ls -lh /backup/informix检查)。# 启动ontape恢复,指定备份标签
sudo -u informix ontape -r -t /backup/informix/full_backup_20250915
-r:恢复模式;-t:备份标签(需与备份时一致)。# 恢复全量备份
sudo -u informix onbar -r -f /backup/informix/bar_full_20250915
# 恢复增量备份(若有)
sudo -u informix onbar -r -f /backup/informix/bar_incr_20250916
-f:指定备份文件路径。恢复完成后启动Informix:
sudo systemctl start informix
若数据库损坏或需迁移,可使用dbimport恢复逻辑备份:
# 创建目标数据库
dbaccess - - <<EOF
CREATE DATABASE mydb_restore WITH BUFFERED LOG;
EOF
# 导入备份数据
dbimport -d mydb_restore -i /backup/informix/mydb_export_20250915 -c -l buffered
恢复后可通过dbaccess mydb_restore验证数据完整性。
若数据目录损坏,可通过备份文件恢复:
# 停止Informix服务
sudo systemctl stop informix
# 解压备份文件
tar -xzvf /backup/informix/informix_files_20250915.tar.gz -C /
# 启动Informix服务
sudo systemctl start informix
ls -lh /backup/informix);find命令自动删除旧备份);通过以上演练,可确保Ubuntu环境下Informix数据库的备份与恢复流程可靠,有效应对数据丢失风险。