本文描述了在开放系统上使用 IBM® DB2® Universal Database™ 时配置日志传送的概念和实现。由于数据库系统对于企业成功变得越来越重要,对于全天不间断(24x7)可用性的需求也就变得前所未有地强烈。一种常见的提供 99.99%(或“四个九”)可用性的方法是实现“热”备用数据库服务器。使用备用服务器并不是个新概念;数据库管理员(DBA)们已经使用该方法多年了。通常,备用服务器需要 DBA 或操作员手工创建主系统上数据库和日志的备份,然后定期地将这些备份恢复到备用服务器上。如果主服务器发生故障,则宕机时间仅限于处理自从将最近一次备份恢复到备用服务器以来的日志文件所需的时间量。
备用服务器故障转移通常并不是自动的。相关人员必须确定启用备用服务器所花费的时间是否少于修复主系统上的原始故障所花的时间。
日志传送是什么?
日志传送(log shipping)是一种方法,它自动从主 DB2 服务器备份事务日志,并使该备份自动对备用服务器可访问。一旦将日志文件放到了备用服务器上,它就可以保持与主服务器的相对同步。
为什么要花费力气实现日志传送?
日志传送有什么好处,您为什么要花费时间设置它呢?日志传送提供了下列优点:
有没有局限?
日志传送有一些局限。与 HACMP 或 Veritas Cluster 那样的系统不同,它不提供完整的功能。但是,它也不需要额外的硬件或软件。这可以归结为一个权衡成本与可用性及复杂性的问题。对于大多数需要冗余系统,但在故障转移方案期间可以接受一些数据丢失的客户而言,日志传送是一种实用的解决方案。
只有使用附加软件,才能使日志传送彻底自动化。DBA 或操作员仍然必须在发生故障时手工地将主服务器的功能转移到备用服务器;但可以为这个故障编制脚本以最大限度地减少人为干预。用户被中断的时间,等于重播一个或多个日志文件并从任何不完整的事务回退所需时间的总和,外加重新连接用户的应用程序所需的时间。使备用数据库联机所需的时间取决于该备用服务器处理进入的日志文件的频率,以及日志文件的大小。
一旦将数据库切换到备用服务器,就必须更改客户机应用程序,使它也能指向新的服务器。或者,您可以转移该服务器的主机名和 IP 地址。
操作方面的考虑事项 — 何时重新初始化备用数据库
在 DB2 上重建索引时,会将一条日志记录写入日志,以表明该操作已启动。当备用数据库处理这条日志记录时,它不会在备用服务器上自动重建该索引。(通过设置数据库管理器 INDEXREC 配置值)可以将 DB2 配置为在其脱离前滚暂挂状态(例如,接管时)之后,第一次连接到数据库就重建索引,或者配置为在第一次尝试访问索引时进行重建。无论使用哪种方法,在发生系统故障转移时,最终用户都会察觉性能下降。防止这种情况的方法之一,是从主数据库的备份映像重新填充备用数据库,或者在重建索引时使用 I/O 暂挂和分离镜像技术进行刷新。
在主数据库上运行 DB2 装入实用程序会影响备用数据库服务器。当调用 LOAD 命令时,可以选择让装入实用程序制作所装入的表空间的备份映像,或者将备份映像的创建延迟到将来某个时间。如果选择让装入实用程序创建备份映像,则备用服务器必须有权访问装入实用程序所用的目标设备。如果选择以后再进行备份,或者在重播装入日志记录时备份映像不可用,那么备用服务器会将被装入的表空间置于恢复暂挂状态。在两种情况下,您都应该在装入操作完成后刷新备用数据库,以确保在需要进行故障转移的情况下,备用服务器上的所有数据都是可访问的。
先决条件
以下是在 DB2 上设置和配置日志传送之前必须满足的先决条件:
有哪些选项可用?
用 DB2 实现日志传送有多种方法。本文讨论了一些较为流行的方法。
在所有情况下,备用服务器都需要一个定期发出 db2 rollforward db
命令的调度作业。这个命令运行的频率决定了在故障转移情形下使备用服务器可用的速度。
这种频率还可以用作保护数据库不受应用程序错误破坏的方法。例如,如果备用服务器一直保持比主服务器落后几小时的状态,一个应用程序破坏了数据库中的数据,那么可以将数据库故障转移到备用服务器,以“回退”毁坏的数据,而对用户影响却很小。
所有日志传送配置都是用用户出口程序实现的。这是唯一可以用来在 DB2 中管理日志文件的方法。当一个日志文件满了的时候,DB2 记录器就将它归档。然后由 db2uext 可执行文件负责处理该日志文件。
日志传送是否有不同的类型?
日志传送有两种方法。在 拉出方法中,备用服务器在需要时从中央共享位置(如日志归档目标)拉出日志文件。在 推方法中,主服务器确保当它归档主日志文件时使这些日志文件驻留在备用服务器上。
DB2 将日志文件归档到用户出口程序 db2uext2
所指定的目标目录中。该用户出口程序的样本位于 DB2 实例目录 sqllib/samples/c
中。其中包括了用于磁盘、磁带和 Tivoli® Storage Manager 的示例。