Informix是一个关系数据库管理系统,可用于开发功能强大的应用程序,它可在多个平台上运行。Informix数据库动态服务器(Informix Dynamic Server简称IDS)是Informix数据库技术产品的核心,具有可伸缩性、可扩展性、易管理性和高效运行的特点。由于Informix多用于管理大型应用程序,因此其数据的备份与恢复是数据库管理员的重要工作,因此有必要掌握Infomix动态服务器的几种常用的传统数据备份与恢复方法。对于Informix数据库,在线数据流备份和其它数据库一样具有最高的效率和实用性,建议对于商用Informix数据库采用在线数据流的备份模式。而其它On-Bar、ontape、dbexport、onunload工具作为常用的备份维护工具,可以作为补充备份方式存在。
下面谈谈On-Bar、ontape、dbexport/dbimport、onunload/onload这几对备份恢复工具。
一、使用ON-Bar工具进行数据备份和恢复
 1.ON-Bar工具简介及其功能
 ON-Bar工具通过使用存储管理器跟踪备份和存储介质,从而备份并恢复存储空间和逻辑文件。它的功能如下所示:
 1)支持选择具体的存储空间进行备份或恢复
 2)支持备份到具体的时间点
 3)支持执行单独的物理和逻辑恢复
 4)支持使用多个磁带机进行备份和恢复
 5)支持导入的恢复
 6)支持外部备份与恢复
2.执行ON-Bar备份数据的语法
 备注:[]内容为可选项,<>为必选项
 1)onbar_d -b [-p] [-L <level>] [-w | -f <filename> | <spaces>] [-O] [-cf yes | no | only]
 -b:备份
 -p:物理备份(只备份存储空间,而不备份逻辑日志)
 -L:备份级别,可选0、1、2,默认为0级备份
 -w:整个系统备份
 -f:包含一系列数据库空间的完整文件名
 -O:覆盖错误检查
 space:指定需要备数据库空间
 -cf:备份重要的文件
 2)onbar_d -b -F:执行伪备份
 3)onbar_d -b -l [-c | -C | -s] [-O]
 -l:完整逻辑日志文件备份
 -c:备份当前的逻辑日志文件
 -C:执行连续逻辑日志备份
 -s:抢救日志
 4)onbar_d -v [-w] [-p] [-t <time>] [-f <filename> | <spaces>]
 -v:使用archecker实用程序验证备份是否可用
 -w:验证整个系统备份
 -p:验证物理备份
 -f:验证在文件filename中列出的备份存储空间
 -t:执行时间点验证
3.执行On-Bar恢复数据的语法
 1)onbar_d -r [-e] [-O] [-f <filename> | <spaces>]
 2)onbar_d -r [-e] [-t “<time>” | -n <log>] [-O]
 3)onbar_d -r -p [-e] [-t “<time>”] [-O] [-f <filename> | <spaces>]
 4)onbar_d -r -l [-C | -X | -t “<time>” | -n <log>]
 5)onbar_d -r -w [-e] [[-p] [ -t “<time>”] | -n <log>] [-O]
 6)onbar_d -RESTART
 7)onbar_d -r [-e] -rename -f <filename> |  {-rename -p <old_path> -o <old_offset> -n <new_path> -o <new_offset>…} [-w] [-p] [-t “<time>” | -n <log>] [-f <filename> | <spaces>]
 -r:数据恢复选项
 -C:开始连续日志恢复
 -e:外部导入恢复
 -f:指定一个文件,文件中包含要恢复的一系列存储空间
 -l:执行逻辑日志恢复
 -n:恢复指定的逻辑日志
 -O:覆盖错误检查
 -p:执行物理恢复
 -t:恢复到指定的时间点
 -w:恢复整个数据库系统
 -X:终止连续逻辑日志恢复并将数据库服务器设置为静默状态
