Informix 11.70 系统管理认证考试 919 准备教程,第 5 部分: Informix 备份和还原

归档 Informix 数据库

在本教程中,您将学习 IBM Informix® 数据库的备份和还原概念和策略,以及管理数据库备份和还原过程的实用程序和命令。此外,本教程还将学习如何监视备份并在必要时判断问题。本教程是 Informix v11.70 系统管理认证考试 919 准备教程系列的第 5 部分。

Sanjit Chakraborty, 顾问软件工程师, IBM

Sanjit Chakraborty 的照片Sanjit Chakraborty 是 IBM Informix 技术支持部 Down System and Diagnostics Team 的成员,该团队负责处理关键客户问题和开发供 Technical Support Organization 使用的支持工具。Sanjit 在信息技术行业的工作时间超过 15 年,担任过各种职务。他是一名 IBM 认证的 IDS 和 DB2 系统管理员,并且是指定的存档主题专家。Sanjit 开发了若干 Informix 特性和 Down System Support 工具。他还是一名作家兼技术审校,其作品包括许多关于各种 Informix 主题的技术文章、教程和培训课程资料。



Elisabeth Bach, 高级支持工程师, IBM China

Elisabeth Bach 的照片Elisabeth Bach 博士自 2001 年就加入了 IBM Informix 技术支持部。在加入 Informix 之前,她担任过培训师和顾问。在 IBM,她专攻数据库引擎研究。她的工作职责包括分析问题(包括再现和代码分析)。



2012 年 8 月 09 日

开始之前

免费下载:IBM® Informix® 11.7 试用版(包括 Ultimate Edition、Developer Edition 和 Innovator-C Edition)
下载更多的 IBM 软件试用版,并加入 IBM 软件下载与技术交流群组,参与在线交流。

了解能从本教程获得哪些知识,以及如何最充分地利用它们。

关于本系列

正在考虑获得 Informix 11.70 版的系统管理认证(考试 919)?如果是,那么您来对地方了。这个 认证准备教程系列 涵盖了您在参加考试前需要理解的所有主题。即使您目前没有获取认证的想法,这一系列教程也是您开始了解 Informix 11.70 中的新功能的不错地方。

关于本教程

在本教程中,您将学习 INformix 备份和恢复概念,以及管理数据库备份和恢复过程的策略、实用程序和命令。本教程中的资料主要覆盖该考试第 5 部分备份和还原 中的目标。

本教程涉及的主题包括:

  • 备份和还原实用程序
  • 备份和还原策略、类型和选项
  • 执行备份和还原过程所需的配置和命令
  • 监视和调试备份和还原过程
  • 数据库恢复操作

目标

完成本教程的学习后,您应该能够:

  • 为数据库服务器备份开发一个归档策略并制定计划
  • 了解备份的类型和执行的时机
  • 配置 OnBar 和 ontape 来执行备份和还原
  • 了解如何监视和检验备份
  • 理解恢复
  • 从归档备份还原数据库服务器
  • 优化快速恢复过程

先决条件

要理解本教程中提供的内容,您必须熟悉:

  • Informix 环境(配置文件和参数,安装和管理)
  • 数据库服务器监视命令(onstat、onmode、oncheck 和 dbschema)
  • Informix 概念和术语(dbspace、数据块、物理日志、逻辑日志和检查点)

系统要求

完成本教程的学习无需 Informix 副本。但是,如果您下载 Informix Innovator-C Edition 的免费试用版(参阅 参考资料)来完成本教程的学习,那么您将会更好地掌握本教程。


Informix 备份和还原概述

随着数据逐渐成为最昂贵的资产,企业无法承担丢失数据的损失。有许多不同的途径可用来确保数据可用性,从配备使用 SDS、HDR 或 RSS 的冗余系统,到可能涉及重复硬件和系统恢复的备份与恢复策略。本教程将解释在灾难降临时 Informix 帮助您计划数据恢复的不同方式。有许多不同的方法,但所有方法都需要数据副本在出现故障时保持可用。

理解备份、还原和恢复工具

Informix 服务器提供了多种保存数据的方法。可以使用 dbexport、HPL 或外部表等工具从逻辑上卸载数据。或者可以使用 ON-Bar 和 ontape 备份和还原工具来卸载数据。本教程主要介绍 Informix 备份和还原工具。备份和还原工具仅适用于 Informix 文件(存储空间和数据块),这些工具不会访问存储在其他类型的文件中的数据。

备份

Informix 备份是数据库服务器维护的一个或多个存储空间和逻辑日志的副本,数据会保存为 Informix 页面格式。您可能需要多组备份数据才能让数据库服务器重新上线。

还原

Informix 还原从备份存储空间和逻辑日志文件重新创建数据库服务器。还原操作会将数据从备份介质复制回磁盘,通过应用逻辑日志备份中的事务将存储空间设置为一致的状态。

Informix 中提供的恢复工具和实用程序

Informix 拥有两个主要的备份和还原工具:ON-Bar 和 ontape。其他 Informix 备份和恢复工具包括 archecker 和 Informix Storage Manager (ISM),archecker 可用于检查归档或从归档还原表,Informix Storage Manager (ISM) 是一个简单的存储管理器。因为 ON-Bar 包含一个存储管理器,所以可确保客户能够开箱即用地使用 ON-Bar,无需拥有一个独立的存储管理器。

使用 ON-Bar 和 ontape 工具

ON-Bar 和 ontape 都执行存储空间和逻辑日志的备份和还原。在 Informix 服务器层面上,两个工具的工作原理相同:查找必须保存或还原的数据的内部逻辑相同,而且两个工具都在实例内启动 ontape 和 arcbackup 线程。两个工具之间的主要区别是保存数据的方式和在备份和还原期间监视工具的方式。ON-Bar 和 ontape 都支持一个名为外部备份的功能,该功能支持使用操作系统方法(比如镜像)来实现数据的更快备份或还原。

ON-Bar

ON-Bar 不会直接将数据发送给存储介质。相反,它将数据发送到一个处理该数据的存储管理器。存储管理器负责将数据放在某个位置上,并在一段时间后再次找到它或将其删除。

ON-Bar 可使用支持 X/Open Backup Services Application (XBSA) 程序员的接口标准的存储管理器。Informix Storage Manager (ISM) 是随产品一起发布的,无需购买第三方存储管理器(例如 Tivoli Storage Manager (TSM)、Omniback、Legato Networker 或 Veritas NetBackup)便可执行 ON-Bar 备份。ON-Bar 和 XBSA 共享库必须在同一个平台(32 位或 64 位)上进行编译。ON-Bar 使用 sysutils 数据库来跟踪发送给存储管理器的备份数据。

ON-Bar 包括以下功能:

  • 并行备份和还原
  • 时间点还原
  • 集成的备份验证命令
  • 轻松集成到现有的存储管理器解决方案中

Ontape

ontape 工具是一个简单的备份和还原实用程序。它将来自数据库服务器的数据保存到磁带或磁盘。因为不涉及到存储管理器,所以可以轻松实现其他备份方法,比如备份到 STDIO(标准输出)或备份到云。它按照顺序执行备份和还原。

Ontape 包含以下功能:

  • 简单性和易用性
  • 备份到磁带、文件或目录
  • 备份到 STDIO
  • 备份到云

Ontape 和 ON-Bar 备份不可互换。例如,无法使用 ontape 创建一个备份并使用 ON-Bar 还原它。

理解 archecker 实用程序

archecker 实用程序执行以下工作:

  • 确认还原备份所需的所有页面都以正确的格式存在于介质之上
  • 从一个备份还原单个表

对于备份验证,有两种模式可供使用:一种 ON-Bar 内的集成模式 (onvar -v) 或一种直接调用 archecker 的独立模式。archecker 实用程序验证 ON-Bar 标准和全系统备份。archecker 实用程序无法验证逻辑日志备份。

对于使用 archecker 的表级还原,需要使用表的模式文件。archecker 会遍历存储空间和逻辑日志备份文件,查找属于该表的行。archecker 会重新创建这些行,并将它们插入到在模式文件中定义的表中。

理解 ISM

ISM 是一个简单的存储管理器,可供 ON-Bar 用于备份 Informix 实例。您需要提前配置 ISM,才能使用它进行备份。必须恰当地设置 onconfig 参数,为 ISM 定义正确的 XBSA 库。


采用恢复策略

您需要在理解关键业务数据、可用的备份工具和工具功能的前提下对恢复策略进行规划。规划恢复的第一步是根据对业务数据的理解,列出恢复目标。从数据丢失容忍度和可接受的时间损失方面定义您企业的恢复目标。以下一些重要问题可帮助您计划恢复过程:

  • 可接受丢失多少数据(如果存在数据丢失)?
  • 您的企业可在没有该数据的情况下正常运行多久?
  • 您的生产系统可在还原期间关闭多久?
  • 可损失多少事务时间?
  • 有多少预算可用于恢复计划?

成本和恢复速度之间很可能存在一种平衡。您想更快地恢复实例,就需要更复杂的恢复计划,必须提供的硬件资源也就越多。

设置了恢复目标之后,确定 IBM Informix 备份和恢复工具。恢复规划选项应该包含以下解决方案:

  • IBM Informix 备份实用程序(ontape 和 ON-Bar)
  • 加载/卸载实用程序
  • 高性能加载器
  • dbexport/dbimport
  • 外部表
  • SDS、HDR 或 RSS
  • 使用磁盘镜像的外部备份和还原
  • 备份到云

权衡速度和成本的优缺点是一大挑战。以下是一种有效的权衡方法:

  1. 列出许多需要恢复的可能情形。
  2. 根据严重级别对故障进行分类。
  3. 为多种故障级别开发一个恢复计划。

以下是一些多级故障示例,它们可以帮助您确定故障的严重级别:

  • 数据库对象的意外删除(行、列和表)
  • 服务器对象的意外删除(数据库、数据块和存储空间)
  • 数据损坏或创建了不正确的数据
  • 硬件故障(比如包含数据块文件的磁盘的故障)
  • 数据库服务器故障
  • 自然灾难

在这些情景中,您还需要使用 Informix 备份以外的备份方法和工具来恢复数据。


使用 Informix 备份数据

本节将介绍可使用 Informix 提供的工具执行的各种类型的备份。

执行物理备份

物理备份过程包括所有或选择性的存储空间备份。您可以在数据库服务器处于在线、休眠或单用户模式下时执行此备份。物理备份(或标准备份)归档仅使用每个存储空间中的页面,不会使用该存储空间中所有已分配的页面。ontape 和 ON-Bar 实用程序都可用于物理备份。

物理备份不会在主要数据块可用时归档临时存储空间和次要数据块。物理备份也不会归档已分配给数据库服务器但还未分配给表空间盘区的存储空间页面。

ontape 物理备份不包含任何数据库配置或 sqlhosts 文件。您需要使用操作系统来单独备份这些文件。从 Informix 11.70 开始,ON-Bar 实用程序会自动备份 onconfig、ixbar 和 oncfg 文件,并将它们保存在 ON-Bar 归档文件自身内。但是,要利用这个新的 ON-Bar 功能,存储管理器必须兼容 Informix 11.70。

以下各节将介绍物理备份。

完整的 0 级备份

0 级归档包含开始归档时 Informix 实例存储空间中存在的所有数据的副本。0 级备份可能非常耗费时间,因为使用的所有磁盘页面都需要写入备份介质。任何完整还原都需要 0 级备份,但您可执行引用 0 级备份的增量备份(1 级和 2 级备份)。您可以考虑使用外部备份来减少执行 0 级备份所需的时间。

1 级备份

1 级备份仅复制自上次执行 0 级别备份以来发生更改的数据。它可能花费比 0 级备份更少的空间和时间,但具体情况取决于在此期间更改的数据量。1 级备份需要引用 0 级备份来进行还原。

2 级备份

2 级备份引用一个 1 级备份,它仅保存自上一次执行 1 级备份以来发生更改的数据。它可能花费比 1 级备份更少的空间和时间,但这也取决于更改的数据量。2 级备份引用 1 级和 0 级备份来执行完整还原。

