LOGICAL BACKUP 和 LOGICAL RESTORE 的命令语法
授权
执行 LOGICAL_BACKUP 存储过程需要以下所有权限和许可权:
-
对 SYSPROC.LOGICAL_BACKUP 过程 (缺省情况下未授予 PUBLIC)
-
要访问表数据,请执行下列其中一项操作:
- 数据库或模式上的 DATAACCESS 权限
- 对模式的 SELECTIN 特权
- 对模式中所有表的 SELECT 特权
-
如果模式中的一个或多个表启用了“行和列”访问 (RCAC) 控件
- 对模式的 RCAC PROTECTED DATA 特权的逻辑备份和复原
- 注: 与任何特权一样,用户无法向同一用户授予许可权。 但是,可以将特权授予用户所属的组或角色。
- E.g. bluadmin 用户无法将该特权授予 bluadmin 用户,但可以授予 bluadmin 组。
- 对模式的 RCAC PROTECTED DATA 特权的逻辑备份和复原
-
对以下过程的 EXECUTE 许可权:
- SYSPROC.ADMIN_GET_DEPTREE
- SYSPROC.WLM_SET_CLIENT_INFO
- SYSPROC.MONITOR_UTIL
- SYSPROC.ADMIN_SET_MAINT_MODE
执行 LOGICAL_RESTORE 存储过程需要以下所有权限:
-
对 SYSPROC.LOGICAL_RESTORE 过程 (缺省情况下未授予 PUBLIC)
-
对于模式复原和 drop-existing 选项
- 对模式的 SCHEMAADM 权限
-
要在模式中删除/创建表,请执行下列其中一项操作
- 对模式的 SCHEMAADM 权限
- 模式上的 DROPIN 和 CREATEIN 权限
-
用于填充表数据的 INSERTIN 权限
-
在复原增量/增量备份映像的情况下
- 对模式的 ALTERIN,DELETEIN 和 SELECTIN 权限
-
如果模式中的一个或多个表启用了“行和列”访问 (RCAC) 控件
- 对模式的 RCAC PROTECTED DATA 特权的逻辑备份和复原
- 注: 与任何特权一样,用户无法向同一用户授予许可权。 但是,可以将特权授予用户所属的组或角色。
- E.g. bluadmin 用户无法将该特权授予 bluadmin 用户,但可以授予 bluadmin 组
- 对模式的 RCAC PROTECTED DATA 特权的逻辑备份和复原
-
对以下过程的 EXECUTE 许可权:
- SYSPROC.ADMIN_DROP_SCHEMA
- SYSPROC.WLM_SET_CLIENT_INFO
- SYSPROC.MONITOR_UTIL
- SYSPROC.ADMIN_SET_MAINT_MODE
需要以下所有权限才能执行 LOGICAL_BACKUP_DETAILS 存储过程: 对 SYSPROC.LOGICAL_BACKUP_DETAILS 过程 (缺省值未授予 PUBLIC)
使用 -path 选项创建的备份映像将由连接的用户 (顶级文件夹,所有子文件夹和所有文件) 拥有。
必需连接
隐式或显式
LOGICAL_BACKUP 的命令语法
可以通过使用 -schema 选项将模式名称传递到 LOGICAL_BACKUP 存储过程来执行模式级别备份。 当发生错误时,将除去部分备份映像。 在成功时,将作为返回 sqlcode 的一部分返回时间戳记。 此时间戳记将用作引用备份映像 (例如,复原备份映像) 的标签。 逻辑备份确保在同时启动多个备份时,时间戳记是唯一的。
在云环境中使用此命令时,请勿使用 -path 或 -tsm 选项,也不要指定任何 -errorlogdir 路径。 您无法查看托管实例的服务器上的本地文件。
处理模式备份下的不同表类型:
-
外部表-将捕获并恢复外部表的定义,但不会恢复内容。
-
具体化查询表-将捕获并复原 MQT 的定义,而不是内容。 用户将需要在复原后刷新 MQT。
-
临时表-模式备份不会捕获这些表。
-
任何未按列组织的永久表都将导致针对行修改跟踪启用的模式的模式备份失败 (因为这些表不会针对行修改跟踪启用)。
LOGICAL_RESTORE 的命令语法
可以通过使用 -schema 选项将模式名称传递到 LOGICAL_RESTORE 存储过程来执行模式级别复原。 要复原单个或多个表,还可以分别使用 -table 或 -tablefile 选项。
LOGICAL_BACKUP_DETAILS 的命令语法
存储过程返回在指定路径/介质上可用的时间戳记标签的列表。 缺省情况下,已向 PUBLIC 授予 EXECUTE 许可权。
命令参数
-type FULL|INC|DEL
-
- FULL-完全备份。
-
- INC-累积增量备份。
-
- DEL-增量备份 (也称为差分备份)。
-schema SCHEMANAME
- 要备份的模式。 必须以空格分隔多个模式名称。
-path <path>
- 备份映像的目标目录。 与 -tsm,-s3 和 -cos 选项互斥。 必须用空格分隔多个路径字符串。 必须指向不同的安装点。 备份目录和文件由调用逻辑备份的用户拥有。 遵循 extbl_strict_io 和 extbl_location 配置参数。
-tsm
- 备份映像将存储在 IBM Spectrum Protect 服务器中。 与 path 和 s3 选项互斥。
-s3
- 备份映像将存储在 S3 云中。 与 -path,-tsm 和 -cos 选项互斥。-bucket_url,access-key,-secret-key 和 -default-region 或 -endpoint 选项是必需选项。 如果同时指定了 -default-region 和 -endpoint,那么 -endpoint 中的区域必须与 -default-region 中的区域匹配。 数据直接发送到云,不需要本地临时存储器。
-cos
- 备份映像将存储在 IBM COS 中。 与 -path,-tsm 和 -s3 选项互斥。-bucket_url -access-key,-secret-key 和 -endpoint 选项是必需的。 如果指定此项,那么将忽略 -default-region。 数据直接发送到云,不需要本地临时存储器。
-errorlogdir <path>
- 将诊断日志文件保存到的路径 (在服务器上)。 缺省值为 sqllib/tmp/bnr/logs,遵循 extbl_strict_io 和 extbl_location 配置参数。
云客户机不应设置此参数,因为它们无法访问服务器上的文件。
-keeplogs {on_error | summary_in_backup | all_in_errorlogdir}
-
发生故障时,将保留所有诊断日志文件。 该选项指示在成功操作后如何处理诊断日志文件。-keeplogs on_error-除去所有诊断日志文件。summary_in_backup-将主跟踪日志保存到备份映像 (成为备份映像的一部分)。 s3,cos 和 tsm. all_in_errorlogir 的缺省值-保留 errorlogidr 中的所有诊断日志文件。 path 的缺省值。
-sessions <N>(optional)
-
同时衍生 N 个线程/连接以备份各个表。 缺省值为 4。 对于多模式备份,将为每个模式衍生 N 个线程。
-compress NO|GZIP|LZ4 (optional)
-
压缩备份的设置。 缺省情况下,它设置为 LZ4。
-format TEXT|BINARY (optional)**
-
备份文件的格式。 缺省情况下,它设置为 BINARY。
-media-connection-timeout <milliseconds>(optional)
-
TSM,S3 或 IBM COS 连接超时之前等待的最长时间 (以毫秒为单位)。
-bucket-url <bucket-url>
-
云存储区的 URL。
-access-key <access-key>
-
存储区的访问密钥标识。
-secret-key <secret-key>
-
存储区的访问密钥。
-default-region <region>
-
存储区的缺省区域。
-endpoint
-
连接到 Amazon S3 或 IBM COS 的网关端点。 如果同时指定了 -default-region 和 -endpoint,那么 -endpoint 中的区域必须与 -default-region 中的区域匹配。
-multipart-size-mb <multipart size mb>
-
-multipart-size-mb 的值 (MB)。 缺省值为 105。
-delete-backup
-
永久除去备份映像。 需要提供路径/介质和时间戳记。 不能与 -type 或 -schema 一起指定
-table (optional)
-
要复原的表。 表不得存在,或者必须指定 -drop-existing 选项。
-target-schema name (optional)
-
使用不同的模式名称复原备份映像,而不删除原始模式。-drop-existing 将影响新的模式名称。
-drop-existing (optional)
-
在复原之前删除现有模式及其表/非表对象。 如果与 -table 选项结合使用,那么仅删除受影响的表。
-keep-rcac
-
复原支持 RCAC 的表,掩码和许可权,而不删除它们。
-replace-rcac
-
通过删除并重新创建支持 RCAC 的表,掩码和许可权来复原这些表。
-enable-row-mod-tracking (optional)
-
复原从未启用行修改跟踪的模式获取的模式备份映像,并启用行修改跟踪的目标模式。
image-check HASH, SIZE, NAME, NONE, ONLY (optional)
-
对于备份: 备份操作后处理模式备份映像文件,以在模式级别复原之前启用映像完整性验证。 可以选择这两个值。 缺省情况下,两者都不开启。 始终收集用于验证 NAME 选项 (备份映像中所有文件的名称列表) 的信息。
-
对于复原: 在复原之前验证模式备份映像。 缺省情况下,将启用备份期间指定的所有选项 (包括隐式 NAME)。 将仅验证指定的选项。 将以静默方式忽略备份期间未收集的选项的验证。
- HASH-计算和记录备份映像中所有文件的散列值。 仅允许用于
-path
备份。 - SIZE-备份映像中所有文件的记录大小。
- NAME-标识缺少或意外的文件名。
- NONE-不执行任何完整性检查。
- ONLY-仅执行完整性检查,而不调用复原 (验证备份映像)。
-unlockschema (optional)
- 复原失败后解锁模式。 未完成先前失败的操作。
-cleanup-failed-restore (optional)
- 复原失败后清除。 删除所有对象和模式本身。 在无法删除模式的情况下,仍会将其解锁。
-backup-migrate (optional)
- 对尚未启用行修改跟踪的模式进行逻辑备份,以方便即将使用 -enable-row-修改-跟踪 备份进行复原,如果源表无法进行行修改跟踪 (例如,按行组织),那么备份将失败。 仅允许用于 -type FULL 操作。
新建 sqlcode
成功时,将返回 LOGICAL_BACKUP () SQL1796I。 E.g.:
SQL1796I Logical backup utility has completed successfully, timestamp for the
backup image is "20220817203500". SQLSTATE=01541
成功时,将返回 LOGICAL_RESTORE () sqlcode 0。
$ db2 "call sysproc.logical_restore('-type frh -schema rmt -timestamp 20220902105215 -s3 ...
Return Status = 0
On success of LOGICAL_BACKUP_DETAILS() table with list timestamps will be returned:
$ db2 call SYSPROC.LOGICAL_BACKUP_DETAILS('-path ...')
Result set 1
--------------
TIMESTAMP
--------------------
20220805182316
1 record(s) selected.
Return Status = 0
将返回 LOGICAL_BACKUP (),LOGICAL_RESTORE () 或 LOGICAL_BACKUP_DETAILS () SQL1797 失败时。 E.g.:
SQL1797N The "SYSPROC.LOGICAL_RESTORE" utility has failed with error "Valid path required". SQLSTATE=5UA0Q