Informix – onbar的备份&恢复-最详细介绍

备份 ON-Bar 简述 ON-Bar 是一个完全可伸缩的备份产品,用于 Informix 数据库。它让您可以并行地运行备份和恢复,根据您选择要运行的线程数量,这可以让您大大提高它…

备份

ON-Bar 简述

ON-Bar 是一个完全可伸缩的备份产品,用于 Informix 数据库。它让您可以并行地运行备份和恢复,根据您选择要运行的线程数量,这可以让您大大提高它们的速度。ON-Bar 适用于任何规模的 Informix 系统。

如果您想要减少系统备份和恢复时间,那么 ON-Bar 能满足您的要求。当机器上正在运行其它处理时,ON-Bar 也可以运行,因为当备份运行时,它不要求数据库的任何部分脱机。但是,当 ON-Bar 正在运行时,它确实要消耗大量系统资源,因此建议在运行备份时,尽量减少其它正在运行的处理的数量。

ON-Bar 组件 — 存储管理器

为了让 ON-Bar 工作,必须安装并配置存储管理器。存储管理器是为您处理磁带系统的软件。它的一些功能就是将数据写到实际的磁带、跟踪什么数据在哪盘磁带上、将数据分配给各个类别、处理保留时间等。这些通常是比较昂贵的工具,而且需要一些专门知识来进行配置。

存储管理器的示例是 Legato 公司的 NetWorker 和 VERITAS 公司的 NetBackup。Informix 也附带一个存储管理器,它的引擎叫作(真让人吃惊!)Informix Storage Manager(ISM),它基本上是 Legato 公司的 NetWorker 的缩小版。对于可以用最小数量的线程备份的拥有四个或更少磁带机的小系统,它可以正常运行。(ON-Bar 从数据库读取数据,然后直接与存储管理器通信,将数据存储到磁带。存储管理器会跟踪数据的去向,以及该数据要保留多久。

备份策略

在我们直接跳到如何配置 ON-Bar 并让它运行之前,我想要简单地讨论一下如何实现适当的备份解决方案。特别地,我将讨论备份级别和它们对保存/恢复次数的影响。如果您一直使用 ontape,您可能已经对此有深入了解,但还有一些 ON-Bar 特有的考虑事项值得注意。

ON-Bar 提供三种不同级别的备份:

  • 级别 0,它备份系统上的所有数据;
  • 级别 1,它备份自从上次级别 0 备份之后所有已更改的数据;以及
  • 级别 2,它备份自从上次级别 1 或级别 0 备份之后所有已更改的数据。

这些不同的级别可以结合起来使用,以缩短备份操作的运行。

在理想情况下,我们只要每晚运行一次级别 0,这样就行了。但是,通常需要考虑备份运行时间和磁带数量的实际约束。与级别 0 相比,级别 1 或级别 2 备份运行要快得多;但是,如果您需要恢复,那么它需要更长时间。这是因为您必须首先恢复级别 0 数据,然后恢复级别 1,最后是级别 2。在实现解决方案之前,必须仔细考虑如何权衡备份时间和恢复时间的得失。 图 1中显示了典型的备份解决方案。

如果您有足够的时间和足够的备用磁带,我建议您每天都做级别 0 备份。这会大大增加您的恢复时间(尤其是对于大的系统),将用去更多磁带,而且将需要更长时间运行备份。ON-Bar 的可伸缩能力非常好,您通常可以通过添加磁带机来以跟上数据的增长速度,足以缩短备份运行时间 — 我看到过用 ON-Bar 在三小时之内完成 1 TB 系统的备份。

ON-Bar 在运行时对查询时间有重大影响(有些查询要花 10 倍于原来的时间来运行),因此建议您在没有别人使用机器的时候运行备份。如果不能这样做,那么就在机器上的系统负载最小时运行备份。

要考虑的另一个重要事项是 ON-Bar 只提供物理备份;即,它可以应付数据库空间(dbspace)脱机、磁盘故障和引擎故障。如果某人删除表、运行错误的更新,或者删除他们不应删除的许多行,ON-Bar 不会提供保护。我把这些类型的错误叫作逻辑(或用户)错误。

使用 ON-Bar 很难恢复逻辑错误。这是因为您不能从 ON-Bar 备份中恢复单个表 — 如果您想要进行表级备份,必须有计划的将那些表转储到磁盘。如果需要使用 ON-Bar 恢复一个表,就需要对整个系统执行时间点(point in time)恢复,该时间点应在发生逻辑错误的时间之前。
需要备份什么?

除了您的数据(运行备份的主要目的)之外,每次运行 ON-Bar 备份时,还应该备份其它文件。

$INFORMIXDIR 中有一些 ON-Bar 需要的文件,以便完成恢复。这些文件叫作“紧急引导文件”。它们的用途是在冷恢复(从完全丢失中恢复)事件中代替 sysutils 数据库。建议您在 ON-Bar 完成每次备份之后,备份这些文件。

大多数存储管理器都有一个 Informix 特有的部件,可以为您处理这个问题(您会知道您是否有这个部件,因为您需要为它支付额外费用)。运行 ON-Bar 时需要这个 Informix 部件。确保正在备份这些文件,这一点很重要,因为这通常是一个可以被关闭的选项。

如果正在使用不会为您备份这些文件的 ISM 或存储管理器,我建议每次备份之后,备份整个 $INFORMIXDIR。这会确保您不会遗漏某个文件,以致将来发现不能恢复数据。如果不能完成备份整个 $INFORMIXDIR,请参阅 图 2获取紧急引导文件的列表和我建议您备份的其它一些文件。
图 2:每次 ON-Bar 备份时要备份的文件
screen.width-500)this.style.width=screen.width-500;” />