4.使用On-Bar工具进行数据备份需要注意的问题
 1)使用ON-Bar工具时,需要配置存储管理器,如ISM、TSM或者其他第三方的存储管理器,如何配置存储管理器需要根据具体使用的存储管理器而定,可以参考IBM的官方文档Informix备份与恢复指南,在这里不再讨论。
 2)On-Bar工具不支持从云存储进行备份或恢复,如果有这方面的需求,建议选择ontape工具。
 3)用ISM作为存储管理器的On-Bar工具不支持其他主机上的远程备份设备。
二、使用ontape工具进行数据备份和恢复
 1.ontape工具简介及其功能
 ontape工具可以记录、备份与恢复数据,能够更改数据库的日志记录状态,不需要使用存储管理器,但是在一般情况下,需要借助数据库配置文件中ONCONGIF.InstanceName文件中的六个参数:
 TAPEDEV:用于存储空间备份的目录文件系统或者磁带设备的绝对路径名称,指定ontape在归档过程中写入存储空间数据的目标位置,以及ontape在恢复过程中读取数据的源位置
 TAPEBLK:用于存储空间备份的磁带的块大小(KB)
 TAPESIZE:用于存储空间备份的磁带的大小(0-2097151KB)
 LTAPEDEV:逻辑日志磁带设备或文件系统目录
 LTAPEBLK:用于逻辑日志备份的磁带的块大小(KB)
 LTAPESIZE:用于逻辑日志备份的磁带的大小(0-2097151KB)
 主要功能如下:
 1)Informix数据库备份(数据库实例级别的备份,不支持选择备份指定存储空间)
 2)Informix数据库恢复(支持选择恢复指定存储空间)
 3)备份和恢复逻辑日志
 4)更改数据库的日志记录方式
2.执行ontape备份数据的语法
 备注:[]内容为可选项,<>为必选项
 1)ontape -a [-d]
 2)ontape -c
 3)ontape -l [-C | -X] [-d]
 4)ontape -S [-d]
 5)ontape -s [[-L archive_level][-F]] [-A database_list] [-B database_list]
 [-N database_list] [-U database_list] [-t tape_device_path [-v]] [-d]  }
-s:创建备份
 -L:备份级别,可选0、1、2
 -F: 执行伪备份
 -A:将指定数据库的状态更改为符合AISI标准的日志记录
 -B:将指定数据库的状态更改为缓冲日志记录
 -d:指示执行ontape,同时没有交互提示信息
 -N:指示ontape终止指定数据库的日志记录
 -t:指示ontape为当前备份或恢复使用其他磁带设备,该参数将覆盖配置文件中TAPEDEV的值
 -t STDIO选项指示ontape工具备份到标准输出或者从标准输入复原
 -U:将指定数据库的状态更改为无缓冲日志记录
 -v:在备份到标准输出时向stderr写入参考信息
示例:ontape -a -d:在非交互式环境下备份所有的数据库日志
 ontape -s -d -L 0:在非交互式环境下对数据库执行0级备份
 ontape -s -d -L 0 -t C:\informixdk:在非交互式环境下对数据库执行0级备份,备份文件存储在C:\informixdb下,
 备注:用ontape备份生成的备份文件名为:hostname_servernumber_Ln,日志文件名为:hostname_servernumber_Lognnnnnnnnnn,可以通过设置环境变量IFX_ONTAPE_FILE_PREFIX来覆盖永久文件名的前缀部分(hostname_servernumber)
3.执行ontape恢复数据的语法
 1)ontape -p [-e] [-rename {-f <filename>
 -p <old path> -o <old offset> -n <new path> -o <new offset>…}]
 [-t tape_device_path [-v]] [-d]
 2)ontape  -l [-C | -X] [-d]
 3)ontape -S [-d]
 4)ontape  -r [-rename {-f <filename>
 -p <old path> -o <old offset> -n <new path> -o <new offset>…}]
 [-D DBspace_list] [-t tape_device_path [-v]] [-d]
