初始化高可用性灾难恢复 (HADR)

使用此过程来设置和初始化 Db2® 高可用性灾难恢复 (HADR)。 无论您是使用单个备用数据库,多个备用数据库还是 Db2 pureScale® 功能部件,该过程都类似。

准备工作

如果要在 Db2 pureScale 环境中设置 HADR ,或者如果要使用多个备用数据库,那么需要在所有参与数据库上设置 hadr_target_list 配置参数。 此参数列示在该数据库成为主数据库的情况下的备用数据库。 即使在备用数据库上此参数也是必需的。 相互包含是必需的(即,如果 A 的目标列表中有 B,那么 B 的目标列表中也必须有 A)。 这确保在从任何备用数据库进行接管后,新主数据库总是可以保留旧主数据库作为其备用数据库。

如果要配置多个备用数据库,那么您在目标列表中指定的第一个备用数据库将指定为主 HADR 备用数据库。 其他备用数据库为辅助 HADR 备用数据库。 目标列表不必始终包含所有参与者。 并且,如果有多个备用数据库,那么不需要对称或对等;即使将数据库 B 指定为数据库 A 的主体备用数据库,也不必将数据库 A 指定为数据库 B 的主体备用数据库。 对于在数据库 A 的目标列表中指定的每个备用数据库,其目标列表中也必须指定数据库 A。 处理每个数据库的目标列表是一个重要步骤。

如果要在 Db2 pureScale 环境中配置 HADR ,请使用 hadr_target_list指定远程集群。 您并不需要在该远程集群中列示每个成员,但应该始终包括首选重放成员。 对于较小的集群,建议您包括所有成员,而在较大的集群中,包括部分成员就足够了,只要列示的成员是最有可能处于联机状态的成员。

如果要从备用数据库上的表空间错误或表空间不可用性中恢复,请参阅 恢复 HADR 备用数据库上的表空间错误

关于本任务

HADR 仅在配置了 归档日志记录的数据库上受支持。 如果您的数据库当前配置了 循环日志记录,那么必须首先更改 logarchmeth1 和/或 logarchmeth2 数据库配置参数。 数据库更改为使用归档日志记录之前,需要对数据库进行脱机备份。

可以通过命令行处理器 (CLP) 或通过调用 db2HADRStart API 来初始化 HADR。 一般的过程如下:生成主数据库的备份,将该备份复原到备用数据库,设置各种 HADR 配置参数,然后发出 START HADR 命令。 主数据库的备份可以是联机备份。 从 Db2 版本 11.1.2.2开始,主数据库的备份也可以是使用 数据库重建 功能部件复原的一系列表空间备份映像。
注: 这是通用 HADR 设置; 有关更高级的配置选项和设置,请参阅相关链接。

过程