sysutils 数据库

sysutils 数据库是 ON-Bar 存储所有数据的地方。这个数据库会记住存储管理器标识(存储管理器需要这些标识来检索信息),以及关于备份了什么以及何时备份的信息。使用 ON-Bar 时,它是一个至关重要的数据库(就象 sysmaster 与数据库之间的关系)。

您将会留意到,当运行备份时,sysutils 的大小会增加。您要定期清除该数据库中的一些数据,可以使用 onsmsync 实用程序来执行该操作。如果正在运行一个老版本的 Informix,您也许会发现并不存在这个实用程序(这会把我们引入经常升级服务器的话题,但我会把这个问题留到另一个讨论中)。

配置 ON-Bar

配置 ON-Bar 包括设置 ON-Bar 以与存储管理器交互、设置 ON-Bar 文件本身,以及设置所有 onconfig 参数让 ON-Bar 运行。请参阅 图 3,获取 ON-Bar 配置文件列表。

设置 ON-Bar 时,要查看的第一个文件是 $INFORMIXDIR/etc 中的 sm_versions 文件。该文件将存储管理器定义到 ON-Bar。该文件中的缺省行将是 ISM(存储管理器的 Informix 部分),它将明确告诉您要将什么放到这个文件中。

$INFORMIXDIR/bin 中的实际 ON-Bar 命令是一个脚本(对于 V8.2、V7.3 以及更高版本)。这是设置某些环境变量的好地方,而这些变量是让 ON-Bar 运行所需的任何特定于存储管理器的环境变量。如果正在运行 Informix Extended Parallel Server™(XPS),另一个设置环境变量的地方就是 $INFORMIXDIR/etc/start_worker.sh 文件。当日志满了,或者 ON-Bar 需要启动另一个工作线程(worker thread)时,会调用这个文件。