-l:逻辑复原选项
 -r:对整个数据库服务器数据执行完全物理复原和逻辑复原
 -C:从当前逻辑日志磁带中复原日志,同时不发送安装磁带的提示
 -e:执行外部复原
 -f:指定一个文件,文件中包含要重命名的块的名称及其偏移量
 -p:物理复原选项
 -p:指定要重命名的块及其新位置
 -D:恢复选定的存储空间
 -rename:在复原期间重命名存储空间
 -S:执行逻辑日志回收
 -X:使服务器停顿在逻辑复原暂挂状态
 -v:从标准输入复原期间向stderr写入参考信息
 示例:ontape -p -d -t c:\informixbk
4.使用ontape工具进行数据备份需要注意的问题
 1)在执行ontape备份前要对Onconfig文件中的TAPEDEV、TAPEBLK、TAPESIZE、LTAPEDEV、LTAPEBLK、LTAPESIZE参数进行正确的设置。
 2)为了缩短数据恢复时间,应以进行0级为主,尽量减少1级和2级备份。对银行等重要部门数据,应每天进行0级备份。
 3)如果需要将ontape备份的数据恢复到另一台服务器上时,要求两台服务器机型、操作系统、Onconfig配置文件及非临时分配的Dbspace磁盘空间数量和大小必须一致,否则数据不能正常恢复。
 4)必须保证有足够可用的逻辑日志文件。如果剩余的逻辑日志空间小于单个逻辑日志的50%,Informix-online将拒绝执行备份操作。必须先备份已使用过的逻辑日志,然后才能进行数据备份。
 5)保留Onconfig文件副本。在进行0级备份后,应备份Onconfig文件,因为在恢复0级备份时需要读Onconfig文件信息,如果online配置被修改,数据恢复将失败,如果恢复此0级备份,必须恢复当时的配置。
 6)备份可以在online联机或静止方式下进行,在备份过程中不能改变online运行方式,否则备份会被中断。
 7)不要使用后台方式执行备份命令(UNIX下的&&),因为备份采用交互方式进行。
三、使用dbexport/dbimport工具进行数据备份和恢复
 1.dbexport和dbimport工具简介
 dbexport工具以ASCII码格式将数据写到文件或备份介质上(如磁带)。dbexport卸出的文件包括数据库模式文件和数据文件。
 dbimport工具将以dbexport工具卸出来的数据库导入到新的数据库实例或原数据库实例中,导入时会创建数据库,所以必须保证目标数据库实例中不存在与要导入数据库同名的数据库,否则导入失败。
2.dbexport 命令语法
 dbexport <database> [-X] [-c] [-q] [-d] [-ss [-si]]
 [{ -o <dir> | -t <tapedev> -b <blksz> -s <tapesz> [-f <sql-command-file>] }] [-nw]
 [-no-data-tables[=table name{,table name}]]
 [-no-data-tables-accessmethods[=access method name{,access method name}]]
database:指定备份的数据库名称
 -X:十六进制的数据
 -c:完成导出数据库,除非出现致命错误
 -q:在标准输出设备上不显示错误信息、警告和所生成的SQL数据定义语句。
 -d:仅输出blob描述符,不输出blob数据。
 -ss:在模式文件中输出特定于服务器的用于创建数据库和表的信息,比如:初始的extent和附加的extent的大小、上锁方式、表所驻留的dbspace等信息。
 -o:指定数据输出文件所在的磁盘目录。
 -t:指定数据输出文件的备份介质名称。
 -b:指定备份介质块大小。
 -s:指定备份介质的最大存储量。
 -f:用于指定存储在备份介质上的模式文件名。
默认情况下: -no-data-tables=tsinstancetable
 -no-data-tables-accessmethods=ts_rtl_vtam,ts_vtam
 示例:dbexport eisoodb -c -o c:\informixbk
3.dbimport 命令语法
 dbimport <database> [-X] [-c] [-q] [-d <dbspace>]
 [-l [{ buffered }] [-ansi]] [-ci]
 [{ -i <dir> | -t <tapedev> [ -b <blksz> -s <tapesz> ] [-f <script-file>] }]
-d:指定导入数据库的存储空间,默认为根数据库空间
 -l:指定导入数据库的日志记录方式
 -i:数据库模式文件和数据文件所在目录的上级目录
 (dbexport工具会在-o参数指定的目录下新建database.exp目录存储数据库模式文件和数据文件,dbimport需要的是database.exp所在的目录)
 其他同名参数参考dbexport。
 示例:dbimport eisoodb -c -l buffered -i c:\informixbk