顺序和并行备份

顾名思义,顺序备份是按照将存储空间写入磁盘,所以一次仅写入一个存储空间。这是 ontape 惟一可用的模式。如果将 BAR_MAX_BACKUP 配置参数设置为 1,ON-Bar 也可以按顺序备份存储空间。

在执行并行备份期间,同时会备份多个存储空间。自 Informix 11.10 开始,所有 ON-Bar 备份都可以并行执行,除非将 BAR_MAX_BACKUP 配置参数设置为 1。ON-Bar 会自动对存储空间进行排序,以最有效的方式执行备份。

标准 ON-Bar 备份会完成已选定的或所有存储空间的并行备份,这些空间使用 onbar -b 选项归档,而不使用 -w。在标准 ON-Bar 备份中,数据库服务器为它执行备份的每个存储空间都执行一个检查点。逻辑日志备份必须从标准 ON-Bar 备份还原。

-w 选项定义的全系统备份会自动包含执行归档检查点时未完成的事务的必要逻辑日志记录。全系统还原可还原到某个一致的点,无需任何显式的逻辑日志备份和还原。

全系统备份可以并行执行。rootdbs 仍然会首先单独地执行备份。然后基于 BAR_MAX_BACKUP 配置设置并行地备份剩余的存储空间。在一个全系统 ON-Bar 备份中,数据库服务器会为备份的所有存储空间执行单个检查点。

备份过滤器

Ontape、ON-Bar 和 archecker 支持使用过滤器插件 执行备份或还原操作。过滤器插件可以是一个在备份或还原期间转换数据的操作系统命令或应用程序模块。例如,备份过滤器可在将数据库服务器留给存储介质之前加密数据,在还原期间解密数据。过滤器也可用于执行其他操作,比如压缩。

配置参数 BACKUP_FILTER 支持您指定一个在备份数据上操作的过滤器程序。指定的过滤器会自动应用到数据库服务器提供的备份数据,然后再供 ontape 或 ON-Bar 备份实用程序处理。类似地,配置参数 RESTORE_FILTER 支持在还原数据时适当地转换回数据。清单 1 给出了一个 BACKUP_FILTER 和 RESTORE_FILTER 设置示例。

清单 1. 被设置为一个备份和还原过滤器的配置参数
 On UNIX and Linux platform:
 BACKUP_FILTER      /usr/bin/gzip 
 RESTORE_FILTER     /usr/bin/gzip -d -c

 On Windows platform:
 BACKUP_FILTER      c:\cygwin\bin\gzip.exe
 RESTORE_FILTER     c:\cygwin\bin\gunzip.exe

在验证备份或提取数据期间,可以将过滤器用于 archecker。在访问已由一个备份过滤器处理的备份数据之前,必须适当设置 AC_RESTORE_FILTER archecker 配置参数。

配置参数 RESTORE_FILTER 和 archecker 配置参数 AC_RESTORE_FILTER 必须设置为相同的值。外部备份和还原操作不支持使用备份和还原过滤器。

伪备份

伪备份不是真正的备份。在伪备份期间,数据库服务器不会向存储设备写入任何数据。因为在伪备份期间没有实际发生任何备份,所以该操作非常快。在需要更改数据库上的日志模式来激活新创建的 blobspace 的时候,或者让表可以在高性能加载器 (HPL) 以显式模式加载数据后供用户访问时,伪备份非常有用。伪备份无法还原。

在生产环境中执行伪备份时,需要额外小心。因为不能从伪备份还原数据,所以您可能无法连续还原到当前时间点。

执行逻辑日志备份

逻辑日志备份是将一个逻辑日志文件的内容复制到存储介质的过程。逻辑日志会存储检查点记录、管理活动(比如数据定义语言 (DDL) 语句)和 Informix 实例中的数据库事务活动。每个 Informix 实例都有有限的逻辑日志。

Informix 实例以一种循环方式使用逻辑日志。记录是按顺序写入逻辑日志文件中的。在第一个日志填满后,Informix 开始将记录写入第二个日志中,依此类推。在使用完所有日志时,Informix 会再次开始写入第一个日志。在 Informix 重用一个日志之前,必须备份其所有数据,并且必须在一个较新的日志中有一个检查点。

对于缓冲、未缓冲或 ANSI 模式的数据库日志,对表执行的所有插入、更新和删除操作都记录在逻辑日志中。在意外关闭后或在一次还原的逻辑恢复过程中,可以使用它们执行快速恢复。因此,事务活动必须继续记录,并且必须一直维护它们,知道执行下一个存储空间或全系统备份。所有并行备份都需要使用逻辑日志备份才能成功还原,除了全系统备份。

手动、连续和自动逻辑日志备份

因为在发生故障或执行还原时,需要使用逻辑日志文件来确保实例的一致性,所以在所有逻辑日志都已填满并且没有备份的时候,数据库服务器会挂起。逻辑日志文件只在标注了 B 标志的情况下才可以进行改写,该标志表示一个备份的逻辑日志。

可采用多种不同的方式备份逻辑日志。逻辑日志备份可由管理员或操作员手动(按需)运行。该备份可使用连续日志备份连续运行,也可使用 ALARMPROGRAM 配置参数自动触发。

按需手动逻辑日志备份是在管理员或操作员使用 ON-Bar 或 ontape 执行日志备份请求时执行的。手动逻辑日志备份会备份所有完整的逻辑日志文件,并在当前的逻辑日志文件处停止备份。

连续逻辑日志备份通常在使用 ontape 作为备份和还原实用程序时使用。在每个逻辑日志填满时,或在服务器切换到下一个日志时,ontape -c 选项会连续备份这些逻辑日志。连续逻辑日志备份需要一个专用的终端和备份设备。

在使用自动逻辑日志备份并且每次有一个逻辑日志文件变为空的时,数据库服务器会自动调用使用 ALARMPROGRAM 配置参数配置的指定程序。默认情况下,ALARMPROGRAM 会调用 $INFORMIXDIR/etc/alarmprogram.sh 脚本(在 WIndows 平台上为 %INFORMIXDIR%\etc\alarmprogram.bat)。如果在脚本中将 BACKUPLOGS 变量设置为 Y,默认脚本会使用 onbar -b -l 命令执行逻辑日志备份。在默认 alarmprogram 脚本中设置 BACKUPLOGS=Y,这会触发自动逻辑日志备份。

可将 ontape 设置为备份到目录。也可以轻松地将 ontape 实现为使用 ALARMPROGRAM 备份逻辑日志。在这种情况下,脚本应该使用 ontape -a -y。请记住将 LTAPEDEV 设置为一个目录。如果将 LTAPEDEV 设置为一个文件,连续逻辑日志备份会失败,并会显示一条表明文件已存在的消息。

逻辑日志救援

在还原之前,如果在磁盘上找到还未备份的逻辑日志,则可以对它们进行救援。这将在 使用 Informix 完成还原 中进行介绍。

没有逻辑日志备份

如果对备份逻辑日志不感兴趣,可以将 onconfig 参数 LTAPEDEV 设置为 /dev/null(在 Windows 上为 NUL)。在逻辑日志为被清空时,该设置会立即将这些逻辑日志视为空闲。如果丢弃逻辑日志,将无法执行逻辑还原。在发生硬件或软件故障时,只有在使用 ontape 或使用 ON-Bar 完成了全系统备份时,才能还原数据。


使用 Informix 完成还原

在 Informix 还原期间,数据从一个备份复制回存储空间。以下是一些可能需要还原的场景:

  • 整个服务器系统不可用(您无法将服务器带回在线模式)
  • 一个关键存储空间(比如根 dbspace 或包含日志的存储空间)不可用(一个或多个数据库被标记为关闭)
  • 一个非关键存储空间不可用(一个或多个数据块和关联的镜像数据块标记为关闭)

理解还原类型

物理和逻辑还原

物理还原是对使用 0、1 和 2 级备份进行备份的存储空间还原的过程。物理还原过程非常有效,因为它只是从备份介质复制页面映像并将它们放在磁盘上。物理还原需要 0 级备份。1 和 2 级备份是可选的,可在 0 级备份之后应用。

逻辑还原是使用在逻辑日志备份上找到的事务进一步还原 Informix 实例的过程。逻辑还原在物理还原之后执行。因为逻辑还原不会复制页面,而是重放事务记录,所以它比物理还原过程更慢、更低效。

冷还原、热还原和混合还原

冷还原 发生在根 dbspace 或包含物理或逻辑日志的存储空间无法访问时。执行冷还原时,数据库服务器必须处于离线模式。全系统还原始终是冷还原,因为所有存储空间都被还原,包括关键存储空间。

热还原 发生在根存储空间和包含逻辑和物理日志的存储空间不受影响时。执行热还原时,Informix 实例必须处于在线、休眠或快速恢复模式下。如果希望在引擎在线时仅还原非关键存储空间,可以执行热还原。热还原需要将逻辑日志(逻辑还原)前滚到最新的时间点,以便存储空间与剩余存储空间处于一致的状态。

混合还原 是首先仅对关键存储空间执行冷还原,然后对非关键存储空间执行热还原的过程。尽管混合还原可使用户更快地使用关键数据,但完整还原会花更长时间,因为逻辑日志会还原和重放多次:初始冷还原时发生一次,每次后续热还原时发生一次。

在以下情形下,混合还原是理想的还原方式:服务器包含根还原空间、逻辑日志存储空间、3 个包含业务关键型财务数据的 100GB 存储空间和 50 个包含历史数据的 100GB 存储空间。使用冷还原恢复关键存储空间和 3 个包含业务关键型数据的存储空间,可能很有用。还原这些存储空间后,系统即可供用户使用,不太重要的历史数据可使用热还原进行还原。尽管系统用于还原的总时间更长(因为逻辑日志必须应用两次,热还原必须与活动用户共享硬件资源),但混合还原使企业能够更快地恢复正常。

并行还原和顺序还原

在并行还原期间,会产生多个进程来并行还原多个存储空间。并行还原也称为存储空间还原。存储空间还原可用于还原单个存储空间、多个存储空间或整个 Informix 实例。并行还原仅可用于 ON-Bar。在使用 ON-Bar 时,可以并行地执行存储空间还原(除非 BAR_MAX_BACKUP 设置为 1)。如果使用 onbar -r 命令执行还原,那么 ON-Bar 会并行还原存储空间,并重放逻辑日志一次。

在使用 ontape 时,所有还原都是顺序还原,因为它们一次还原一个存储空间。

在还原期间重命名数据块

在冷还原期间,可通过指定新数据块路径和偏移来重命名数据块。如果需要将存储空间还原到不同于执行备份的磁盘的磁盘,此选项很有用。可以重命名任何类型的数据块,包括关键数据块和镜像数据块。

这种类型的还原会对重命名数据块执行以下验证:

  • 验证旧数据块路径名和偏移存在于归档保留的页面中。
  • 验证新数据块路径名和偏移没有彼此重叠或与现有数据块重叠。
  • 如果重命名主要根数据块或镜像根数据块,则会更新 ONCONFIG 文件参数 ROOTPATH 和 ROOTOFFSET,或者 MIRRORPATH 和 MIRROROFFSET。旧版本的 ONCONFIG 文件保存为 ONCONFIG.localtime。
  • 将旧数据块的数据还原到新数据块(如果新数据块存在)。
  • 将每个数据块的重命名信息写入到在线日志。

如果任何验证步骤失败,重命名过程将会停止,ON-Bar 向 ON-Bar 活动日志写入一个错误消息。

建议在重命名数据块后执行 0 级归档,否则必须将重命名的数据块还原到它的原始路径名,然后再次重命名该数据块。

如果在执行 0 级归档后添加一个数据块,该数据块无法在还原期间重命名。另外,也无法在映射列表中为该数据块指定一个新路径。

在还原期间救援日志

在执行还原之前将逻辑日志文件从磁盘备份到存储介质的过程称为逻辑日志救援。在系统失败后可能需要执行还原操作;但是一些逻辑日志数据可能还未备份到备份介质。必须对这些数据进行救援,因为将系统恢复到故障时间点需要它们。在系统失败后执行的冷还原会自动尝试救援任何日志,但也可以选择在冷还原之前手动救援日志。ON-Bar 救援日志命令是 onbar -l -s。ontape 救援日志命令是 ontape -S