onconfig 文件中的一些参数控制 ON-Bar 的操作(请参阅 图 4)。以下将讨论应当更改其缺省值的参数。

  • BAR_ACT_LOG是 ON-Bar 日志文件的完全路径名称。这个文件通常叫作 bar_act.log。示例是 BAR_ACT_LOG /Informix/logs/bar_act.log
  • BAR_BOOT_DIR是包含紧急引导文件的目录的路径名称。除非您移动它们,否则这个目录是 $INFORMIXDIR/etc。示例是 BAR_BOOT_DIR /usr/Informix/etc
  • BAR_RETRY是如果 ON-Bar 进程一开始就失败,在放弃之前重试该进程的次数。我通常将这个值设置为 0,因为 ON-Bar 进程的失败通常表示有其它东西出错了,重试不起作用。示例是 BAR_RETRY 0
  • BAR_PROGRESS_FREQ控制 ON-Bar 将进展写到 bar_act.log 文件的频繁程度。我让它保留为 0,除非需要进一步调试。缺省情况下,ON-Bar 会将大量数据写到日志文件中。
  • BAR_WORKER_MAX直接控制 ON-Bar 中并行操作的数量。这包括当运行备份或恢复时,要启动多少进程 — 如果太多,机器就会停机,如果太少,备份所花的时间将超过它们本该花费的时间。DLT 磁带机在性能下降之前可以接受 10 个进程,而普通的 8mm 磁带机只能接受五个。

通过实验确定这个参数,因为您的存储管理器/磁带机设置可能会不同。正确设置这个数字是 ON-Bar 性能的关键 — 在收益递减之前,您希望它尽可能高。 一个重要的注意事项:确保存储管理器的并行性设置等于这个数字,否则您启动的 ON-Bar 进程数量将超过存储管理器能够处理的数量(在 ISM 中,这是流设置)。每个 ON-Bar 工作线程将处理一个数据库空间或日志文件。

  • BAR_IDLE_TIMEOUT是在异常中止空闲进程之前,ON-Bar 将等待多少分钟。将这个参数设置得太高会导致在备份完成之后,许多 ON-Bar_w 进程仍在挂起等待。
  • BAR_BSALIB_PATH应当由您的存储管理器供应商向您提供。它是一个路径,通向用于与存储管理器通信的库。
  • ISM_DATA_POOL是一个缺省池,数据库空间备份将从存储管理器写到这个缺省池。请参阅下面 ISM_LOG_POOL 的注释。
  • ISM_LOG_POOL是一个缺省池,逻辑日志备份将从存储管理器写到这个缺省池。我总是将日志和数据发送到同一个池中。这让我不必将一个磁带机专用于逻辑日志备份,它还帮助我维护存储管理器中的容量,因为只需要跟踪一组磁带。当需要恢复时,将日志和数据在一次操作中恢复也会使速度快很多。

运行备份

配置了 ON-Bar 之后,运行备份就非常简单。运行备份的命令是 onbar -b -L,其中级别是上面所述的 0、1、2。这将启动您在 $ONCONFIG 文件中所配置数目的进程。在备份结束时,ON-Bar 将备份它需要的所有日志文件。大多数存储管理器让您可以从它们的管理系统中启动备份。这让您可以使用调度系统从存储管理器启动备份,或者使用诸如 cron 之类的程序来调度您的备份。

ON-Bar 还有一个“-w”标志,该标志会告诉它以单线程方式运行。这样将运行单个 ON-Bar 进程,并且串行地备份您的数据库空间。(除了我还有谁想到用这种方式呢 — ON-Bar 的优点就是它的并行体系结构。当然,如果您有充足的时间,并且要让您的经理确信您确实正在工作,那么这个选项也许适合您。)

监控备份和恢复

当 ON-Bar 正在运行时,有几种方法可以监控备份和恢复。最简单的方法就是只对 bar_act.log 文件运行 tail -f(请参阅 图 6)。

该文件提供了大量信息。如果它连接到存储管理器,那么它将告诉您正在备份什么,以及已经完成了哪些空间,这些正是您需要知道的信息。与 ON-Bar 相关的存储管理器问题往往会在这里出现。我通常会建立一个 shell,别名叫做“tailbar”,就为了运行这个命令(这个名称很容易让您知道用途)。

