|在『第 8 章 恢复数据库』中,已添加并更新了有关使用暂挂 I/O 功能的一节,如下所示:
|db2inidb 是 DB2 附带交付的新工具,可执行崩溃恢复并让数据库处于前滚暂挂状态。
|暂挂 I/O 支持持续的系统可用性,方法是完全实现联机分割镜像处理,即分割镜像而不关闭数据库。如果客户无法负担对大型数据库的脱机或联机备份,可通过使用暂挂 I/O 和分割镜像来从镜像映象中完成备份或系统复制。
|暂挂 I/O 避免了磁盘写操作,以确保数据库的分割镜像映象保持一致。除了联机备份和复原之外,所有数据库操作在数据库暂挂期间也都应正常工作。但是,某些操作可能会在尝试将缓冲池或日志缓冲池中的脏页清仓至日志时挂起。一旦数据库 I/O 恢复,这些操作就应恢复正常。数据库 I/O 从它最初暂挂的同一连接恢复是很重要的。而且,如果它需要将缓冲池中的脏页清仓至磁盘,后续连接尝试可能会挂起。
|镜像数据库主要包括复制数据库目录的整个内容。还需要复制日志目录和所有表空间容器,如果它们不在数据库目录中的话。因为分割镜像数据库独立于这些目录路径,所以这些目录复制至的路径必须与主系统中的路径完全相同。这暗示实例也必须是相同的。由于存在这种从属关系,不可能镜像主数据库所在系统上的数据库,除非使用 |db2inidb 工具的新选项“重定位”。
|“重定位”选项的目的在于使用指定的配置文件在给定系统上重定位数据库。这可能包括更改内部数据库目录、容器目录名、日志目录、更改实例名和更改数据库名。假定数据库目录、容器目录和日志目录已成功镜像至主数据库所在系统上的不同目录路径,可将 |db2inidb 工具与“重定位”选项配合使用来更新镜像数据库的内部路径。可以下文中找到带有此选项的使用方案。
|根据镜像存储设备的方式,使用 db2inidb 的方式也将发生变化。以下用法假定整个数据库在存储器系统中是一致镜像的。
|在多节点环境中,db2inidb 工具一定要在每个分区上运行,才能从任何分区上使用分割映象。db2inidb 工具可同时在所有分区上运行。
|此处的目标是克隆主数据库以用于只读用途。下列过程描述如何克隆数据库:
| db2 set write suspend for database
| db2 set write resume for database
|运行命令后, |主数据库应返回正常状态。
| db2start
|db2inidb database_name AS SNAPSHOT
|因为镜像(备用)数据库会持续前滚日志,所以会经常从主系统访存主数据库创建的新日志。以下过程描述如何将分割镜像用作备用数据库:
| db2 set write suspend for database
| db2 set write resume for database
| db2inidb database_name AS STANDBY
|下列过程描述如何将镜像数据库用作备份映象来覆盖复原主数据库:
| db2start
|db2inidb database_name AS MIRROR
|下列过程描述如何使用 db2inidb 工具的“重定位”选项将数据库镜像到主数据库所在的同一系统上。示例假定将在新实例中使用该数据库。
| db2 set write suspend for database
| db2 set write resume for database
| db2start
| db2inidb database_name as STANDBY relocate using config_file