要使用 CLP 以在系统上首次初始化 HADR:

  1. 确定每个 HADR 数据库的主机名、主机 IP 地址和服务名称或端口号。

    如果主机使用多个网络接口,请确保 HADR 主机名或 IP 地址映射至预期的接口。 您需要在 /etc/services 中为每个受保护数据库分配不同的 HADR 端口。 这些端口不能与分配给实例的端口相同。 主机名只能映射至一个 IP 地址。

    要确定主机名,请参阅 LIST DATABASE DIRECTORY 命令。 要确定主机 IP 地址、服务名称和端口号,请参阅 LIST NODE DIRECTORY 命令。

    注: 主数据库和备用数据库的实例名称不必相同。
  2. 在主数据库上设置针对 HADR 环境所建议或必需的所有配置参数,以便那些设置将存在于您在下一个步骤中创建的所有备用数据库上。
    例如,通过发出以下命令,启用建议的日志记录和索引重新创建行为以及阻止非记录的活动行为:
    "UPDATE DB CFG FOR dbname USING
         LOGINDEXBUILD   ON
         BLOCKNONLOGGED YES"
  3. 通过复原备份映像或初始化分割镜像,根据要作为主数据库的现有数据库来创建备用数据库。
    选项 描述
    备份和复原方法
    在以下示例中, BACKUP DATABASERESTORE DATABASE 命令用于初始化备用数据库。 在此情况下,共享文件系统在两个站点上是可访问的。
    1. 在主数据库上,联机发出以下命令:
      BACKUP DB dbname
    2. 如果在备用实例上已存在数据库,请将其删除,以便从头开始。 现有数据库中的文件可能会干扰 HADR 操作。 例如,遗留日志文件可能会将备用数据库引导到与主数据库不兼容的日志链上。 发出以下命令以删除数据库:
      DROP DB dbname
    3. 如果备用实例上已存在数据库,那么归档中可能有日志文件,如果主数据库与备用数据库之间未共享日志归档,那么首先从备用实例将它们移除。
    4. 在每个备用实例上,发出以下命令:
      RESTORE DB dbname

    设置备用数据库时,应该避免使用下列 RESTORE DATABASE 命令选项:TABLESPACEINTOREDIRECTWITHOUT ROLLING FORWARD

    注: 如果在启用了自动存储器的多个存储路径上定义了主数据库,那么防止 在复原期间重新平衡很重要。 这可以通过使用 RESTORE DATABASE 命令的 ON path-list 选项,指定与主数据库顺序相同的存储路径集 (可以通过 db2pd -db dbname -storagepaths 命令找到顺序) 来实现。 ON path-list 选项的目的是防止重新平衡,而不是让备用数据库使用另一组存储路径。

    联机分割镜像方法

    以下示例举例说明,如何通过主数据库的分割镜像来使用 db2inidb 实用程序来初始化备用数据库。 此过程是上述备份和复原过程的替代方案。

    在备用数据库上发出以下命令:
    DB2INIDB dbname AS STANDBY

    请勿使用 db2inidb 实用程序的 SNAPSHOTMIRROR 选项。 可以指定 RELOCATE USING 选项以更改下列其中一个或多个配置属性:实例名称、日志路径和数据库路径。 但是,切勿更改数据库名或表空间容器路径。

    脱机分割镜像方法
    以下示例举例说明,如何通过主数据库的脱机分割镜像来使用 db2rfpen 实用程序来初始化备用数据库。 此过程是上述备份和复原过程或者联机分割镜像过程的替代方案。
    1. 必须在全新数据库关闭之后完成分割镜像备份。 全新数据库关闭意味着数据库未处于崩溃恢复暂挂状态。
    2. 在备用实例上,复原脱机分割镜像备份。
    3. 在备用实例上,发出 db2rfpen 命令:
      db2rfpen on dbname
    注: 主数据库和备用数据库的数据库名称必须相同。
  4. 设置特定于 HADR 的配置参数。 对于 Db2 pureScale 环境,请遵循 这些步骤
    • Db2 pureScale以外的环境:
      1. 在主数据库和备用数据库上,设置 hadr_local_hosthadr_local_svchadr_syncmode 配置参数:
        "UPDATE DB CFG FOR dbname USING
        	HADR_LOCAL_HOST   hostname
        	HADR_LOCAL_SVC    servicename
        	HADR_SYNCMODE     syncmode"
        注: 设置 hadr_target_list 时, hadr_syncmode 是主体备用数据库在成为主数据库时使用的方式。 辅助备用数据库始终使用 SUPERANSYNC 作为其有效同步方式。
      2. 在主数据库和备用数据库上,设置 hadr_target_list 配置参数:
        UPDATE DB CFG FOR dbname USING
        	HADR_TARGET_LIST  principalhostname:principalservicename|auxhostnameN:auxservicenameN1

        如果未设置 hadr_target_list 参数,那么将限制为一个备用数据库。 从 V 10.5开始,不推荐使用此配置 HADR 的方法。

        如果要设置多个备用数据库,那么列示的第一个数据库将被指定为主体备用数据库。

      3. 在主数据库和备用数据库上,设置 hadr_remote_hosthadr_remote_svchadr_remote_inst 配置参数。
        在主数据库上,通过发出以下命令将这些参数设置为备用数据库(如果您配置多个备用数据库,那么为主体备用数据库)上的相应值:
        "UPDATE DB CFG FOR dbname USING
        	HADR_REMOTE_HOST   principalhostname
        	HADR_REMOTE_SVC    principalservicename
         	HADR_REMOTE_INST   principalinstname"
        
        在备用数据库上,通过发出以下命令将这些参数设置为主数据库上的相应值:
        "UPDATE DB CFG FOR dbname USING
        	HADR_REMOTE_HOST   primaryhostname
        	HADR_REMOTE_SVC    primaryservicename
        	HADR_REMOTE_INST   primaryinstname"
        

        如果已配置 hadr_target_list,那么在必要时将自动修正这些值;然而,显式地将它们设置为正确值可使正确值立即可用。 IBM® Tivoli® System Automation for Multiplatforms (SA MP) 软件使用这些值来构造资源名称。 因此,如果您正在使用 SA MP,那么必须在启用 SA MP之前正确设置这些值。

    • Db2 pureScale 环境:
      1. 在主数据库和备用数据库上,设置这些集群级别配置参数:hadr_target_listhadr_syncmode:
        "UPDATE DB CFG FOR  dbname USING
        	HADR_TARGET_LIST   {memhostname1:memservicename1|memhostnameN:memservicenameN}
        	HADR_SYNCMODE      syncmode"
        以下示例显示了该命令:
        db2 "UPDATE DB CFG FOR hadr_db USING
             HADR_TARGET_LIST  {s0:4000|s1:4000|s2:4000|s3:4000}
             HADR_SYNCMODE     async"
        hadr_target_list 参数将列示远程集群的成员。 必须将集群的成员括在花括号 {} 内。 只需要部分远程集群成员地址。

        hadr_remote_hosthadr_remote_svchadr_remote_inst 配置参数在 Db2 pureScale 环境中自动配置,因此它们可以保留为空白 (逻辑上为 NULL)。 有关自动配置的更多信息,请参阅 此部分

      2. 在主数据库和备用数据库上的每个成员上,设置下列成员级别的配置参数:hadr_local_hosthadr_local_svc
        "UPDATE DB CFG FOR dbname MEMBER mname USING
        	HADR_LOCAL_HOST   memhostname
        	HADR_LOCAL_SVC    memservicename"
        以下示例显示了该命令:
        • 对于成员 0:
          db2 "UPDATE DB CFG FOR hadr_db MEMBER 0 USING
               HADR_LOCAL_HOST   p0
               HADR_LOCAL_SVC    4000"
        • 对于成员 1:
          db2 "UPDATE DB CFG FOR hadr_db MEMBER 1 USING
               HADR_LOCAL_HOST   p1
               HADR_LOCAL_SVC    4000"
        • 对于成员 2:
          db2 "UPDATE DB CFG FOR hadr_db MEMBER 2 USING
               HADR_LOCAL_HOST   p2
               HADR_LOCAL_SVC    4000"
        • 对于成员 3:
          db2 "UPDATE DB CFG FOR hadr_db MEMBER 3 USING
               HADR_LOCAL_HOST   p3
               HADR_LOCAL_SVC    4000"
  5. 连接到备用数据库实例,并在备用数据库上启动 HADR。 在 Db2 pureScale 环境中,确保从要指定为首选重放成员的成员启动 HADR。
    START HADR ON DB dbname AS STANDBY
    注: 通常,首先启动备用数据库。 如果先启动主数据库,那么当未在 hadr_timeout 数据库配置参数指定的时间段内启动备用数据库时,此启动过程将失败。
    备用数据库在启动后会进入本地同步复制状态,在此状态下,将读取和重放本地的可用日志文件。 在备用数据库重放所有本地日志后,它将进入远程同步复制暂挂状态。
  6. 连接到主数据库实例,并在主数据库上启动 HADR。 在 Db2 pureScale 环境中,确保从要指定为首选重放成员的成员启动 HADR。
    START HADR ON DB dbname AS PRIMARY
    在主数据库启动之后,备用数据库将进入远程同步复制状态,它将在此状态下接收来自主数据库的日志页并重放这些页面。 在重新播放主数据库机器的磁盘上的所有日志文件之后,这两个数据库都进入对等状态(除非 SUPERASYNC 是同步方式)

后续操作

通过使用 MON_GET_HADR 表函数 (在主备用数据库或已启用读的备用数据库上) 或带有 -hadr 选项的 db2pd 命令,确保 HADR 已启动并正在运行。

有关更多信息和示例,请参阅用户方案 Db2 pureScale 环境中部署 HADR

1 如果要设置多个备用数据库,那么只能在目标列表中指定多个数据库。