一、恢复的前提
用ontape备份的数据恢复到另一台服务器上时,环境如下:
1.两台服务器机型一样(HPL2000系列)
2.操作系统一样(HP-UXB.11.00)、数据库版本一样(IDS7.31.FC6)、
3.非临时分配的Dbspace磁盘空间数量和大小必须一致(即你的各个dbspace对应的chunk大小一样,所对应的符号联接所在目录的位置最好也保证一样)
4.Onconfig配置文件(最后提出来!它并不要求完全一样)
就以我恢复的机器来说,它和做0级备份的生产机虽然都是hp小型机,但cpu个数,内存,硬盘个数都不一样,故onconfig相应的参数例如NETTYPE、NUMCPUVPS都不一样,但我保证了如下参数在onconfig中的一致:
ROOTNAME
ROOTPATH
ROOTOFFSET
ROOTSIZE
MIRROR
MIRRORPATH
MIRROROFFSET
TAPEDEV
TAPEBLK
TAPESIZE
LTAPEDEV
LTAPEBLK
LTAPESIZE
LOGSMAX
其它的都没变化了。
注意的问题: 在恢复过程中,如果恢复失败,则可能恢复机上的数据库oninit起不来,则只好用oninit-i来初始化了。
二、详细恢复过程(只做0级恢复)
1.切换成informix用户,(这一步根据实际情况选做)
ps-ef|grepisql,如有此进程,kill掉
2.用ipcs查看还有无其它数据库用户占用的共享内存
确认后以上后(如上述共享内存还存在,则可能会在ontape-r过程中会报“共享内存初始化失败”,而导致恢复失败)
3.onmode-ky下掉数据库
hp9000:/informix/etc>ontape-r
Pleasemounttape1on/dev/rmt/0mandpressReturntocontinue...
ArchiveTapeInformation
Tapetype:ArchiveBackupTape
Onlineversion:InformixDynamicServerVersion7.31.FC6
Archivedate:WedDec316:50:542003
Userid:hcb
Terminalid:/dev/pts/10
Archivelevel:0
Tapedevice:/dev/rmt/0m
Tapeblocksize(ink):4096
Tapesize(ink):25165824
Tapenumberinseries:1
这里显示的是备份的磁盘配置(可验证是否生成了正确的设备和连接)。包括dbspace和chunk等情况。省略了。。。
1.Continuerestore?(y/n)y
2.Doyouwanttobackupthelogs?(y/n)n
进入FastRecovery状态(onstat-观察)
/*此时间开始进行恢复,时间较长,且没有完成百分比提示,请耐心等待*/
3.Restorealevel1archive(y/n)n
此步应回答为n,不需要进行1级恢复
4.Doyouwanttorestorelogtapes?(y/n)n
此步应回答为n,不需要进行日志恢复
Programover./*恢复完成*/
/home/informix/bin/onmode-sy/*数据库自动进入quiescent模式*/
/*此期间会存在一个fastrecovery模式,直至进入quiescent模式。可用onstat-、onstat-d监测数据库的情况。*/
5.如onstat-显示已经进入quiescent模式,则手工执行:
onmode-m/*使数据库online*/
6.完成。(整个过程为3小时20分钟,24G磁带)
三、对恢复期间的监视
在恢复DBSPACE期间,由于online.log不更新(我也不知道为什么,是有问题?反正tail-fonline.log没有变化),
所以监视恢复状况我就采用onstat来分析
hp9000:/informix>onstat-d(可观察基本的dbspace情况)
InformixDynamicServerVersion7.31.FC6--FastRecovery(CKPTREQ)--Up00:59:30--316616Kbytes
Blocked:CKPT
hp9000:/informix>onstat-u(查看磁带读写速度)
InformixDynamicServerVersion7.31.FC6--FastRecovery(CKPTREQ)--Up01:30:48--316616Kbytes
Blocked:CKPT
Userthreads
addressflagssessiduserttywaittoutlocksnreadsnwrites
c000000011053028---P--D1informix-000113
c0000000110536f0---P--F0informix-00000
c000000011053db8---P--F0informix-00000
c000000011054480---P--F0informix-00000
c000000011054b48Y--P--M13informixtoc0000000114898e00000
c000000011055210---P---14informix-00000
c0000000110558d8---P--B15informix-00000
c000000011055fa0---P--D16informix-00000
c000000011056668-----R-13informixto00054543006
9active,128total,9maximumconcurrent
5046814
5857822
6066718MonDec1522:21:56EAT2003
6498846MonDec1522:30:15EAT2003
7029278MonDec1522:40:37EAT2003
8221214MonDec1523:02:08EAT2003
10506782MonDec1523:44:14EAT2003
主要看nwrites那一列的数据变化,应该是按时间不断增大
hp9000:/informix>sar-d220
查看磁盘读写状态,通过逻辑卷管理的硬盘,例如对c0t9d0(我的机器正是将dbspace对应的裸设备建在此硬盘组成的逻辑卷上) 的读写可监视恢复是否正常进行。
四、恢复成功整个过程的online.log
20:22:54Dynamicallyallocatednewvirtualsharedmemorysegment(size8192KB)
20:22:54Dynamicallyallocatednewvirtualsharedmemorysegment(size8192KB)
20:22:54PhysicalRestoreofrootdbs,hcbdbs,logdbsstarted.
20:23:03CheckpointCompleted:durationwas0seconds.
/*在恢复DBSPACE过程中无日志!?*/
23:49:40CheckpointCompleted:durationwas0seconds.
23:49:41CheckpointCompleted:durationwas0seconds.
23:49:41PhysicalRestoreofrootdbs,hcbdbs,logdbsCompleted.
23:49:41CheckpointCompleted:durationwas0seconds.
23:52:13PhysicalRecoveryStarted.
23:52:13PhysicalRecoveryComplete:0PagesRestored.
23:52:13LogicalRecoveryStarted.
23:52:16LogicalRecoveryComplete.
0Committed,0RolledBack,0Open,0BadLocks
23:52:16BringingsystemtoQuiescentModewithnoLogicalRestore.
23:52:17QuiescentMode
23:52:17CheckpointCompleted:durationwas0seconds.
23:53:22On-LineMode
23:53:22AffinitiedVP3tophysproc1
23:53:22AffinitiedVP1tophysproc0
23:57:26CheckpointCompleted:durationwas1seconds.
五、解决恢复过程中可能遇到的问题
恢复过程失败,online.log里提示“共享内存初始话失败”可能恢复前虽然数据库已下掉,但共享内存还有相关未清除掉的东东,ipcs看看,然后杀掉。
1.提示原dbspace和chunk和恢复机上的不一致,
这时要根据备份带上给的dbspace情况新建chunk对应的裸设备和符号连接
2.恢复过程出现以下错误:
Continuerestore?(y/n)y
Doyouwanttobackupthelogs?(y/n)n
Unabletoopeninputfile's'
Unabletoopeninputfile'c'
Physicalrestorefailed-buc_fe.c:ArchiveAPIprocessingfailedatline703formsgtype
Programover.
处理:请先检查dbspace对应裸设备文件及符号连接和所在目录的权限和属性,保证正确。如没有问题, Dothefollowingcommandsasroot:
#vi/etc/privgroupandaddthefollowingline
informixMLOCK
#getprivgrp
globalprivileges:CHOWN
#setprivgrp-f/etc/privgroup
#getprivgrp
globalprivileges:CHOWN
informix:MLOCK
然后再做恢复
六、常用到的命令
oninit
oninit-iy(初始化数据库,删除所有dbspace和chunk)
oninit-s(脱机-->静态)
onmode-kyoffline
onmode-sgracefulshutdown-->quiescent(联机到静态,让用户处理完成)
onmode-uimmediateshutdown-->quiescent(联机到静态,所有用户立即终止)
onmode-mquiescent--->online
onstat-查看服务器状态
onstat-d查看dbspace和chunk情况
onstat-l查看逻辑日志
ipcs查看共享内存情况
ipcrm删除某个共享内存
ipcrm-mid
ipcrm-sid
有关逻辑日志的操作
以informix用户登录,
$onmode-uy(由Online切换到Quiescent状态,所有用户立即中止)
onmode-m(切换到Online)
$onparams-a-dlogdbs-s100000(在logdbs中增加逻辑日志)
其中logdbs为dbspaces名,-s100000表示增加了100M空间。
再连续执行4遍上述命令,这样新的逻辑日志空间总共为500M,可以用
onstat-l查看逻辑日志情况,接下来就要删除前面3个旧逻辑日志,
删除前做一个0级备份
#ontape-s-L0
执行该命令做0级备份,建议:如果允许可以每天在业务系统结束工作
后做一次0级备份,做完备份后管理好备份磁带,做好标记。
$onparams-d-llogid
logid为逻辑日志id号,可以用onstat-l查看,然后就可根据id号删
除3个旧逻辑日志。
1.增加一个新的dbspace:(datadbs,15M,偏移为0)
onspaces-c-ddatadbs-p/home/informix/datadbs-o0-s15000
2.在datadbs这一个dbspace中增加一个chunk:(datadbs_chunk1)
onspaces-adatadbs-p/home/informix/datadbs_chunk1-o0-s15000
3.将上述chunk删除
onspaces-ddatadbs-p/home/informix/datadbs_chunk1-o0
4.删除dbspace(仅当要删除的dbspace空间没有数据时才可删除)
onspace-ddatadbs
导出数据库
用dbexport工具将数据卸成文本,并装载到其它服务器上。
(1) 卸载文本的步骤如下:
用informix用户注册
dbexportcleardb-oWORKDIR-ss
当系统提示dbexportcompleted!数据卸载完毕。
其中:
-ss确保数据库的建库信息或建表信息被保留如日志模式、初始extent尺寸、lockmode、表所在dbspace等。
-o指定存放卸载数据的目录数据存放在目录cleardb.exp目录下,其中包含cleardb.sql和形如*.unl的文件,
提示信息存放在dbexport.out文件中。
(2) 装载文本的步骤如下:
用informix用户注册确保数据库处于On_Line状态,服务器上没有同名数据库。
dbimportcleardb-iWORKDIR
当系统dbimportcompleted!提示数据装载完毕。
其中: -i指定从何处装载。
如何在不破坏库本身信息情况下(如行级锁等)将数据库卸载到磁带设备,并装载在其它服务器上?
1) 卸载的步骤如下:
用DBA用户注册
将存放数据的磁带插入磁带机,确认磁带及磁带机完好可用。
dbexportcleardb-t/dev/rmt/0m-b512k-s2048000k-ss
当系统提示dbexportcompleted!数据卸载完毕。
其中:
-ss确保数据库的建库信息或建表信息被保留如日志模式,初始extent尺寸,lockmode,表所在dbspace
-t磁带设备/dev/rmt/0m
-s磁带容量2G
-b块大小512KB
提示信息存放在dbexport.out文件中
2) 装载的步骤如下:
用DBA用户注册
将存放卸载数据的磁带放在磁带机上,确认磁带机正常,确认数据库系统处于On_Line状态,服务器上没有同名数据库。
$dbimportcleardb-t/dev/rmt/0m-b512k-s2048000k
当系统dbimportcompleted提示数据装载完毕!提示信息存放在dbimport.out文件中。