4.使用dbexport/dbimport需要注意的问题
 1)执行dbexport命令必须是Informix用户或具有DBA访问权限的用户;
 2)用dbexport备份的数据必须用dbimport命令恢复;
 3)用户可以通过编辑模式文件来改变dbimport生成的数据库,如改变数据库名称或相关的表信息;
 4)dbexport以独占方式(exclusive mode)占用数据库,备份期间其他用户不能对数据库进行查询和修改及插入操作;
 5)模式文件不保留数据库的日志文件,用户使用dbimport命令建立数据库时必须为新建数据库选择一种日志方式(ANSI、buffered、nobuffered类型);
 6)用户可以使用dbexport/dbimport命令,将Informix-online和Informix-SE下的数据进行相互转换;也可以将数据在Informix-online的不同版本之间转换,这种转换对数据库服务器的结构和Informix的配置没有特别要求;
 7)使用dbexport/dbimport命令备份/恢复数据,可以起到消除数据分配空间碎块的作用,提高数据库整体运行效率。
 8)用-o选项指定的目录必须存在且当前用户具有写权限
 四、使用onunload/onload工具进行数据备份和恢复
1.onunload和onload工具简介
 onunload工具以页为单位,使用二进制形式卸出数据,备份效率比dbexport高。
 onload工具将onunload卸出的数据装载到指定数据库中
2.onunload命令的语法
 onunload [-l] [-t <tape device>] [-b <block size>] [-s <tape size>]
 <database>[:[<owner>.]<table>]
 以上参数代表的意义如下:
 -l:指示onunload分别从配置参数TAPEDEV、TAPEBLK和TAPESIZE中读入磁带设备、块大小和备份设备容量值
 -t:指定备份设备名
 -b:指定备份设备的块大小
 -s:指定备份设备的存储容量
 database:指定要备份的数据库
 owner:指定表的属主
 table:指定要卸出的表
3.onload命令的语法
 onload [-l] [-t <tape device>] [-b <block size>] [-s <tape size>]
 [-d <DBspace>] <database>[:[<owner>.]<table>]
 [{-i <old index name> <new index name>}]
 [{-fd old-DBspace-name new-DBspace-name}]
 [{-fi index-name old-DBspace-name new-DBspace-name}]
 [{-c <old constraint name> <new constraint name>}]
 -d:指定恢复到目标存储空间
 -i:重命名表的索引
 -fd:重命名存储空间
 -fi:添加表索引,并重命名存储空间
 -c:重命名约束条件
 其他同名参数参考onunload
4.使用onunload/onload需要注意的问题
 1)onunload备份的数据必须用onload命令进行恢复;
 2)onunload/onload不能实现不同版本的online之间的数据转移;
 3)onunload/onload是以磁盘页大小为单位存储的二进制数据,卸出和接受数据的计算机必须具有相同的磁盘页大小;
 4)只能将onunload卸出的数据装入online管理的数据库或表 ;
 5)用户必须具有DBA访问权限,才能执行onunload/onload命令;
 6)onunload不保留初始表上定义的访问特权;
 7)onunload不保留初始表上定义的同义词。
 总结:以上四种数据备份恢复方式各有特点,On-Bar无疑是其中功能最强大的工具,但同时也是配置、使用最为复杂的;ontape工具对数据库参数配置前后一致性要求较高,但数据备份和恢复操作简单,备份和恢复速度较快;用dbexport所做的备份可以实现不同版本、不同Informix产品之间的数据转换,数据转移灵活方便;onunload备份以页为单位、以二进制形式进行备份,效率较高,数据恢复时只要计算机磁盘页大小一致即可。为保证数据能够安全恢复,数据备份至少应该选择两种方式。通过对Informix数据库四种常用备份方法分析比较与归纳,用户可以根据实际情况选择满足自己要求的备份恢复方式,制定合适的备份方案,来确保数据安全。
 
 