onbar -r 命令会自动救援逻辑日志。如果希望跳过日志救援,可结合使用 onbar -r -ponbar -r -l 命令。在使用 ontape 时,可以通过对 Do you want to backup the logs? 问题回答 No,在还原期间跳过日志救援。

使用时间点或日志点还原

时间点还原从 0、1 和 2 级备份恢复数据,并将逻辑日志前滚到特定的时间点或特定的逻辑日志。时间点还原支持将数据库服务器还原到它在一个特定时间点所处的状态。时间点还原始终是冷还原,可用于撤销可能无法修复的错误。

这样的错误的一个示例是意外丢弃一个表。完整的系统还原会在物理还原期间还原该表,但在逻辑还原期间会再次丢弃它。时间点还原支持将数据还原到丢弃该表之前的时刻。在将数据库服务器还原到特定时间时,这个指定的时间点上未提交的所有事务都将丢失。另外,在该还原时间点后发生的所有事务也将丢失。

使用表级还原

表级还原可使用 archecker 实用程序执行。archecker 实用程序在还原期间使用了一个模式命令文件来还原表。这个模式命令文件包含要提取的源表、将数据还原到的目标表,以及一个链接这两个表的 INSERT 语句。表级还原将在 使用 archecker 执行表级还原 中详细介绍。

使用外部备份和还原

外部备份或还原操作在 Informix 服务器外部执行,无需在备份或还原期间使用 ON-Bar 或 ontape。可以使用第三方工具来备份或还原数据。在执行外部备份期间需要阻塞数据库,以确保所有数据都保存了相同时间点的状态。数据常常会在磁盘上建立镜像,并且阻塞期间该镜像会被拆分,以便在从一个副本保存该数据的同时,可继续使用其他副本。

下面总结了执行外部备份所需的步骤:

  1. 使用 onmode -c block 阻塞数据库服务器。
  2. 使用第三方工具或复制命令备份所有存储空间和管理文件。
  3. 使用 onmode -c unblock 取消阻塞数据库服务器。
  4. 使用 ontape (ontape -a) 或 ON-Bar (onbar -b -l -c) 备份所有逻辑日志(包括当前日志)。

使用 ON-Bar 配置、命令和语法

本节将介绍 ON-Bar 设置和语法。

理解 ON-Bar 设置步骤

使用 ON-Bar 之前,您需要执行以下操作:

  1. 配置存储管理器。
  2. 设置适当的 ONCONFIG 配置参数。
  3. 确定逻辑日志的备份策略。如果要使用 ON-Bar 备份日志,那么不得 将 LTAPEDEV 设置为 /dev/null(或 Windows 平台上的 NUL)。

请记住,ON-Bar 备份不包含以下内容:

  • 分配给盘区但目前尚未使用的存储空间页面。
  • 来自镜像数据块的页面,如果相应的主要数据块可用。
  • 存储在光盘上的 blobspace 中的大对象。
  • 临时存储空间。

从 Informix 11.70 开始,ON-Bar 会自动备份 onconfig、ixbar 和 oncfg 文件,将它们保留在 ON-Bar 归档自身内。但是,要利用这个新 ON-Bar 功能,存储管理器必须兼容 Informix 11.70。如果存储管理器不兼容 Informix 11.70,则可以运行带 -cf no 选项的 ON-Bar 命令来忽略对关键文件的备份。例如,可以使用 onbar -b -L 0 -cf no

配置存储管理器

必须安装和配置存储管理器,然后才能使用 ON-Bar 执行备份和还原。存储管理器控制用于备份和还原的存储设备和介质,而 ON-Bar 则负责管理数据移动以及与 Informix 和存储管理器之间的通信。请参阅存储管理器文档,了解相关的配置信息。请注意,ON-Bar 必须使用第三方存储管理器制造商提供的 XBSA 库版本。

请记住,在使用 onconfig 文件中的 BAR_BSALIB_PATH 配置参数设置 XBSA 库的路径名时,需要指定绝对路径名。不能对 BAR_BSALIB_PATH 使用相对路径名。

理解 XBSA 库

ON-Bar 使用 X/Open Backup Services 应用编程接口 (XBSA) 与存储管理系统交换信息。可交换两种类型的信息:控制数据和备份数据。

控制数据 用于验证 ON-Bar 和 XBSA 是否兼容,从而确保对象按正确的顺序还原到了适当的 Informix 系统,并跟踪备份对象的历史记录。备份数据还原数据 是来自备份或还原的存储空间、blobspace 或日志文件的实际数据。可使用 XBSA 事务通过 ON-Bar 在 Informix 服务器与存储管理器之间传输数据库对象(存储空间或逻辑日志)。该事务是一种保持数备份和还原数据一致性的方式。它可保证备份或还原对象中的所有数据都已在 Informix 服务器和存储管理器之间传输,或者没有传输任何数据。每个会话可执行多个 XBSA 事务,每个服务器可执行多个并发会话。

了解 ON-Bar 组件

本节将介绍 ON-Bar 组件。

Sysutils 数据库

ON-Bar 使用 sysutils 数据库来管理备份和还原目录信息。sysutils 数据库是在数据库服务器初始化期间在根存储空间中自动创建的。ON-Bar 在每次执行备份时都会更新 sysutils 数据库,并在热还原期间读取所需的信息。表 1 给出了一些 sysutils 表和其中存储的信息。

表 1. sysutils 数据库的内容
表名称说明
bar_actionON-Bar 将每个存储空间和逻辑日志视为备份对象。bar_action 表保存备份和还原的历史信息。它存储尝试对一个对象执行的所有备份和还原操作,但在冷还原期间除外。
bar_instance每个成功备份都会更新此表。ON-Bar 在还原期间使用此信息。
bar_object包含每个数据库服务器中至少会对其执行一次备份尝试的所有存储空间和逻辑日志的列表。
bar_server跟踪与备份对象关联的 Informix 数据库服务器。

紧急引导文件

紧急引导文件包含 sysutils 数据库中针对每个备份对象的所有信息。在 Informix 服务器处于离线状态时,ON-Bar 会在冷还原期间使用此信息(因此无法访问 sysutils 数据库)。在每次成功执行物理或逻辑日志备份后,都会更新紧急引导文件。紧急引导文件位于 INFORMIXDIR 下的 etc 子目录中,它的文件名为 ixbar.servernum,其中 servernum 是 SERVERNUM 配置参数的值。该文件拥有自己的格式,更改它可能导致 ON-Bar 发生故障。清单 2 给出了 ixbar 文件的一个示例。

清单 2. 紧急引导文件的示例
ids11  rdbs R  0  1  0  766  0 2011-07-01 09:10:49  1  31 845343 1 0  - - 31 1449  4128  1
ids11  16   L  0  2  0  767  0 2011-07-01 09:10:51  1  0  0      2 0  - - 16 5711  0     0
ids11  17   L  0  3  0  768  0 2011-07-01 09:10:52  1  0  0      3 0  - - 17 4928  5711  0

表 2 描述了紧急引导文件中的每一个列。

表 2. 紧急引导文件格式
说明
Server nameInformix 数据库服务器的名称
Storage space name or log unique ID 备份的存储空间的名称或逻辑日志的惟一 ID
Object type备份对象的类型。B=包含 BLOB 的存储空间、CD=关键存储空间、ND=非关键存储空间、R=关键存储空间、L=逻辑日志
Whole archive一个布尔值,表示这是否是一个全系统备份(使用 -w 标志执行的备份)
Action Id一个序列值,将 sysutils 数据库中的条目链接在一起
Level物理备份级别,比如 0、1 或 2 级备份
Copy ID high存储管理器复制 ID 的高位值
Copy ID low存储管理器复制 ID 的低位值
Start date备份对象的开始日期和时间
Bar versionON-Bar 版本(目前为 1)
First log还原一个存储空间需要的第一个日志
Insert time归档检查点时间
Required action ID如果这是非零值,此操作 ID 必须在当前操作 ID 之前重放(一个前提操作 ID)。
Verified一个 Boolean 值,表明对象已经过验证
Verify date对象验证日期
Checkpoint log日志包含归档检查点
Seal time关闭日志的时间
Previous seal time关闭前一个日志的时间
Backup order一个 Boolean 值,表明存储空间的大小顺序

Informix 提供了 onsmsync 实用程序来同步 sysutils 数据库、紧急引导文件和存储管理器目录的内容。onsmsync 可用于清除不再需要的备份信息。

使用 ON-Bar 配置参数

ON-Bar 使用了一些配置参数。表 3 列出了 ON-Bar 使用的配置参数。

表 3. ON-Bar 备份和还原配置参数
参数说明
BAR_ACT_LOG使用一个 ON-Bar 活动日志文件的现有目录指定完整路径名。在 ON-Bar 备份和还原活动期间,会使用合适的消息和错误更新活动日志。
BAR_DEBUGON-Bar 提供了一种机制来调试备份和还原故障。此参数定义了调试级别,这决定了在 ON-Bar 操作期间生成的调试信息的细节。更高的值会生成更详细的信息。该参数值的范围是 0-9。默认值为 0,表示未启用调试。启用 BAR_DEBUG 对 ON-Bar 性能具有很大的影响。调试级别可在 ON-Bar 运行时动态更改。通过仅在需要时设置较高的调试级别,可节省大量时间和磁盘空间。
BAR_DEBUG_LOG使用一个 ON-Bar 调试日志文件名称的现有目录指定完整路径名。
BAR_MAX_BACKUP此配置参数定义并行程度,确定要并发运行的备份和还原进程数量,包括备份和还原完整系统的进程。设置此参数,可显著调整备份和还原性能。达到运行进程的 BAR_MAX_BACKUP 数量后,只有在运行的进程完成其操作后才会启动更多进程。BAR_MAX_BACKUP 设置确定了存储管理器看到的备份流数量,请咨询存储管理器管理员了解合适的值。可以将 BAR_MAX_BACKUP 设置为 -1,以便在备份和还原期间基于存储空间编号而不是大小来更改存储空间顺序。
BAR_RETRY指定 ON-Bar 应尝试一个备份或还原操作的次数。在只需要还原一个或少数表时,表级还原可大大减少时间。默认值为 1。
BAR_NB_XPORT_COUNT指定每个备份或还原进程用于与 Informix 服务器交换数据的共享内存数据传输缓冲区数量。此参数的值会影响 ON-Bar 性能。
BAR_XFER_BUF_SIZE以页面为单位指定传输缓冲区的大小。用于备份和还原的缓冲区大小必须相同。该值应该设置您的系统所允许的最大值(对于 2K 基础页面大小数据库服务器系统,此值为 31;对于 4K 基础页面大小数据库服务器系统,此值为 15)。
BAR_PROGRESS_FREQ指定进度消息在备份和还原操作的 bar 活动日志中出现的频率。默认值 0 表示 ON-Bar 不向 bar 活动日志写入任何进度消息。要监视进度,该值不得小于 5 分钟。
BAR_PERFORMANCE指定要在针对备份和还原操作的 bar 活动日志中报告的性能统计信息类型。有效值为 0、1、2 或 3。0=关闭性能监视(默认值);1=显示用于在服务器和存储管理器之间传输数据的时间;2=以亚秒级精确度显示时间戳;3=显示时间戳和传输统计信息。
BAR_HISTORY指定在使用 onsmsync 工具让旧备份过期时,sysutils 数据库是否维护备份历史。有效值为 0 或 1。0=从 sysutils 数据库删除过期备份对象的记录;1=将过期备份对象的记录保留在 sysutils 数据库中。
BAR_BSALIB_PATH指定不同存储管理器的共享库。存储管理器和 ON-Bar 依靠共享库来彼此交互。
BAR_SIZE_FACTOR增大存储空间大小的估算值,然后将该信息传递给存储管理器。一般而言,备份是在线完成的;因此可在备份期间更改页面数量。如果实际备份大小比所提供的估算值大得多,一些存储管理器会失败。以原始存储空间大小的百分比形式获取 BAR_SIZE_FACTOR 值,然后将它添加到估算值中,之后才可以将它传送给存储管理器。
BAR_CKPTSEC_TIMEOUT如果主要服务器上的检查点未在超时时间内完成,远程独立 (RS) 辅助服务器上的外部备份可能失败。可以通过将此配置参数设置为更高的值来增加超时期限。

