onmode -ky命令将Informix数据库切换至离线状态(Quiescent),确保数据不会被修改,避免恢复过程中出现冲突。ontape的磁带文件、dbexport的导出目录、onbar的备份镜像)是否存在且未损坏。可通过ontape -t(测试磁带备份)、dbverify(验证导出文件)等命令确认备份有效性。INFORMIXDIR(Informix安装目录)、INFORMIXSERVER(数据库服务器实例名)、TAPEDEV(备份设备路径)等环境变量设置正确,避免恢复时因路径错误导致失败。Informix提供多种恢复工具,适用于不同场景:
.unl),可跨平台、跨版本恢复,适合小规模数据库或需要迁移的场景。ontape -r # 默认从默认备份设备(如磁带机或配置的目录)恢复
若备份存储在指定目录(如/databak/backup/data),需添加-D参数指定设备:ontape -r -D /databak/backup/data
ontape -r -L 1 # 恢复1级增量备份(需提前恢复0级)
ontape -r -L 2 # 恢复2级增量备份(需提前恢复0级和1级)
dbexport导出的目录(如test_db_export),执行以下命令恢复到指定数据库空间(如workdbs):dbimport test_db -d workdbs -l buffered # -l buffered表示使用缓冲日志
unload命令导出该表(如unload -d test_db -t target_table -o /tmp/target_table.unl),再使用load命令导入:load from /tmp/target_table.unl insert into test_db:target_table;
onbar创建的备份:onbar -r # 恢复所有备份数据
onbar -e # 外部恢复(如恢复逻辑日志)
onbar恢复到指定时间点(如2025-10-25 14:30:00)。需确保备份时开启了逻辑日志归档,命令示例:onbar -r -t "2025-10-25 14:30:00"
若数据文件(如*.dat、*.idx)或日志文件被误删除,可通过以下步骤恢复:
umount /dev/sdXY # 替换为实际分区(如/dev/sda1)
sudo apt-get install extundelete # Debian/Ubuntu
sudo yum install extundelete # CentOS/RHEL
sudo extundelete /dev/sdXY --restore-all # 恢复分区下所有删除文件
sudo extundelete /dev/sdXY --restore-file /path/to/deleted/file # 恢复特定文件
mount /dev/sdXY /mnt # 挂载回原路径
ls -l /mnt/recovered_files # 查看恢复的文件
dbaccess test_db),检查关键表的数据量、记录内容是否符合预期(如select count(*) from target_table;)。onstat -命令查看数据库状态,确保无错误(如Database is up and running)。onconfig(Informix配置文件)、backup脚本、ism配置(若使用ISM),以便恢复时快速参考。onmode -ky停止服务。informix用户(或对应数据库用户)执行,避免权限不足导致失败。