IBM Cloud Docs
模式级和表级备份和复原

模式级和表级备份和复原

您可以使用 Db2 逻辑模式备份和复原功能来执行模式的完全备份,累积增量备份或增量备份,然后完全复原模式或模式中的一个或多个表。

LOGICAL BACKUPLOGICAL RESTORE 存储过程提供了灵活且轻量级的方法来备份和复原表级别数据。 虽然 LOGICAL BACKUP 存储过程未捕获数据库级别对象,但它支持以下模式备份选项:

完全
创建所选数据库模式的副本以及该模式中的所有表数据。
累积增量
创建自最近一次成功的完全备份操作以来在所选模式中更改的所有数据库数据的副本。
增量
创建自最近一次成功执行任何类型的备份操作以来在所选模式中更改的所有数据库数据的副本。

完全和增量模式级别备份为您提供对模式中表的读和并发插入,更新和删除访问权。

按列组织的表的行修改跟踪

如果要备份用于分析工作负载的按列组织的模式,那么需要在目标模式上 启用行修改跟踪。 通过在 CREATE SCHEMA 操作中包含 ENABLE ROW 修改跟踪子句,可以对按列组织的目标模式启用行修改跟踪。 您还可以通过将子句添加到 ALTER SCHEMA 语句来修改现有模式。 完成此操作后,将在启用行修改跟踪的情况下创建在目标模式中创建的任何表。 此设置允许逻辑模式备份功能从按列组织的表中捕获表数据。

缺省情况下未启用行修改跟踪。 要利用增量模式备份和复原,需要使用 ENABLE ROW 修改跟踪子句来创建显式模式。

模式中启用行修改跟踪的 Db2 对象的限制

  • db2loadINGEST 操作的 异常表 不能按列组织。 请改为在单独的模式中创建按行组织的异常表。 此表导致增量模式备份失败。 此外,按行组织的异常表必须具有与为行修改跟踪配置的按列组织的表相似的定义。 异常是 SYSROWID 列,该列不能是标识列,因为这些列在异常表中不受支持。 例如:
    • 创建模式 S1 启用行修改跟踪
    • 创建模式 S2
    • CREATE TABLE S1.T1 (C1 INT)
    • CREATE TABLE S2.LOADEXTBL (SYSROWID BIGINT NOT NULL,CREATEXID BIGINT NOT NULL,DELETEXID BIGINT NOT NULL,C1 INT)
    • 装入源 插入到 S1.T1 针对异常 S2.LOADEXTBL
  • 启用行修改跟踪的表中用户定义的最大列数减少到 1009。
  • 在表中使用 CREATE 或 REPLACE_CREATE 选项以启用行修改跟踪的 IMPORT 可能会失败。
  • 如果至少有一个表定义为 DISTRIBUTE BY RANDOM 或包含 GENERATED ALWAYS AS IDENTITY 列,那么具有 copymode "COPY" 或 "COPYNO" 的 ADMIN_COPY_SCHEMA 将失败。
  • 不支持将已启用行修改跟踪的表变更为具体化查询表。
  • 表的分布键中不支持三个新的隐藏列 (SYSROWID,CREATEXID 和 DELETEXID) (这意味着在 DISTRIBUTE BY HASH 列列表中不允许这些列)。
  • 如果源或目标是已启用行修改跟踪的模式中的表,那么不支持 db2move
  • 三个新的隐藏列中的任何一个都不能作为索引键的一部分或包含在强制约束中。
  • 不支持启用行修改跟踪的系统周期时态表或 Bitemporal-period 表,但是应用程序周期时态表将支持行修改跟踪。
  • 不支持 CREATE VIEW... WITH ROW MOVEMENT 已启用行修改跟踪。
  • REORG 表 ... RECLAIM 扩展数据块从已删除的 SYSROWID/CREATEXID/DELETEXID 列中回收空间。 仅针对上次 -type ONL (完全模式) 备份之前删除的行回收空间。

处理失败的备份和复原操作

当逻辑模式备份或复原操作失败时,有关错误的第一个信息源是 sqlca 消息。 例如,以下错误消息指示要备份的模式包含未启用行修改跟踪的表:

SQL1797N  The "SYSPROC.LOGICAL_BACKUP" utility has failed with error "non-RMT
table "T3".".  SQLSTATE=5UA0Q

如果消息不明确或不明确,那么下一个信息点是跟踪日志文件。 缺省情况下,它存储在以 -errorlogdir 选项或 sqllib/tmp/bnr/logs 提供的路径为前缀的路径中。 该路径将附加一个子文件夹,该子文件夹针对运行失败操作时的近似时间戳记进行命名。 例如: /home/db2inst1/sqllib/tmp/bnr/logs/20221110202644

此时间戳记不应与用于备份映像的时间戳记混淆。

云客户机不应设置此参数,因为它们无法访问服务器上的文件。

该文件夹可以包含以下类型的日志文件:

  • 外部表日志文件。
  • 连接器日志文件 (与外部介质通信: IBM Spectrum Protect,AWS S3或 IBM COS)。
  • 备份或复原跟踪日志文件。
  • 备份或复原日志文件。 此文件是跟踪日志文件的简明版本。

迁移注意事项

对模式启用行修改跟踪不会修改模式中的任何表: 只有在模式中创建的新表才会启用行修改跟踪。 要成功复原逻辑模式备份,必须在启用模式以进行行修改跟踪之后重新创建目标模式中的所有列表。

表迁移

可以通过任何方法来重新创建表。 例如,可以通过运行 ADMIN_MOVE_TABLE 或 CREATE TABLE 来在目标模式中重新创建表 ... AS ... WITH DATA 语句。 只需将 * 从一个表中选择到同一模式中的新表中。 只要存在以下情况,就会将目标表创建为启用行修改跟踪: -已启用目标模式以进行行修改跟踪 -目标表类型支持行修改跟踪。

源表不需要启用行修改跟踪。 此外,请记住尝试将任何隐藏列从源表移至目标表会导致错误,因为已在启用行修改跟踪的目标表中存在隐藏列。 在 CREATE TABLE 期间,不会将新隐藏列的值从源转至目标 ... AS (全查询) WITH DATA 操作。

使用逻辑备份和复原的表数据迁移

为了帮助迁移,SYSPROC.LOGICAL_BACKUP 能够通过指定 -backup-migrate 选项获取未启用行修改跟踪的模式的逻辑备份映像。 请注意,在此备份的整个持续时间内,仅允许对模式中的表进行读访问。 备份完成后,可以使用 SYSPROC.LOGICAL_RESTORE(-enable-row-修改-跟踪) 选项。 在这种情况下,会将模式创建为 ENABLE ROW 修改跟踪,并且还会尝试启用该模式中的所有表。 原始模式中阻止表启用行修改跟踪的任何表 DDL/condition 都将导致备份失败。

使用存储过程来捕获和复原 Db2 表级别数据时,可以监视逻辑模式备份和复原操作的进度。

通过在创建模式时激活对该模式的行修改跟踪,或者使用 ALTER SCHEMA 命令,可以在按列组织的模式上启用逻辑备份。 此配置存在一些不适用于按行组织的模式备份操作的限制。