要查看的另一个文件是消息日志。这个文件也提供了关于 ON-Bar 进程运行的信息online.log 文件是 bar_act.log 文件的简略版本。它只告诉您哪些已经启动了以及哪些已经完成了。涉及 ON-Bar 的系统错误消息通常都出现在这里。

监控 ON-Bar 进程的最后一个选项是使用存储管理器实用程序。如果使用 ISM,那么这就是“ism_watch”命令,它将向您显示哪些磁带正在处理哪些数据库空间,以及它们写操作的速度。

验证备份

要在运行备份之后验证它们,使用 onbar -v选项。这将验证您运行的最后一次备份。运行这个选项时,确保已经准备好所需的磁带,并且已经挂装到磁带机中。如果希望验证最后一次运行的备份之前的备份,使用 onbar -v -t命令。这样只验证数据库空间的备份。它不会验证逻辑日志的备份。强烈建议您要经常验证备份,因为磁带很容易会损坏,而且在恢复时才发现备份无效可能会妨碍您的前程。

运行恢复

ON-Bar 提供两种类型的恢复:逻辑恢复(恢复逻辑日志)和物理恢复(恢复数据库空间)。运行恢复时,通常这两样都要做。幸好,这是 ON-Bar 的缺省操作方式。

要运行恢复,使用 onbar -r命令,它将恢复您所有拥有的任何当机数据库空间。如果在引擎当机时运行,它将试图从最新的备份恢复整个系统。这个命令有几个选项,如 -f,它从文件中获取数据库空间列表进行恢复,或者只用 onbar -r,这将恢复指定的数据库空间。

如果需要从以前的备份恢复,运行 onbar -r -t命令将允许您恢复到某个时间点。注:这个时间点不能发生在备份的中间,而且必须发生在备份之后。时间点恢复将把整个系统恢复到该时间点。它会从您拥有的该时间点之前的物理备份恢复,然后将日志恢复到您指定的时间。这可以让您避免用户错误,但这样做非常慢,而且相当费力。您还要将其它所有表都设置回该时间点 — 不只是发生了逻辑错误的那个表。

使用时间点恢复的一个重要注意事项:准备好从该时间点恢复所需的备份的所有磁带,一直到从发出命令时所拥有的任何逻辑日志磁带。ON-Bar 需要扫描从备份时间到当前时间之间的“所有”逻辑日志。预先准备好这些磁带可以节省您数小时。

Onbar常用命令

1,备份命令

Onbar -b -L [0|1|2] (标准备份)

Onbar -b -O (重设错误检查)

Onbar -b -w (整个系统备份,IDS)

Onbar -b -F (伪备份,IDS)

Onbar -b -p (物理备份,XPS)

Onbar -b -l (紧备份逻辑日志)

Onbar -b -l -s (日志抢救)

Onbar -b -l -c (备份包含当前日志,IDS)

Onbar -b -c -C (连续日志备份,IDS)

Onbar -v (验证备份)

Onbar -b -v (备份并验证)

2,恢复操作命令

Onbar -r 并行恢复

Onbar -r -p 物理恢复

Onbar -r -O 重设错误检查

Onbar -r -t 时间点恢复

Onbar -r -n 日志点恢复,IDS

Onbar -r -w 整个系统的恢复,IDS

Onbar -RESTART 可重新开始的恢复,IDS

Onbar -r rename 重命名块恢复,IDS

几个NETWORKER的常用命令:

mminfo 报告存储卷的内容和模式或存储的存储集的标识号和状态。

-v 显示较多的附加信息。

-a 报告所有存储集的信息。

-c 指定显示一个客户端。

-m 显示在媒介库中的所有卷。

-s指示要显示的服务名称。

-N 报告所指定存储集或卷中的信息。

-t 指定时间点的显示。

-V 显示更多的附加信息。

scaner

-m 设备为存储卷内的所有内容重建媒体数据库项。