对 ON-Bar 性能影响最大的 3 个配置参数是:

  • BAR_MAX_BACKUP
  • BAR_XFER_BUF_SIZE
  • BAR_NB_XPORT_COUNT

使用 ON-Bar 备份 Informix 数据

可使用 ON-Bar 执行以下类型的备份:

  • 标准备份
  • 全系统备份
  • 物理备份
  • 逻辑日志备份

标准 ON-Bar 备份

在标准备份中,数据库服务器在备份每个存储空间时都会为其创建一个检查点。为了保持数据一致性,必须从标准备份还原逻辑日志。可以使用 BAR_MAX_BACKUP 配置参数设置要运行的并行 ON-Bar 进程的数量,或者可以通过将该参数设置为 1,强制某个标准备份以顺序备份的形式运行。ON-Bar 同时支持存储空间的全系统(0 级)和增量(1 和 2 级)标准备份。表 4 给出了标准 ON-Bar 备份的一些示例。

表 4. 标准 ON-Bar 备份
命令说明
onbar -b -L 0对所有在线、非临时的存储空间和使用的逻辑日志执行标准的 0 级备份
onbar -b -L 0 dbs1 dbs2对特定的存储空间(比如两个名为 dbs1 和 dbs2 的存储空间)和逻辑日志执行标准的 0 级备份
onbar -b -L 1执行标准的 1 级增量备份

全系统 ON-Bar 备份

全系统备份 (onbar -b -w) 基于单个检查点对所有存储空间和逻辑日志执行顺序备份或并行备份。无需逻辑日志便可还原全系统备份,因为所有存储空间中的数据在此备份中都是一致的。可以结合执行一次增量(1 或 2 级)全系统备份和一次 0 级全系统备份。表 5 提供了全系统 ON-Bar 备份的示例命令。

表 5. 全系统 ON-Bar 备份
命令说明
onbar -b -w -L 0对所有在线的、非临时的存储空间和使用的逻辑日志执行标准的 0 级备份
onbar -b -w -L 1执行 1 级全系统备份

ON-Bar 物理备份

物理备份仅备份存储空间。可以使用 ON-Bar 对特定或所有存储空间执行物理备份。例如,onbar -b -p 对所有存储空间执行物理备份。

ON-Bar 逻辑日志备份

如果执行标准备份,则必须备份逻辑日志,因为必须同时还原存储空间和逻辑日志。表 6 给出了逻辑日志备份的类型。

表 6. ON-Bar 逻辑日志备份
命令说明
onbar -b -l对写满的逻辑日志文件手动执行备份
onbar -b -l -c对当前逻辑日志文件以及其他写满的逻辑日志文件执行备份
onbar -b -l -C启动连续逻辑日志备份

逻辑日志救援

在冷还原中,ON-Bar 会在还原根存储空间之前自动备份逻辑日志,除非仅指定了一次物理还原。为了避免数据丢失,在包含逻辑日志的设备仍然可用时,或者在您计划仅执行一次物理还原的时候,可以在开始冷还原之前手动救援逻辑日志。例如,可以使用 onbar -l -s 手动救援逻辑日志。

验证 ON-Bar 备份

可以使用 表 7 中的示例验证 ON-Bar 备份。逻辑日志未验证。

表 7. 验证 ON-Bar 备份
命令说明
onbar -v验证对所有存储空间的一次备份。逻辑日志未验证。这适用于标准和全系统备份。
onbar -v -f dbsfile验证一个名为 dbsfile 的文件中列出的存储空间的备份。
onbar -v -t "<YYYY-MM-DD HH:MM:SS>"执行一次时间点验证。

伪 ON-Bar 备份

当您需要更改一个数据库上的日志模式来激活新创建的 blobspace 的时候,或者让各个表在高性能加载器 (HPL) 以显式模式加载数据后可供用户使用的时候,伪备份非常有用。不能从伪备份执行任何还原。可使用 onbar -b -F 命令执行伪备份。无论是否存在存储管理器应用程序,都可运行该命令。如果指定了任何存储空间,则会忽略它们。

使用 ON-Bar 还原

可以使用 ON-Bar 执行以下类型的还原:

  • 冷还原
  • 热还原
  • 混合还原
  • 逻辑日志还原
  • 可重新开始的还原

ON-Bar 冷还原

如果由于一个磁盘故障而导致关键存储空间损坏,从而出现数据库服务器故障,则必须对所有关键存储空间执行冷还原。要执行冷还原,数据库服务器必须处于离线状态。冷还原首先还原所有关键的存储空间,然后还原非关键存储空间,最后还原逻辑日志。完成这些还原操作后,数据库服务器会进入休眠模式。可使用 onmode 命令让其处于联线状态。还需要对以下任务之一执行冷还原:

  • 全系统还原
  • 时间点还原
  • 日志点还原
  • 导入的还原
  • 重命名数据块还原

全系统还原需要进行一个全系统备份,尽管它不需要还原逻辑日志。如果执行仅使用物理方式的全系统还原,在完成还原后,数据库服务器将进入快速恢复模式。可以使用 onmode 命令执行逻辑还原或让服务器处于联线状态。表 8 给出了 ON-Bar 全系统还原的示例。

表 8. 全系统还原
命令说明
onbar -r -w 执行具有自动日志救援功能的全系统还原
onbar -r执行全系统备份的标准还原
onbar -r -p -w执行仅物理方式的全系统还原(没有逻辑救援)
onbar -r -t <time> -w 执行全系统时间点还原

时间点还原支持将数据库服务器还原到它在特定时间点上所处的状态。通常使用它从错误(比如意外丢弃数据库)中恢复。在这种情况下,可以将服务器还原到丢弃数据库之前的时刻。例如,onbar -r -t "<YYYY-MM-DD HH:MM:SS>" 命令可以还原到在指定的时刻或之前提交的事务。

日志点还原类似于时间点还原。它将数据还原到指定的逻辑日志中列出的最后提交事务的时刻。onbar -r -n "<Log Number>" 命令执行日志点还原,以便还原到指定的日志编号。

在导入的还原中,数据还原到与用于备份数的数据库服务器实例不同的实例。XBSA 和存储管理器版本必须在备份和还原操作之间兼容。

对于重命名数据块还原,可以在冷还原期间指定新数据块路径和偏移来重命名数据块。此选项可用于将存储空间还原到不同于执行备份的路径名的路径名。在完成重命名数据块还原后,需要执行 0 级归档。例如,onbar -r -rename -p /chunk_old -o 0 -n /chunk_new -o 20000 命令将数据块从 (path: /chunk_old and offset: 0) 重命名为 (path: /chunk_new and offset: 20000)。

ON-Bar 热还原

如果存储空间关闭并且数据库服务器未处于离线状态,则可以在热还原中还原非关键存储空间。表 9 给出了执行热还原的示例。

表 9. 热还原
命令说明
onbar -r对所有关闭的存储空间执行一次热还原
onbar -r对所有关闭的存储空间执行一次热还原
onbar -r -p -w执行一次仅物理方式的全系统还原(没有日志救援)
onbar -r -t "<YYYY-MM-DD HH:MM:SS>" -w执行一次全系统时间点还原

热还原需要将逻辑日志前滚到当前的逻辑日志,所以无法使用它来还原意外丢弃的表或删除的数据。

ON-Bar 混合还原

混合还原是首先对所有关键存储空间执行冷还原,然后对剩余存储空间执行热还原的过程。因为不是所有存储空间都会在初始冷还原期间还原,所以与对所有存储空间执行冷还原相比,服务器可以更快地上线。

ON-Bar 逻辑日志还原

要执行逻辑日志还原,可使用 onbar -r -l 命令。在热还原期间会使用一个临时空间重新放置逻辑日志文件。请确保拥有足够的临时空间来执行逻辑还原。

ON-Bar 可重新开始的还原

如果在还原期间发生故障,可以从还原失败的位置重新开始还原。RESTARTABLE_RESTORE 参数的默认值为 ON。如果在物理还原期间发生故障,ON-Bar 在发生故障的级别上在存储空间上重新开始还原。如果在冷逻辑还原期间发生故障,ON-Bar 会从最后一个检查点重新开始执行逻辑还原。可重新开始的还原不适用于热还原的逻辑部分。要重新开始失败的还原,可发出 onbar -RESTART 命令。

查看 ON-Bar 活动日志

只要发生备份或还原活动或错误,ON-Bar 就会向活动日志写入一条简短描述。在 onconfig 文件中,可以通过设置参数 BAR_ACT_LOG 来执行 ON-Bar 活动日志文件的内容。

您可以使用 ON-Bar 命令查看最新的 ON-Bar 活动。只有拥有执行备份和还原操作的权限的用户才可以使用此 ON-Bar 选项。默认情况下,它显示 ON-Bar 活动日志中最后 20 行记录。可以通过该命令提供其他参数来更改该行数。它也以递归模式显示信息。表 10 提供了显示 ON-Bar 活动日志内容的 ON-Bar 命令的示例。

表 10. 活动日志命令
命令说明
onbar -m显示 ON-Bar 活动日志中的最后 20 行
onbar -m 40 -r 3每隔 3 秒显示 ON-Bar 活动日志中的最后 40 行

使用 ON-Bar 查看逻辑日志

ON-Bar 支持查看已备份的逻辑日志。这意味着您可以查看已备份且未存在于数据库服务器上的逻辑日志。这类似于使用 onlog 实用程序查看 ontape 实用程序备份的逻辑日志。必须存在可用来查看备份的逻辑日志的存储管理器。此命令的输出会显示到 stdout。

不能使用 ON-Bar 命令来查看尚未备份的逻辑日志。必须使用 onlog 实用程序查看数据库服务器磁盘上仍然可用的逻辑日志。例如,onbar -P -n 289 命令显示来自惟一编号为 289 的日志的逻辑日志记录的较长清单。

本教程的 archecker 一节中将介绍如何使用 ON-Bar 来验证备份。


理解 ontape 配置、命令和语法

本节将介绍 ontape 实用程序。

配置 ontape 实用程序

ontape 实用程序使用 ONCONFIG 文件中的 6 个参数创建存储空间和逻辑日志备份。表 11 给出了 ontape 使用的配置参数。

表 11. Ontape 备份和还原配置参数
参数说明
TAPEDEV指定用于备份和还原存储空间的磁带设备、目录或文件名。要配置 ontape 来使用标准 I/O,可将 TAPEDEV 设置为 STDIO。
TAPEBLK指定用于存储空间备份期间的写入操作的设备的块大小。块大小在备份和还原期间必须保持相同。
TAPESIZE指定用于备份和还原的设备的最大大小。将它设置为 0 会使用全部磁带容量。对于远程设备,不能将磁带大小设置为 0。
LTAPEDEV指定用于逻辑日志备份和还原的磁带设备、目录或文件名。
LTAPEBLK指定用于逻辑日志备份和还原期间的写入操作的设备的块大小。块大小在备份和还原期间必须保持相同。
LTAPESIZE指定用于备份和还原的设备的最大大小。将它设置为 0 会使用全部磁带容量。对于远程设备,不能将磁带大小设置为 0。

如果 TAPEDEV 指向某个磁带设备,它将在每个命令完成后自动倒回。在从磁带读取或向其写入数据之前,数据库服务器会执行一系列需要倒回的检查。如果将 TAPEDEV 或 LTAPEDEV 设置为一个文件,该文件会被后续备份覆盖,但在这样做之前会提醒您。

将 TAPEDEV 或 LTAPEDEV 设置为一个目录,确保每个物理或逻辑日志备份都写入到了新文件中。

