发行说明


|10.1 第 8 章 恢复数据库

|10.1.1 如何使用暂挂 I/O

| | | | |

|在『第 8 章 恢复数据库』中,已添加并更新了有关使用暂挂 I/O 功能的一节,如下所示:

|注意:
下面关于 db2inidb 实用程序的信息优先于《版本 7.2 新增内容》一书中的信息。 |

|db2inidb 是 DB2 附带交付的新工具,可执行应急恢复并让数据库处于前滚暂挂状态。

|暂挂 I/O 支持持续的系统可用性,方法是完全实现联机分割镜像处理,即分割镜像而不关闭数据库。如果客户无法负担对大型数据库的脱机或联机备份,可通过使用暂挂 I/O 和分割镜像来从镜像映象中完成备份或系统复制。

|暂挂 I/O 避免了磁盘写操作,以确保数据库的分割镜像映象保持一致。除了联机备份和复原之外,所有数据库操作在数据库暂挂期间也都应正常工作。但是,某些操作可能会在尝试将缓冲池或日志缓冲池中的脏页清仓至日志时挂起。一旦数据库 I/O 恢复,这些操作就应恢复正常。数据库 I/O 从它最初暂挂的同一连接恢复是很重要的。而且,如果它需要将缓冲池中的脏页清仓至磁盘,后续连接尝试可能会挂起。

|镜像数据库主要包括复制数据库目录的整个内容。还需要复制日志目录和所有表空间容器,如果它们不在数据库目录中的话。因为分割镜像数据库独立于这些目录路径,所以这些目录复制至的路径必须与主系统中的路径完全相同。这暗示实例也必须是相同的。由于存在这种从属关系,不可能镜像主数据库所在系统上的数据库,除非使用 |db2inidb 工具的新选项“重定位”。

|“重定位”选项的目的在于使用指定的配置文件在给定系统上重定位数据库。这可能包括更改内部数据库目录、容器目录名、日志目录、更改实例名和更改数据库名。假定数据库目录、容器目录和日志目录已成功镜像至主数据库所在系统上的不同目录路径,可将 |db2inidb 工具与“重定位”选项配合使用来更新镜像数据库的内部路径。可以下文中找到带有此选项的使用方案。

|根据镜像存储设备的方式,使用 db2inidb 的方式也将发生变化。以下用法假定整个数据库在存储器系统中是一致镜像的。

|在多节点环境中,db2inidb 工具一定要在每个分区上运行,才能从任何分区上使用分割映象。db2inidb 工具可同时在所有分区上运行。

| |

  1. |制造克隆数据库

    |此处的目标是克隆主数据库以用于只读用途。下列过程描述如何克隆数据库:

    1. |输入以下命令以暂挂主数据库上的 I/O 写操作:
      |     db2 set write suspend for database
    2. |使用操作系统级别命令来从主数据库中分割镜像。
    3. |输入以下命令以恢复主数据库上的 I/O 写操作:
      |     db2 set write resume for database

      |运行命令后, |主数据库应返回正常状态。

    4. |从另一系统安装数据库的分割镜像。
    5. |输入以下命令来启动数据库实例:
      |       db2start
    6. |输入以下命令来启动 DB2 应急恢复:
      |db2inidb database_name AS  SNAPSHOT
      
      |注意:
      此命令将除去暂挂写状态,并回滚由分割时在运行的事务所作的更改。 |
      |

    |还可对脱机备份使用此进程,但如果在主数据库上复原,则不能使用此备份来进行前滚,原因是日志链不匹配。 |

  2. |将“分割镜像”用作备用数据库

    |因为镜像(备用)数据库会持续前滚日志,所以会经常从主系统访存主数据库创建的新日志。以下过程描述如何将分割镜像用作备用数据库:

    1. |在主数据库上暂挂 I/O 写操作。
      |	db2 set write suspend for database
    2. |使用操作系统级别命令来从主数据库中分割镜像。
    3. |在主数据库上恢复 I/O 写操作以便它返回正常处理。
      |	db2 set write resume for database
    4. |将数据库的分割镜像安装至另一系统。
    5. |将镜像置于前滚暂挂状态,并前滚镜像。
      |	db2inidb database_name AS STANDBY

      |注意:
      此命令将除去暂挂写状态,并将镜像数据库置于前滚暂挂状态。 |
    6. |通过设置用户出口程序以从主系统检索日志文件来复制日志,以确保最新的日志可供此镜像数据库使用。
    7. |将数据库前滚至日志末尾。
    8. |返回至步骤 f,重复此进程直到主数据库关闭为止。 |

    |

  3. |将分割镜像用作备份映象

    |下列过程描述如何将镜像数据库用作备份映象来覆盖复原主数据库:

    1. |使用操作系统命令在主数据库的顶端复制镜像数据和日志。
    2. |输入以下命令来启动数据库实例:
      |       db2start
    3. |运行以下命令以将镜像数据库置于前滚暂挂状态,并除去暂挂写状态。
      |db2inidb database_name AS MIRROR
    4. |将数据库前滚至日志末尾。 |
    |
  4. |将镜像分割到主数据库所在的同一系统上

    |下列过程描述如何使用 db2inidb 工具的“重定位”选项将数据库镜像到主数据库所在的同一系统上。示例假定将在新实例中使用该数据库。

    1. |在当前系统上创建新实例。
    2. |在主数据库上暂挂 I/O 写操作。
      |	db2 set write suspend for database
    3. 使用操作系统级别命令来从主数据库中分割镜像。
      |注意:
      必须将数据库目录、容器目录和日志目录复制至不同目录。如果容器目录或日志目录在数据库目录下,则只需要复制数据库目录。 |
    4. |恢复主数据库上的 I/O 写操作,以便它返回正常处理。
      |	db2 set write resume for database
    5. |使用下列信息来创建配置文件:
      | DB_NAME=<name>,<optional new name>
      | DB_PATH=<primary db dir path>,<mirrored db dir path>
      | INSTANCE=<primary instance>,<mirror instance>
      | LOG_DIR=<primary db log dir>,<mirrored db log dir>
      | CONT_PATH=<primary db container #1 path>,<mirrored db container #1 path>
      | ...
      | CONT_PATH=<primary db container #n path>,<mirrored db container #n path>
      | NODENUM=<node #>

      |注意:
      仅当日志目录和容器目录在数据库目录外部时,才需要 LOG_DIR 和 CONT_PATH 字段。所有其他字段都是必需的,但 NODENUM 除外,它将缺省为零(如果未指定的话)。 |
    6. |从新创建的实例启动数据库。
      |	db2start
    7. |重定位镜像数据库,除去暂挂状态并将镜像置于前滚暂挂状态:
      |	db2inidb database_name as STANDBY relocate using config_file
    8. |通过设置用户出口程序以从主数据库检索日志文件来复制日志,以确保最新的日志可供此镜像数据库使用。
    9. |将数据库前滚至日志末尾。
    10. |返回至步骤 h,重复此进程直到主数据库关闭为止。 |
    |


[ 页的顶部 | 上一页 | 下一页 | 目录 | 索引 ]