-i 设备为存储卷内的所有内容重建媒体数据库和客户机文件索引项。

-S 存储集 ID -m 设备为存储卷内的特定存储集重建媒体数据库项。

-S 存储集 ID -i 设备为存储卷内的特定存储集重建媒体数据库和客户机文件索引项。

-c client_name 只处理来自指定 NetWorker 客户机的存储集。

-N 存储集名只处理由存储集名 指定的存储集。

-S 存储集 ID 向标准输出发送一个特定的存储集。

-x 针对每个存储集引入进一步的处理命令。

-B 在卷上定位引导数据库存储集。

nsrmm 媒介库管理命令,用来管理卷、存储集和设备。

-B 认证卷名在池内的状态。

-b 指定池名。

-C 显示设备名和当前mount的卷。

-c 指定当前卷的容量。

-d 删除客户端的文件索引和媒介数据库中的条目。

-e 设定一个浏览的时间和S一起使用。

-f 指定要设置的设备。

-j 从设备中弹出卷。

-l 标识一个新卷。

-m 加载一个已经标识的卷。

-o 设置一个卷的模式,[not]recyclable, [not]readonly, [not]full, [not]manual or [not]suspect.

–p认证和打印卷标。

-R 重新标识一个卷,将清除所有先前保存在这个卷上的索引。

-r 以只读方式mount一个卷。

-s 指定服务名。

-S 指定一个存储集的id号以做为删除或改变模式。

-u 卸载掉一个卷。

-V 指示一个卷集的名字用来改变或删除,也可不带V。

-w指定一个浏览期限。

-y 所有的回答为y。

恢复

onbar支持冷恢复和热恢复,冷恢复即informix处于down状态下执行的恢复操作;与之对应的热恢复,是在informix在线工作时执行的恢复操作,热恢复只能适用于那些非关键的dbspace。

onbar恢复有物理恢复和逻辑恢复两种类型,物理恢复直接把数据从备份介质拷贝到informix dbspace中,逻辑恢复利用逻辑日志中保存的信息重做交易,这样就能够把数据库恢复到发生故障的时间点。

onbar与恢复有关的几个参数:
-r:必须的参数,指明onbar执行恢复操作;
-n last_log_number:指明数据库恢复到last_log_number所指定的逻辑日志,之后发生的交易不会恢复;
-t time:指明数据库恢复到time所指定的时间点;
-l:指示仅执行逻辑恢复,必须之前刚执行过一次物理恢复(informix处于Fast Recovery状态),才允许使用该参数;
-w:执行全系统恢复,onbar自动从最近的一次完整备份恢复物理数据,并接着执行逻辑恢复;
-p:执行物理恢复,之后必须跟着一个逻辑恢复,这样数据库才会切换至可用状态(Online状态);
dbspace_name:指明需要恢复的informix dbspace,onbar可以单独恢复一个dbspace;
-f file_w_names:恢复file_w_names文件中所列的informix dbspace。

onbar使用的例子:
+ 恢复那些被informix标志成Down状态的dbspace,包括逻辑日志中记录的交易:
$ onbar -r
+ 恢复那些被informix标志成Down状态的dbspace,但只包含其中的物理数据:
$onbar -r -p
+ 接着执行逻辑恢复:
$onbar -r -l
+ 恢复特定的dbspace:
$onbar -r my_blobspace my_dbspace1 my_dbspace2
+ 硬盘故障,但逻辑日志还能访问,在执行恢复之前,先备份所有未备份的逻辑日志:
$onbar -l -s

onbar有关的几个onconfig配置参数
BAR_ACT_LOG:onbar命令的工作日志,onbar命令本身没有任何的用户输入和输出,这些信息都放在BAR_ACT_LOG所指定的文件中,缺省值是/tmp/bar_act.log。
BAR_MAX_BACKUP:onbar命令自动产生的并发备份线程数,缺省值是0,没有限制。

作者: admin

为您推荐

返回顶部