如果在 Windows 上将 LTAPEDEV 设置为 /dev/null 或在 Windows 上设置为 NUL,则会关闭逻辑日志备份。逻辑日志会自动标记为已保存,以便可以覆盖它们。如果未保存日志,则无法执行逻辑还原。

使用 ontape 备份存储空间和文件

本节将介绍如何使用 ontape 备份存储空间和逻辑日志文件。

存储空间备份

ontape 实用程序支持存储空间的 0、1 和 2 级备份。它按照以下顺序备份存储空间:根存储空间、物理和逻辑日志存储空间、blobspace、智能 blobspace 以及其他存储空间。

在开始使用 ontape 创建备份之前,请确保 TAPEDEV 参数所指定的位置支持写入。表 12 给出了使用 ontape 备份存储空间的命令示例。

表 12. 存储空间备份
命令说明
ontape -s -L 0对磁带执行一次 0 级备份
ontape -s -L 0 -d 在没有提示的情况下对目录执行一次 0 级备份
ontape -s -L 0 Level_0_backup -t STDIO对当前目录中名为 Level_0_backup 的标准输出文件执行一次 0 级备份

逻辑日志备份

可以使用 ontape 来备份所有写满的逻辑日志,这称为手动逻辑日志备份。Ontape 也可执行一次连续日志备份,数据库会在每个逻辑日志文件写满时自动备份它。因此,您绝不会丢失多个部分的逻辑日志文件。逻辑日志备份不会备份当前的逻辑日志文件。

表 13 给出了执行逻辑日志备份的命令。

表 13. 逻辑日志备份
命令说明
ontape -a手动逻辑日志备份
ontape -c 连续逻辑日志备份

也可以创建连续逻辑日志文件备份到某个目录中。要结束连续逻辑日志备份,可按 Ctrl+C 中断备份。

使用 ontape 还原 Informix 数据

本节将介绍如何使用 ontape 还原存储空间和逻辑日志文件。

使用 ontape 执行冷还原

必须在数据库服务器处于离线状态时执行冷还原。可以在冷还原开始时救援逻辑日志。ontape 实用程序会提示您救援逻辑日志。然后 ontape 实用程序会提示您挂载包含备份数据的磁带。当从一个目录还原时,ontape 会提示您输入目录的路径名。可使用 -d 选项避免提示。

还原结束时,数据库服务器会保持在休眠模式下,可以将它切换到在线模式。表 14 给出了使用 ontape 执行冷还原的示例。

表 14. 冷还原
命令说明
ontape -r还原所有存储空间
cat Level_0_backup | ontape -p从一个名为 Level_0_backup 的标准输入文件执行物理还原。

使用 ontape 执行重命名数据块还原

可在冷还原期间使用 ontape 重命名数据块。但是,请确保在重命名数据块还原完成后执行 0 级备份。清单 3 给出了一个示例。

清单 3. 重命名数据块还原
ontape -r -rename -p /chunk_old -o 0 -n /chunk_new -o 20000

清单 3 中的命令重命名一个数据块(从 path: /chunk_old and offset: 0 重命名为 path: /chunk_new)并将偏移设置为 20000。

热还原

只能在非关键存储空间上执行热还原。可以在冷还原中还原关键存储空间之后,对选定的存储空间(比如 dbspace1 和 dbspace2)执行热还原。表 15 给出了使用 ontape 执行热还原的示例。

表 15. 使用 ontape 执行热还原
命令说明
ontape -r -D dbspace1 dbspace2对 dbspace1 和 dbspace2 存储空间执行热还原
cat Level_0_backup | ontape -r -D dbspace1 -t STDIO从标准输入文件 level_0_backup 对 dbspace1 执行热还原

混合还原

当执行混合还原时,可以仅还原关键的存储空间,此外,还可以在冷还原期间还原一个或多个非关键存储空间。以后,可以对非关键存储空间执行热还原。清单 4 给出了一个热还原示例。

清单 4. ontape 的混合还原命令
ontape -r -D rootdbs llogdbs plogdbs
ontape -r -D dbspace1 dbspace2

第一个命令对关键存储空间(rootdbs、llogdbs 和 plogdbs)执行冷还原。第二个命令对其他存储空间(dbspace1 和 dbspace2)执行热还原。

逻辑日志还原

在执行混合还原时,必须还原最后一次 0 级备份之后备份的所有逻辑日志文件。在执行完整还原时,可以选择是否还原逻辑日志文件。ontape -l 命令可以执行逻辑日志还原。

使用标准 I/O (STDIO) 备份和还原

Ontape 支持使用 STDIO 执行物理备份和还原操作。在备份期间,ontape 可将数据写入 stdout。在还原期间,ontape 可从 stdin 读取数据。Ontape 使用管道作为操作系统提供的内存缓冲机制,以便使用 STDIO 执行备份和还原。在 ontape 中使用 STDIO 的优点是:

  • 不需要对存储介质执行读或写操作(如果选择直接将备份数据传送给还原操作)。
  • 可以使用操作系统实用程序在存储前压缩备份数据。
  • 可以通过任何实用程序传输备份数据。
  • 可以通过立即将数据还原到另一个机器来创建重复的数据库服务器,比如设置一个初始 HDR(或 RSS)辅助服务器。

通过将 TAPEDEV 配置参数值设置为 STDIO,可以将 ontape 配置为使用 STDIO。

TAPEBLK 和 TAPESIZE 配置参数不能用于使用 STDIO 的备份。但是,TAPEBLK 的值仍可用于数据库服务器和 ontape 进程之间的数据传输。这里没有使用 TAPESIZE 配置参数,因为 STDIO 的容量被假设为是无限的。

使用 STDIO 的备份会直接写入 stdout。因此,需要将数据流重定向到某个文件。否则,会将数据流发送到屏幕。当将 stdout 重定向到某个文件时,请确保文件系统中有足够的空间。可以将错误和信息写入 stderr。表 16 给出了使用 STDIO 备份和还原的命令示例。

表 16. 使用标准 I/O 备份和还原
命令说明
ontape -s -L 0 > /informix/backup/archive_L0使用 STDIO 执行 0 级备份。ontape 命令的 stdout 被重定向到 /informix/backup 目录中一个名为 archive_L0 的文件。该命令与标准的 ontape 物理备份相同,但在本场景中,操作系统会将数据流传递给输出文件。
ontape -s -L 0 | compress -c > /informix/backup/archive_L0 执行 0 级备份,其中 ontape 命令被重定向到某个管道,在将数据写入 /informix/backup 目录中的 archive_L0 文件中时会对数据进行压缩。

不能在 ontape 中使用 STDIO 执行逻辑日志备份和还原。但是,如果有可用的标准逻辑日志备份,则可以在使用 STDIO 执行 ontape 物理还原之后使用 ontape -l 命令还原它们。另外,在还原过程不能执行逻辑日志救援。因此,应该在使用 STDIO 执行 ontape 还原之前,使用 ontape -S 命令手动救援任何日志。

在标准还原期间,ontape 会将信息打印到 stdout,但是,如果使用 STDIO,则会省略该消息。类似地,在还原一个 0 级备份后,ontape 会提示还原 1 级和 2 级备份。但在还原到 STDIO 期间,会省略这些提示,并会扫描输入流来获取更多数据。如果找到更多数据,则可以还原下一个级别的备份。因此,所有需要的数据必须是 ontape 还原命令的输入流的一部分,数据必须具有正确的顺序。您可以使用 清单 5 中的命令从 /informix/backup 目录中的 archive_L0 和 archive_L1 文件还原 0 和 1 级备份。

清单 5. 使用 STDIO 还原 0 级和 1 级备份
 cat /informix/backup/archive_L0 /informix/backup/archive_L1 | ontape -p

ontape STDIO 函数支持克隆一个 Informix 数据库服务器,或者通过同时执行备份到 stdout 和从 stdin 还原来快速设置 HDR。如果通过独立完成备份和还原来复制 Informix 数据库服务器,则可以使用 ontape -F 选项来阻止保存归档。在同时备份和还原期间,尽管执行了备份,但不能在以后还原它们,因为备份未保存到存储设备;备份的数据将通过一个管道传输到另一个系统,而且将使用一个 rsh 操作将数据迅速还原到另一个系统。清单 6 给出了同时备份和还原的命令示例。

清单 6. 同时执行 0 级备份和还原
ontape -s -L 0 -F | rsh serverB "ontape -p"

ontape 0 级备份在本地机器上执行。可以使用 rsh 操作系统实用程序将数据传输到一个名为 serverB 的远程机器上的 stdout,并在远程机器上执行物理还原。

如果将 TAPEDEV 配置为 STDIO,ontape 命令会忽略 -F 选项。具有 STDIO 配置的 ontape -F 备份选项意味着归档信息未记录在保留页面中。

使用目录执行备份和还原

Ontape 支持使用一个目录来执行备份和还原操作。使用目录的优点是,可对同一个目录执行多个备份。Ontape 会自动重命名该目录中的现有备份文件,就像是向文件名附加一个日期和时间,使备份文件不会被覆盖。

对于物理备份和逻辑日志备份,可以分别将配置参数 TAPEDEV 和 LTAPEDEV 设置为一个文件或目录。如果将它们设置为一个文件,那么后续备份会覆盖以前的备份。为 TAPEDEV 和 LTAPEDEV 指定的目录必须是存在的(设置了读、写和执行权限),然后才能使用这些目录执行 ontape 备份。

Ontape 在备份期间自动生成文件名。命名约定为:

  • 物理备份:Hostname_Servernum_Ln
  • 逻辑日志备份:Hostname_Servernum_Logn

其中:

  • Hostname 将机器名表示为一个前缀。
  • Servernum 将 SERVERNUM 配置参数的值表示为一个前缀。
  • n 表示备份级别或逻辑日志编号

可通过设置环境变量 IFX_ONTAPE_FILE_PREFIX 来忽略默认的备份文件命名约定。环境变量 IFX_ONTAPE_FILE_PREFIX 的值取代默认文件命名约定中的 Hostname_Servernum 前缀。例如,如果将 IFX_ONTAPE_FILE_PREFIX 设置为 Stores,那么物理备份会创建名为 Stores_L0Stores_L1Stores_L2 的备份文件。类似地,逻辑日志备份会创建名为 Stores_Log0000000001、Stores_Log0000000002 等的文件。在还原过程中,ontape 在物理和逻辑备份目录中搜索想要的备份文件名。在还原期间,如果目录中存在多个备份,还原过程会使用最新的备份。

因为所有备份映像都位于同一个目录中,所以系统管理员应负责监视可用的磁盘空间和文件的安全性。


监视和调试

在使用 ontape 时,只需监视控制台和消息日志即可。ON-Bar 实用程序提供了更多选项来调试和监视备份或还原操作的进度。可以使用 BAR_ACT_LOG、BAR_DEBUG_LOG 或其他配置参数来监视 ON-Bar 进度。

可以使用 BAR_PERFORMANCE 配置参数将报告级别设置为写入 ON-Bar 活动日志。可以将报告配置为包含 ON-Bar 处理的亚秒级时间戳,以及 ON-Bar 和存储管理器之间、ON-Bar 和Informix 实例之间的传输速率。

BAR_PROGRESS_FREQ 配置参数指定了在活动日志中显示备份或还原进度消息的频率(以分钟为单位)。

调试特定于 ON-Bar 的问题的最有用工具是 BAR_ACT_LOG 和 BAR_DEBUG_LOG。将 BAR_DEBUG 设置为 9 将支持跟踪 ON-Bar 和 XBSA 调用,并在 BAR_DEBUG_LOG 中生成消息,这些消息可用于跟踪哪些调用失败或返回所遇到的错误。


使用外部备份和还原

外部备份或还原操作是在 Informix 外部执行的,无需在备份或还原期间使用 ON-Bar 或 ontape。数据是使用第三方工具进行备份或还原的。

使用外部备份

以下是执行外部备份所需的总体步骤:

  1. 使用 onmode -c block 阻塞数据库服务器。
  2. 使用第三方工具或 copy 命令备份所有存储空间和管理文件。
  3. 使用 onmode -c unblock 取消对数据库服务器的阻塞。
  4. 使用 ontape -a (ontape) 或 onbar -b -l -c (ON-Bar) 备份所有逻辑日志,包括当前日志。

