DB2 的恢复模型
可以与 DB2 中的地理数据库搭配使用的是版本恢复(使用循环记录);向前滚动恢复(使用存档记录);或高可用性灾难恢复 (HADR)。
恢复 ArcSDE for DB2 for z/OS 地理数据库时,请确保恢复构成 ArcSDE 地理数据库的所有数据库。
- 版本恢复和循环记录
循环记录使用环形日志文件来记录对数据库所做的更改。当环中的最后一个日志文件被填满时,将重新使用第一个文件。由于可以覆盖事务信息,使用循环记录时,将无法进行向前滚动恢复;不过,在数据加载过程中通常不需要进行恢复。循环记录为默认记录模型。
- 向前滚动恢复和存档记录
如果想使用向前滚动恢复(建议 ArcSDE 地理数据库使用的恢复方法),请使用存档记录。存档记录不会覆盖日志文件;而是会创建单独的日志来记录自上次备份之后发生的所有事务。使用存档记录将需要更多的磁盘空间,因为日志文件不会象在循环记录中那样被重新使用。
- HADR
高可用性灾难恢复是 DB2 中可用的数据库复制要素,其通过将源(主)数据库的数据更改复制到目标数据库(备用数据库)中来保护数据。如果主数据库出错,恢复主数据库时可以切换至备用数据库。
可以为 HADR 指定以下其中一种同步模式:同步、接近同步或异步。
在同步模式下,直到相关日志被写入备用数据库上的事务日志中后,才会将对主数据库所做的更改提交到主数据库。这样,这两个数据库将保持同步,因为未保存到备用数据库日志文件中的更改未进入主数据库(因此可以恢复)。此模式对主数据库的性能影响最大。
对于接近同步模式,直到相关日志被写入备用数据库内存中时,才会将对主数据库所做的更改提交到主数据库。其效果与同步模式几乎相同,且对主数据库的影响更小。不过,如果数据提交到主数据库后,备用数据库出错,则转换的数据可能会丢失,最后产生的这两个数据库可能会不一致。
主数据库上的数据库事务 COMMIT 不受日志记录与备用数据库通信的影响。在此模式下,这两个数据库之间的数据更有可能会不一致。还有其他一些适用于 DB2 的复制选项,包括 SQL 复制和 Q 复制。有关详细信息,请参阅 DB2 文档。
要恢复地理数据库,可使用“DB2 控制中心”的 RECOVER DATABASE 命令或“恢复数据”向导。可将地理数据库恢复为某个现有数据库或新数据库。以下是有关恢复为新数据库的注意事项:
- 如果要恢复为某个新数据库,必须连接到此数据库。
- 如果要恢复为其他服务器上的某个新数据库,且源和目标服务器未使用默认代码页,则在执行恢复前需要在目标计算机上使用正确的代码面创建数据库。如果不这样做,并且生产代码页不同于源代码页,则还原工具将采用默认代码页。这将产生 SQL2548N 错误。
- 恢复为某个新数据库时,备份镜像中的恢复历史文件将成为该新数据库的恢复历史文件。
对可恢复数据库执行完全数据库恢复时,除了恢复数据库时建立的连接外,数据库不可能有其他连接。恢复完整数据库备份后,DB2 会进行检查以确保备份镜像中引用的全部表空间均位于要恢复数据的数据库中。(其可能是一个现有数据库,也可能是一个新的空数据库。)如果发现表空间丢失或不能访问,则恢复操作将失败。
要避免出现此问题,可以执行重定向的恢复操作。将允许您指定新的表空间,您可以从备份镜像中将目标数据库中丢失的表空间恢复到此新的表空间中。有关如何执行重定向恢复的详细信息,请参阅 DB2 文档。
如果仅恢复可恢复数据库的单个表空间,则数据库可以保持在线状态,只要用户未与正尝试恢复的表空间相连即可。
提示
- 您可使用用户退出程序自动存档和检索日志文件。要使用此工具,必须将 logarchmeth1 配置参数设置为 USEREXIT。
有关如何开发和使用用户退出程序的详细信息,请参阅 DB2 文档。
- 如果数据库已分区,则必须在目录分区中运行 RECOVER DATABASE 命令。将经过分区的数据库恢复为某个特定时间点的状态时,db2nodes.cfg 文件中列出的所有分区都会受到影响。恢复到日志末尾时,可以指定恢复操作所影响的分区。如果不指定特定的分区,则 db2nodes.cfg 文件中的所有分区都会受到影响。