Informix IDS ontape重命名恢复数据库的操作咨询
先帮你梳理下当前的环境和准备工作,再针对这类重命名恢复操作的常见问题和注意点做说明:
你的环境与操作准备
- 同一机器部署了两个Informix实例,块文件分别存放在
/dev/online/live(源实例)和/dev/online/test(目标实例),结构基本一致 - 已验证两个实例的ONCONFIG中ROOT参数完全匹配,执行的验证命令:
grep ROOT *v6live *v6test | grep -v ':#'
得到的输出:
onconfig.v6live:ROOTNAME rootdbs
onconfig.v6live:ROOTPATH /dev/online/live/root_dbs
onconfig.v6live:ROOTOFFSET 16
onconfig.v6live:ROOTSIZE 2000000
onconfig.v6test:ROOTNAME rootdbs
onconfig.v6test:ROOTPATH /dev/online/dev/root_dbs
onconfig.v6test:ROOTOFFSET 16
onconfig.v6test:ROOTSIZE 2000000
- 准备执行重命名恢复命令:
ontape -r -rename -f ./rename_chunks.txt
对应的rename_chunks.txt内容(整理为每行一对源/目标chunk的清晰格式):
/dev/online/live/root_dbs 8 /dev/online/dev/root_dbs 8 /dev/online/live/database_dbs 16 /dev/online/dev/database_dbs 16 /dev/online/live/data_dbs 16 /dev/online/dev/data_dbs 16 /dev/online/live/index_dbs 16 /dev/online/dev/index_dbs 16 /dev/online/live/temp_dbs 16 /dev/online/dev/temp_dbs 16 /dev/online/live/temp_dbs 500016 /dev/online/dev/temp_dbs 500016 /dev/online/live/temp_dbs 1000016 /dev/online/dev/temp_dbs 1000016 /dev/online/live/temp_dbs 1500016 /dev/online/dev/temp_dbs 1500016 /dev/online/live/temp_dbs 2000016 /dev/online/dev/temp_dbs 2000016 /dev/online/live/temp_dbs 2500016 /dev/online/dev/temp_dbs 2500016 /dev/online/live/db1_dbs 16 /dev/online/dev/db1_dbs 16 /dev/online/live/db1_dbs 15000008 /dev/online/dev/db1_dbs 15000008
关键注意事项(避免恢复失败)
路径一致性检查:
你提到目标实例的块目录是/dev/online/test,但rename_chunks.txt和onconfig.v6test里用的是/dev/online/dev——这大概率是笔误,一定要确认目标路径真实存在,且informix用户拥有读写权限,否则恢复会直接报错。Chunk文件/设备的前置准备:
- 如果目标是裸设备,必须预先创建并设置正确的属主(informix)和权限(660),大小要至少等于源chunk的使用大小(可以在源实例用
onstat -d查看) - 如果是普通文件,要确保文件已创建(可以用
touch+chown informix:informix设置权限),大小足够
- 如果目标是裸设备,必须预先创建并设置正确的属主(informix)和权限(660),大小要至少等于源chunk的使用大小(可以在源实例用
ONCONFIG的正确指定:
恢复时一定要确保使用的是目标实例的onconfig.v6test,可以通过环境变量指定:export ONCONFIG=onconfig.v6test否则会默认使用系统默认的ONCONFIG文件,导致ROOTPATH等参数不匹配,恢复失败。
rename_chunks.txt格式校验:
每行必须严格遵循[源chunk路径] [源偏移量] [目标chunk路径] [目标偏移量]的格式,你当前的内容格式是正确的,但要确认所有源chunk在备份集中存在,偏移量和源实例中的chunk偏移完全一致(比如temp_dbs的多个偏移对应多个扩展chunk,这个是正常的)。
常见问题与排查思路
如果执行命令时遇到报错,优先查看online.log(Informix的日志文件)找具体错误信息,常见问题包括:
- 权限报错:日志里出现
Permission denied,调整目标路径的属主和权限即可 - Chunk大小不匹配:报错提示
Chunk size mismatch,检查目标chunk的大小是否足够,裸设备的话要重新创建对应大小的设备 - 格式错误:报错
Invalid line in rename file,检查rename_chunks.txt的每行是否都是4个字段,有没有多余空格或换行 - ROOTPATH不匹配:恢复时提示找不到ROOT块,确认ONCONFIG环境变量是否正确指定,
onconfig.v6test里的ROOTPATH是否和rename文件中的目标路径一致
内容的提问来源于stack exchange,提问作者Cats Five