使用外部还原

以下是执行外部还原所需的总体步骤:

  1. 使用 ontape -S (ontape) 或 onbar -b -l -s (ON-Bar) 救援逻辑日志。
  2. 使用第三方工具或 copy 命令将所有存储空间从外部备份还原到原始位置。
  3. 使用 ontape -p -eontape -l(使用 ontape)或 onbar -r -e(使用 ON-Bar)对所有存储空间和逻辑日志执行外部还原。

在 RS 辅助服务器上使用外部备份

可以在 RS 辅助服务器上执行外部备份。执行 RS 辅助服务器的备份会阻塞该 RS 辅助服务器,但它不会阻塞主要服务器。可以从主要实例备份的日志执行逻辑还原。无法使用 1 级或 2 级备份还原从辅助服务器获得的备份。

如果数据库实例包含任何以下内容,将无法完成外部备份:

  • 非日志智能大对象
  • 常规 blobspace
  • 非日志数据库
  • 原始表

如果在包含任何上述内容的实例上执行外部备份,备份将是不完整的,无法用于还原主要服务器。

表 17 给出了对在 RS 辅助服务器上执行外部备份很重要的配置参数。

表 17. 用于 RS 上的外部备份的配置参数
参数说明
STOP_APPLY停止在 RS 辅助服务器上应用逻辑日志文件。在执行外部备份之前可能未在 RS 辅助服务器上设置它,因为它将由外部备份本身设置。
LOG_STAGING_DIR定义在使用 STOP_APPLY 时来自主要服务器的逻辑日志将存储于何处。

处理归档检查点之后,RS 辅助服务器便会停止应用逻辑日志,但它会继续从主要服务器接收日志。在外部备份期间,主要数据库服务器必须处于在线或休眠模式下。

要在 RSS 上执行外部备份,请执行前面所述的外部备份步骤。

逻辑日志备份只能在主要服务器上执行。


使用 archecker

对于从 ontape 和 ON-Bar 获得的备份,可以使用 archecker 实用程序执行备份验证。archecker 实用程序也有一个表级别还原选项。在需要从 0 级备份和后续的逻辑日志恢复数据库的某一部分、某个表或某一组表时,该选项很有用。

archecker 拥有自己的配置文件,在使用之前需要设置它。默认的配置文件为 $INFORMIXDIR/etc/ac_config.std 或类似的 Windows 文件。也可以创建您自己的配置文件。如果未使用默认的 AC_CONFIG 文件,可将 AC_CONFIG 环境变量设置为配置文件的完整路径名。

ac_config.std 文件有 3 个配置参数:AC_MSGPATH、AC_STORAGE 和 AC_VERBOSE。但是,也可以设置其他一些配置参数来配置不同的 archecker 选项。表 18 给出了与 archecker 相关的配置参数。

表 18. archecker 配置参数
参数说明
AC_MSGPATH指定 archecker 消息文件 (ac_msg.log) 的位置(完整路径名)。
AC_STORAGE指定 archecker 生成的临时文件的位置。必须指定具有大量空闲空间的存储位置的完整路径。默认值为 /tmp 或类似的 Windows 位置。应避免使用 /tmp,因为如果 /tmp 文件系统装满了,系统可能变得无法使用。如果未设置 AC_STORAGE,archecker 会使用当前目录。
AC_VERBOSE指定 archecker 消息的详细模式或静默模式 (quiet mode)。默认情况下,此参数设置为 On。
AC_DEBUG在 archecker 消息日志 (AC_MSGPATH) 中打印调试消息。默认情况下,此参数设置为 Off。启用此参数可能导致 archecker 消息日志文件增长到非常大,这会减缓 archecker 执行过程。
AC_IXBAR在对 ON-Bar 备份使用 archecker 时指定 IXBAR 文件的路径名。
AC_LTAPEBLOCK以 KB 为单位指定读取逻辑日志的磁带块大小。此参数必须设置为跟配置参数 LTAPEBLK 或 BAR_XFER_BUF_SIZE 与用于 ontape 或 ON-Bar 备份的数据库服务器基础页面大小的乘积相同的值。
AC_LTAPEDEV指定 ontape 用于读取逻辑日志的设备名。
AC_SCHEMA指定 archecker 模式命令文件的路径名。可以使用 -f 命令行选项改写此参数。
AC_TAPEBLOCK以 KB 为单位指定磁带块大小。必须将它设置为跟用于 ontape 或 ON-Bar 的配置参数 TAPEBLK 或 BAR_XFER_BUF_SIZE 与数据库服务器基础页面大小的乘积相同的值。
AC_TAPEDEV指定 ontape 实用程序使用的设备名。
AC_TIMEOUT如果 ON-Bar 和 archecker 进程中的一个进程过早地退出,则指定这两个进程的超时值。此参数可防止 ON-Bar 和 archecker 进程彼此无限期地等待。

从 Informix Version 11 开始,如果未设置 AC_LTAPEDEV、AC_TAPEDEV、AC_LTAPEBLOCK 和 AC_TAPEBLOCK 的值,archecker 使用当前数据库服务器配置文件中的类似类型的参数值。

使用 archecker 验证备份

可使用两种方法之一调用 archecker 实用程序:从命令行(这称为独立方式)或通过 ON-Bar 备份验证选项 -v(这称为集成方式)。必须使用单独的方法对 ontape 备份运行 archecker 备份验证。要对 ON-Bar 备份运行备份验证,推荐使用 onbar -v 选项。

在上述每种情形下,在执行该实用程序时,archecker 消息会存储在 archecker 消息文件中。清单 7 给出了备份验证期间在 archecker 消息日志中生成的消息。

清单 7. archecker 消息日志示例(经过了编辑,以减少行数)
Program Name: archecker
Version: 8.0
Released:       2011-05-11 22:37:01
CSDK:           IBM Informix CSDK Version 3.70
ESQL:           IBM Informix-ESQL Version 3.70.UC1
Compiled:       05/11/11 22:37 on SunOS 5.9 Generic_118575-28

AC_STORAGE    /home/informix/storage
AC_MSGPATH    /home/informix/ac_msg.log
AC_VERBOSE    on
AC_TAPEDEV    /TAPE/informix/backup/
AC_TAPEBLOCK  32 KB
AC_LTAPEDEV   /TAPE/informix/backup/
AC_LTAPEBLOCK 32 KB
AC_TIMEOUT    300
AC_SESSION

Archive file  /TAPE/informix/backup/prod_L0
Tape type: Archive Backup Tape
Informix version: IBM Informix Dynamic Server Version 11.70.UC2
Archive date: Sun May 4 23:29:41 2011
Archive Level: 0
Tape blocksize: 32768
Tape size: 2147483647
Tape number in series: 1
Scan PASSED
Control page checks PASSED
Reserve page validation PASSED
Checking rootdbs:TBLSpace
Checking sysmaster:sysdatabases
Checking sysmaster:systables
Checking sysmaster:syscolumns
...<snip>...
Checking datadbs1:TBLSpace
Checking stores7:systables
...<snip>...
Checking stores7:customer
...<snip>...
Table checks PASSED
Tables/Fragments validated: 345
Archive Validation PASSED.

清单 7 表明,archecker 实用程序对存储在不同存储空间中的数据库中的每个表都执行了检查。检查存储空间中的每个数据库后,会分析存储空间的数据流,以确保能够还原空间。检查所有空间后,实用程序会使用成功或失败的结果进行响应。

以下是 archecker 验证的一些项目:

  • 归档上的每个页面的格式
  • 磁带控制页面
  • 每个表,以确保该表上的所有页面都存在于归档中
  • 保留页面格式
  • 每个没有数据块的列表
  • 表盘区(检查重叠)

以下命令是使用 ON-Bar 执行备份验证的 archecker 命令的示例:

  • archecker -bvs
  • onbar -v

archecker -tvs 命令是使用 ontape 执行备份验证的 archecker 命令。

当运行连续验证时,请确保清空了以前的验证中剩下的 AC_STORAGE 文件目录。您也可以向 archecker 独立命令添加 -d 选项,这表明在开始执行新验证命令之前,archecker 应该清除 AC_STORAGE 中的任何文件,如下所示:

  • archecker -bdvs
  • archecker -tdvs

独立 archecker 命令的 -v-s 选项分别提供了详细消息和在屏幕上打印消息的功能。

如果使用 ON-Bar 验证选项 (onbar -v),那么 ON-Bar 实用程序可以直接调用 archecker。除了 archecker 消息日志中的输出,其他信息记录在 ON-Bar 活动日志中。

使用 archecker 实用程序的 ON-Bar 接口,可提供无法从命令行获得的更多验证选项。您可以使用逻辑日志验证到某个特定的时刻,也可以指定要检查的一个存储空间子集。清单 8 给出了 ON-Bar API 中提供的更多语法。

清单 8. ON-Bar API 中提供的验证备份的更多语法
onbar -v [ -t <time_stamp>] [-w] [ -f <filename> | <list_of_spaces>]

清单 8 中,-w 标志用于全系统备份。也可以列出要检查的存储空间,或者在 -f 选项后使用一个具有存储空间名称的文件。

使用 archecker 执行表级还原

archecker 实用程序提供了从一个归档文件还原一个或多个表的全部或部分内容的功能。可以将表还原至特定的时间点。这意味着可以还原特定的数据片段,无需对整个归档执行漫长的还原过程。举例而言,这对还原意外丢弃的表非常有用。

archecker 支持执行表级还原,而无需让数据库服务器或存储空间处于离线状态。根据所创建的模式命令文件,它可能还支持将表还原到特定时间点,过滤数据(比如 column_1 <= 250),以及将还原重定向到不同的存储空间。

使用 archecker,您可以从一个数据库服务器的备份提取数据,通过一种分布式事务操作将其发送到位于其他网络位置的另一个数据库服务器(可能基于不同的操作系统平台)。archecker 是一个灵活且强大的还原实用程序。可以使用不同的表名称来还原表,仅还原一个表的选定列,还原为一个外部文件(将数据还原到一个文件),或者将数据转储到 ASCII 文件。

就像普通的还原一样,表级还原也包括两部分:物理和逻辑。在物理还原期间,数据从一个 0 级备份还原,与模式命令文件条件匹配的所有数据都会提取出来。

在逻辑还原期间,在处理 0 级备份之后,会分析在备份之后创建的针对在源表上执行的事务的逻辑日志记录,这些记录需要应用于正在还原的表。archecker 仅从备份逻辑日志读取逻辑日志记录。在开始表级还原之前,请确保已经备份了您希望 archecker 处理的所有逻辑日志。

您可以控制是否仅提取日志记录(称为暂存),或者是否提取并应用这些记录(称为应用)。表级还原的默认操作是并行执行逻辑还原(暂存和应用部分)。对于表级还原的逻辑还原部分,如果日志记录中的事务与模式命令文件条件相符,这些日志记录就会暂存在一个临时表中,然后会对目标表进行重放。在某个 archecker 进程暂存日志记录时,另一个 archecker 进程会应用日志记录。通过这种方式,可以将还原的表恢复到想要的状态附近。

在表级还原的逻辑部分,archecker 不会应用任何有关联的丢弃表日志记录。archecker 表级还原会在发觉到还原了一个丢弃表或截断表日志记录时停止还原表。

通常,archecker 表级还原会将状态消息放在 archecker 消息文件中。当使用 -s 选项时,还会将一些状态消息打印到屏幕。清单 9 给出了在执行一次表级还原期间 archecker 消息日志中的示例消息。

清单 9. 执行表级还原期间的 archecker 消息日志示例
IBM Informix Dynamic Server Version 11.70.FC2
Program Name:   archecker
Version:        8.0
Released:       2011-05-01 22:37:01
CSDK:           IBM Informix CSDK Version 3.70
ESQL:           IBM Informix-ESQL Version 3.70.UC1
Compiled:       05/11/08 22:37 on SunOS 5.9 Generic_118575-28


AC_STORAGE               /home/informix/storage
AC_MSGPATH               /home/informix/ac_msg.log
AC_VERBOSE               on
AC_TAPEBLOCK             32 KB
AC_IXBAR                 /home/informix/etc/ixbar.0
Dropping old log control tables
Extracting table stores7:customer into stores7:customer

Scan PASSED
Control page checks PASSED
Table checks PASSED
Table extraction commands 1
Tables found on archive 1
LOADED: stores7:customer produced 50 rows.
Creating log control tables
Staging Log 27
Logically recovered stores7:customer Inserted 0 Deleted 0 Updated 0

需要从命令行执行 archecker 来执行表级还原。物理和逻辑还原可分开执行。逻辑还原也可运行为独立的暂存和应用命令。运行 archecker 表级还原命令的最简单方式是在一个命令中执行整个还原。

以下命令是使用 ON-Bar 执行表级还原的 archecker 命令示例:

  • archecker -bvs -f <cmdfile>
  • archecker -bvs -f <cmdfile> -l phys, stage, apply

以下命令是使用 ontape 执行表级还原的 archecker 命令示例:

  • archecker -tvs -f <cmdfile>
  • archecker -tvs -f <cmdfile> -l phys, stage, apply

当运行连续 archecker 表级还原命令时,请确保清除了上一次还原尝试所留下的文件和表。可以使用 archecker -DX 命令清除执行 archecker 表级还原之后留下的所有工作文件和表。

清单 10 给出了使用 archecker 执行表级还原的语法(包括所有选项)。

清单 10. 表级还原语法
archecker [-b | -t] -X [-f cmdfile] [-v] [-s] [-l phys | stage | apply]

-b 或 -t 选项分别指示备份介质是来自 ON-Bar 还是 ontape 操作。如果未使用 -f 选项,-X 选项表明这是一个表级还原。如果希望覆盖 AC_SCHEMA archecker 配置参数,那么可以使用 -f 标志。-v 和 -s 标志分别表示详细模式和将 archecker 消息日志信息输出到屏幕。也可以使用 -l(小写的 L)标志控制表级还原操作的执行方式。默认情况下,该操作执行所有 3 个阶段:物理、暂存和应用。但是,可以仅指定一个或两个以逗号分隔的阶段。例如,如果指定 -l phys, stage,则会提取数据并将它们存储在临时暂存表中,但不会应用它们。选项 -d 或 -D 可用于删除以前的 archecker 还原文件和工作表。

如果将表级还原分解为独立的阶段,请注意不要在后续命令中使用 -d 或 -D 选项,因为后面的还原阶段需要使用来自第一个还原阶段的 archecker 工作文件和表。

使用 archecker 模式命令文件

模式命令文件是 archecker 表级还原操作的一个主要组件。这个文件使用一种类似 SQL 的语言来提供 archecker 在表级还原期间使用的信息。此文件的完整路径可使用 AC_SCHEMA archecker 配置参数来定义,或者在调用 archecker 时作为 -f 标志的一个参数传递。

模式命令文件的结构很简单。它包含 5 个主要的 SQL 语句:

  • Database
  • Create table
  • Insert into
  • Restore
  • Set

insert into 语句中还支持其他 SQL 选择和插入命令。

要创建模式命令文件,请执行以下步骤:

  1. 使用 DATABASE 命令打开一个数据库。
  2. 使用 CREATE TABLE 命令定义包含提取数据的源表的准确模式。如果希望将数据还原到不同的表,则需要将该表定义为目标表。目标表的模式不需要与源表相匹配。这些模式在列数、列名称和分区模式方面可以完全不同。要加载的列的数据类型虽然可以不完全相同,但至少必须是相互兼容的。目标表的定义不是强制性的。
  3. 在从源表选择数据时,可以指定 INSERT INTO 语句,将数据插入到目标表中。可以使用 where 子句过滤数据。过滤器只能应用于物理还原。如果目标表的模式与源表模式不匹配,请在定义 select 语句时选择那些可选的列。
  4. 使用 RESTORE 语句,通过一个附加的时间点还原选项,从而执行物理或逻辑还原。restore 语句不是强制性的。但是如果没有它,archecker 默认情况下会同时执行物理和逻辑还原。如果希望仅执行物理还原,那么可以使用 restore to current with no log 语句。
  5. 在执行 commit work 语句之前指定事务间隔或要处理的行数,以便使用 SET 命令预防发生长期运行的事务。可以为存储 archecker 工作表的数据库存储空间指定一个名称。默认情况下,archecker 使用根存储空间。temp 外的任何存储空间都可以使用。Set 不是一个强制性选项。

清单 11 给出了一个时间点表级还原的示例,它从一个归档的表选择数据并将其还原到一个不同名称的表。数据还基于 col1 值进行了过滤。

清单 11. 时间点表级还原的示例
DATABASE stores7;

CREATE TABLE source 
(
   col1     SERIAL,
   col2     CHAR(20),
   col3     SMALLINT
) IN dbspace1;

CREATE TABLE target    
(
   col1     INT,
   col2     CHAR(20)
) IN dbspace2;

INSERT INTO target SELECT col1, col2 FROM source
WHERE col1 > 5000;

RESTORE TO '2008-06-01 01:01:01';

SET COMMIT 2000;
SET WORKSPACE TO dbspace3;

从一个名为 source 的表中选择数据,并将它们插入一个名为 target 的表中。因为两种表模式不同,所以在 INSERT 语句中为各列建立了映射,还使用 WHERE 子句基于 col1 值对数据进行了过滤。数据会还原到时间点 2008-06-01 01:01:01。提交间隔被设置为 2000 条记录,存储空间 dbspace3 用于存储 archecker 表级还原工作表。


使用 dbexport 和 dbimport

dbexport 和 dbimport 是两个简单的实用程序,无需任何提前配置即可运行它们,它们非常易于使用。尽管可以使用这些实用程序在 Informix 数据库服务器之间迁移数据,您也可以使用它们备份和还原小型数据库。dbexport 和 dbimport 实用程序都是平台独立的。可以使用 dbexport 在 Windows 平台上导出一个 Informix Version 7.31 数据库,然后使用 dbimport 将同一个数据库导入 Solaris 平台上的 Informix version 11.70。

dbexport

dbexport 实用程序以文本格式从数据库中的每个表卸载数据,为该数据库创建一个模式文件。它还在当前目录中创建了一个名为 dbexport.out 的消息文件,其中包含警告和错误消息。可以将该数据卸载到一个文件或磁带。在导出期间,数据库锁定在独占模式下,以保持参照完整性。如果数据库未能获取独占锁,dbexport 实用程序会终止并抛出一个错误。

dbexport 实用程序为数据库中的每个表生成各自的卸载文件 (.unl)。在将数据卸载到磁盘时,dbexport 创建了一个名为 database.exp 的子目录。该实用程序会卸载数据并向该目录写入一个模式文件。如果没有指定卸载目录路径,那么 dbexport 会在当前目录下创建一个 database.exp 目录。

清单 12 给出了 dbexport 命令的语法,其中包含一些可用的选项。dbexport 命令的参数没有先后顺序。

清单 12. dbexport 命令语法
 dbexport <database> [-X] [-c] [-q] [-d] [-ss [-si]]
   [{ -o <directory> | -t <tapedevice> -b <blocksize> -s <tapesize> 
   [-f <schema>] }]

<database>      Specifies the name of the database you are exporting

-X	        Recognizes HEX binary data in character fields

-c	        Ignores non-fatal errors and continues

-q	        Suppresses error messages, warnings etc. from display to screen

-d	        Exports simple-large-object descriptors only, not simple-large-object data

-ss	        Generates database server-specific information for all tables in the
                specified database

-si	        Excludes the generation of index storage clauses for non-fragmented tables

-o <directory>	Specifies the directory on disk in which dbexport creates the 
		directory. This holds the data files and the schema file that dbexport 
		creates for the database.

-t <tapedevice>	Specifies the pathname of the tape device for export data and schema file

-b <blocksize>	Specifies the block size of the tape device in KB

-s <tapesize>	Specifies the capacity of tape (in KB)

-f <schema>	Specifies the pathname where you want the schema file stored, while 
                exporting data on tape

清单 13 给出了一个简单的 dbexport 示例。

清单 13. Dbexport 命令示例
dbexport -o /export/data <database> -ss

在 清单 13 中,<database> 是数据库的名称。-o 标志指定卸载目录。-ss 标志生成数据库的特定于服务器的配置,比如盘区大小、锁模式、表分段和表所在的存储空间名称。

可以使用 dbexport 创建大于 2GB 的文件。但是,请确保操作系统支持大于 2GB 的文件。

保持某种存储空间布局 (dbschema -c) 和一组环境设置,防止在导入数据后出现任何意外的结果。

dbimport

dbimport 实用程序基于 dbexport 所生成的模式文件和卸载数据来创建数据库并加载数据。运行 dbimport 的用户对新创建的数据库拥有 DBA 特权。在导入期间,dbimport 独占地锁定每个表,并在导入完成后对该表进行解锁。可以从磁盘或磁带上的文件导入数据。也可以将模式文件放在磁盘上,将数据文件放在磁带上。dbimport 在当前目录中创建了一个名为 dbimport.out 的消息文件,其中包含警告和错误消息。在导入数据时,dbimport 实用程序要求当前目录下的 database.exp 目录中存在数据库模式和卸载数据,除非使用一个 dbimport 命令选项指定了该位置。

清单 14 给出了 dbimport 命令的语法,其中包含可用的一些选项。dbimport 命令的参数不分先后顺序。

清单 14. dbimport 命令语法
dbimport <database> [-X] [-c] [-q] [-d <storage space>]
   [-l [{ buffered | <log-file> }] [-ansi]]
   [{ -i <directory> | -t <tapedevice> [ -b <blocksize> -s <tapesize> ] 
   [-f <schema>] }]

<database>	    Specifies the name of the database to create

-X	            Recognizes HEX binary data in character fields

-c	            Ignores non-fatal errors and continues

-q	            Suppresses error messages, warnings etc. from display to screen

-d <storage space>  Specifies the storage space where database will be
                    created. The default storage space is the rootdbs.

-l	            Represents the logging mode of database. If no option is used,
                    the database is created as non-buffered. The -l buffered option
                    creates a buffered logging database. 

<log-file>	    Specifies the name of the transaction-log file. Used with Informix 
		    Standard Engine only.

-ansi	            Specifies that the database created is ANSI compliant

-i <directory>	    Specifies location of database.exp directory on disk. This holds the 
                    data files and the schema file that dbimport uses for create 
                    database and load data.

-t <tapedevice>	    Specifies the pathname of the tape device for export data and 
		    file

-b <blocksize>	    Specifies the block size of the tape device in KB

-s <tapesize>	    Specifies the capacity of tape (in KB)

-f <schema>	    Specifies the location of schema file, while importing data from tape

清单 15 给出了一个简单的 dbimport 示例。

清单 15. dbimport 命令示例
dbexport -i /export/data <database>

清单 15 中,<database> 是数据库的名称。-i 标志指定磁盘上包含数据和模式文件的 database.exp 目录的位置。

在开始导入数据之前,请确保您设置好了所有环境变量,确定存储空间布局与导出数据的数据库服务器上的布局相同。

最好不要编辑卸载数据或模式文件。但是,如果从卸载数据删除任何记录,则需要在模式文件中更新卸载注释。


使用云计算执行 ontape 备份和还原

无需配置任何磁带设备,便可将数据备份到云。只需通过 Internet 将备份的数据存储到在线存储服务上。

您可以使用 ontape 实用程序将 Informix 数据库数据备份到云存储上或从中还原 Informix 数据库数据。通过将数据存储在云上,可以提供可从 Web 访问的可扩展存储。有多种云计算平台可用。一些比较成熟的云平台包括 Amazon Simple Storage Services (S3) 和 IBM SmartCloud。在本节中,您将学习如何配置和使用 ontape 实用程序,以将数据备份到 Amazon S3 云或从中还原数据。

在考虑通过 ontape 实用程序使用 Amazon S3 作为备份和还原解决方案之前,您必须有一个执行云存储备份的 Amazon 帐户。为了使用 ontape 将数据备份到云,需要在计算机上安装 Java Version 1.5 或其更高版本。

配置云备份

完成以下步骤,使用 ontape 实用程序将数据备份到 Amazon S3 云和从云还原数据。

  1. 使用 web 浏览器,登录到您的 Amazon S3 帐户并查找您的安全凭证(AccessKey 和 SecretKey)。您会在 Account > Security Credentials > Access Credentials 下找到 AccessKey。SecretKey 只在单击 View 按钮后才会显示。
  2. 将访问凭证存储在一个文件中。设置该文件的权限,将其设置为仅供运行 ontape 实用程序的用户访问。可以将值存储在 $INFORMIXDIR/etc/ifxbkpcloud.credentials(在 Windows 平台上为 %INFORMIXDIR%\etc\ifxbkpcloud.credentials)中的一个文件中。清单 16 给出了 ifxbkpcloud.credentials 文件格式的示例。
    清单 16. 访问凭证
    secretKey=<secret_access_key>
    accessKey=<access_key_ID>
  3. 使用 ifxbkpcloud.jar 实用程序在您打算存储备份数据的区域中创建一个存储设备。Amazon 使用术语 来描述备份数据的容器。您选择的存储设备名称拥有与 Amazon S3 中的桶名称一样的限制,并且必须保持惟一。使用 清单 17 中的命令在 Amazon S3 上的 U.S. Eastern 区域创建一个名为 mytapedev 的存储设备。从 UNIX 系统上的 $INFORMIXDIR/bin 目录或 Windows 系统上的 %INFORMIXDIR%\bin 目录运行该命令。
    清单 17. 存储设备创建
    java -jar ifxbkpcloud.jar CREATE_DEVICE amazon mytapedev US_East
  4. 设置 TAPEDEV and LTAPEDEV Informix 配置参数,以便结合使用云存储和 ontape 备份。使用这些参数指定一个以逗号分隔的项列表,ontape 使用这些项配置云存储。表 19 描述了需要使用 TAPEDEV 和 LTAPEDEV 配置参数执行的项。
表 19. 备份和还原到云的配置参数
参数说明
1指定一个本地目录,临时备份文件将存储在此处,以供备份和还原操作使用。
2指定您希望在将临时文件成功传输到 Amazon S3 后删除它还是保留它。
3指定云存储提供商的名称
4指定 Amazon S3 桶的 URL。使用 https 保护数据传输。

清单 18 给出了指向云存储位置的 onconfig 文件中的 TAPEDEV 和 LTAPEDEV 配置参数的示例。

清单 18. TAPEDEV 和 LTAPEDEV 配置的示例
TAPEDEV   '/informix/tapedev_dir, keep = no, cloud = amazon, 
           url = https://mytapedev.s3.amazonaws.com'

LTAPEDEV   '/informix/ltapedev_dir, keep = no, cloud = amazon, 
           url = https://mytapedev.s3.amazonaws.com'

可以对云存储使用任何 ontape 命令来执行备份和还原。在将数据传输到云映像之前,应该对它进行加密。要加密数据,可使用 BACKUP_FILTER 和 RESTORE_FILTER 配置。archecker 实用程序不支持从云存储对数据执行表级还原。

存储在 S3 中的 ontape 备份对象的大小具有限制。此限制目前为每个对象 5 GB。5 GB 限制是 Amazon S3 的旧限制,去年已对此有所提升,在 S3 中,所存储对象的新的大小限制 5 TB。在即将推出的 Informix 版本中,针对 ontape 的限制将增加到新的 5 TB。


使用 Informix 启动和快速恢复

快速恢复是一个自动、容错的过程,Informix 服务器在每次从离线状态切换到休眠、管理或在线模式时都会执行它。您不需要执行任何管理操作即可执行快速恢复;它是一个自动功能。

作为共享内存初始化的一部分,数据库服务器会检查物理日志的内容。当数据库服务器以一种受控方式关闭时,物理日志是空的。Informix 在从在线模式切换到休眠模式时(这会刷新物理日志)会执行一个检查点。不受控的关闭可能将页面保留在物理日志中,它在启动期间开始快速恢复。

如果一个数据库使用缓冲的登录,一些与提交的事务关联的逻辑日志记录可能未在发生故障时写入逻辑日志。如果发生此情况,快速恢复无法还原这些事务。快速恢复只能还原在磁盘上的逻辑日志中存储了关联的 COMMIT 记录的事务。

在快速恢复期间,物理日志可能溢出。如果发生此情况,数据库服务器尝试将物理日志空间扩展到一个名为 plog_extend.servernum 的磁盘文件。此文件的默认位置为 $INFORMIXDIR/tmp。可以使用 ONCONFIG 参数 PLOG_OVERFLOW_PATH 定义创建此文件的位置。

对于未使用日志的数据库或表,快速恢复将数据库还原到最新的检查点的状态。自上一个检查点以来,对数据库所做的全部更改都会丢失。

快速恢复执行以下过程:

  1. 数据库服务器使用物理日志中的数据将所有磁盘页面返回到最新检查点所在时刻的状态。这个点称为物理一致性
  2. 数据库服务器找到逻辑日志文件中最新的检查点记录。
  3. 数据库服务器前滚在记录最近的检查点之后写入的所有逻辑日志记录。
  4. 数据库服务器回滚所有未提交的事务。一些 XA 事务可能在 XA 资源管理器可用之后才能处理。

理解物理日志

物理日志记录是存储数据库服务器将要更改的页面的前像 (before-image),然后将更改实际记录在磁盘上的过程。在数据库服务器修改共享内存缓冲池中的某些页面之前,它会还原共享内存中的物理逻辑缓冲区中的页面的前像。

数据库服务器维护在共享内存中的物理日志缓冲区中维护前像页面,直到一个或多个页面清洁程序将这些页面刷新到磁盘。用户可以使用未修改的页面,以防数据库服务器失败或备份过程需要它们来提供数据库服务器数据的准确快照。快速恢复和数据库服务器备份会使用这些快照。

数据库服务器回收每个检查点上的物理日志,但也有例外。

使用快速恢复和物理方式记录的页面

在发生故障后,数据库服务器使用页面的前像将磁盘上的这些页面还原到它们在最后一个检查点上的状态。然后数据库服务器使用逻辑日志记录将所有数据返回到最近完成的事务的时刻,以保持物理和逻辑一致性。如果在检查点之间对一个页面执行了多项修改,通常只会将第一个前像记录在物理日志中。

有许多配置参数可能会影响恢复过程。表 20 给出了恢复过程中使用的配置参数。

表 20. 用于恢复的配置参数
参数 说明
PLOG_OVERFLOW_PATH当物理日志文件在快速恢复期间溢出时,指定一个磁盘文件(名为 plog_extend.servernum)的位置。在快速恢复期间执行第一个检查点时,数据库服务器会删除 plog_extend.servernum 文件。
OFF_RECVRY_THREADS在数据库服务器处于离线状态时,指定逻辑恢复中使用的恢复线程数量。这个线程数量也用于在快速恢复期间前滚逻辑日志记录(在冷还原期间)。
ON_RECVRY_THREADS指定数据库服务器在它在线时用于逻辑恢复的恢复线程的最大数量(在热还原期间)。
RTO_SERVER_RESTART支持您使用恢复时间目标 (RTO) 标准,设置在重新启动 Informix 并将它切换到在线或休眠模式之后从某个问题恢复所需的时间(以秒为单位)。

理解返回代码和 oninit 实用程序

如果数据库服务器在启动期间遇到任何错误,它会返回一个错误消息和一个错误代码值。返回代码提供了有关故障原因的详细信息。表 21 给出了一些常见的返回代码和可能的操作。

表 21. 从 oninit 实用程序生成的返回代码
返回代码消息文本用户操作
0数据库服务器已成功初始化。
1服务器初始化失败,查看写入到 stderr 或在线消息日志的任何错误消息。基于写入 stderr 或在线消息日志中的错误消息采取合适的操作。
87数据库服务器已检测到安全违规行为,或者某些前提条件不足或不正确。检查用户和组 informix 是否存在(仅限 UNIX 和 Mac OS)。检查服务器配置文件 (onconfig) 和 sqlhosts 文件是否存在并拥有正确的权限。检查环境变量 INFORMIXDIR、ONCONFIG 和 SQLHOSTS 是否拥有有效值,并且这些值的长度未超过 255 个字符。检查环境变量 INFORMIXDIR 是否指定了一个绝对路径,并且没有使用任何空格、制表符、换行符或其他不正确的字符。检查 $INFORMIXDIR 目录下与角色分离相关的子目录(比如 aaodir 和 dbssodir)是否拥有正确的所有权。运行 onsecurity 实用程序来诊断和修复所有问题。
170数据库服务器未能初始化 dataskip 结构。释放系统上的一些物理内存并再次启动数据库服务器。
250数据库服务器未能动态加载 ELF 库。ELF 库不可用于数据库服务器。安装 libelf 包。
255在服务器初始化期间发生了一个内部错误。查看写入 stderr 或在线消息日志的任何错误消息。基于错误消息采取适当的操作。

将 SQL 事务回滚到一个保存点

Informix Server 上的事务是原子性的,这意味着一个事务中的所有操作要么都已提交,要么都未提交。例如,如果一个事务在事务范围内收到一个约束违规行为或空间已满的错误,那么应用程序必须取消整个事务,然后重试或发送一个错误。

保存点功能使应用程序能够将一个事务回滚到一个预先确定的标记处。保存点是在一个数据库事务内指定的标记。在发生错误时,事务日志可指定该事务回滚到某个保存点。保存点的 Informix 实现遵循 SQL-99 标准。

可为保存点实现以下 SQL 语句:

  • SAVEPOINT 语句在当前 SQL 事务内创建一个保存点。
  • ROLLBACK WORK TO SAVEPOINT 语句丢弃在该保存点之后的语句对数据库的模式或其数据值所做的更改,但在保存点之前的 DDL 和 DML 语句仍会继续生效。
  • RELEASE SAVEPOINT 语句销毁指定的保存点,以及在 RELEASE 语句和它引用的保存点之间存在的任何其他保存点。

结束语

本教程主要介绍了 IBM Informix 数据库备份和还原概念,介绍了在参加 Informix 系统管理认证考试之前,您需要了解的备份和还原的知识。您现在应该能够更好地理解 Informix 备份和还原操作,包括以下概念和功能:

  • 如何建立恢复策略和备份计划(包括全系统备份、存储备份、顺序备份、并行备份、逻辑日志备份、冷还原、热还原、混合还原、物理还原、逻辑日志还原和时间点还原)
  • Informix 备份和还原实用程序及它们的功能,包括 ON-Bar、ontape、archecker、dbexport 和 dbimport
  • 备份和还原实用程序的配置参数和文件,以及存储设备选项和需求
  • 优化和监视 ON-Bar 备份和还原的性能的方式,以及诊断归档问题所需的调试日志
  • 执行备份、还原和归档验证所需的命令
  • Informix 启动和快速恢复过程

参考资料

学习

获得产品和技术

讨论

条评论

developerWorks: 登录

标有星(*)号的字段是必填字段。


需要一个 IBM ID?
忘记 IBM ID?


忘记密码?
更改您的密码

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件

 


在您首次登录 developerWorks 时,会为您创建一份个人概要。您的个人概要中的信息(您的姓名、国家/地区,以及公司名称)是公开显示的,而且会随着您发布的任何内容一起显示,除非您选择隐藏您的公司名称。您可以随时更新您的 IBM 帐户。

所有提交的信息确保安全。

选择您的昵称



当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。

昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。

标有星(*)号的字段是必填字段。

(昵称长度在 3 至 31 个字符之间)

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件.

 


所有提交的信息确保安全。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=Information Management
ArticleID=829853
ArticleTitle=Informix 11.70 系统管理认证考试 919 准备教程,第 5 部分: Informix 备份和还原
publish-date=08092012