BACKUP DATABASE 命令
BACKUP DATABASE 命令用于创建数据库或表空间的备份副本。 必须创建数据库和相关存储数据的备份,以防止发生数据库服务中断时数据丢失。
有关不同操作系统和硬件平台之间的数据库备份操作的信息,请参阅 不同操作系统和硬件平台之间的备份和复原操作
。
作用域
在分区数据库环境中,如果未指定任何数据库分区,那么此命令仅影响运行该数据库分区的数据库分区。
如果指定了执行分区备份的选项,那么只能在目录数据库分区上调用该命令。 如果此选项指定要备份所有数据库分区服务器,那么它将影响 db2nodes.cfg 文件中列出的所有数据库分区服务器。 否则,它将影响在命令上指定的数据库分区服务器。
权限
- SYSADM
- SYSCTRL
- SYSMAINT
需要的连接
命令语法
命令参数
- DATABASE | DB database-alias
- 指定要备份的数据库的别名。
- USER username
- 标识用于备份数据库的用户名。
- USING password
- 用于认证用户名的密码。 如果省略了密码,那么将提示用户输入。
- ON
- 在一组数据库分区上备份数据库。
- DBPARTITIONNUM db-partition-number1
- 指定数据库分区列表中的数据库分区号。
- DBPARTITIONNUMS db-partition-number1 TO db-partition-number2
- 指定一系列数据库分区号,以便从 db-partition-number1 到 db-partition-number2 的所有分区都包括在数据库分区列表中。
- ALL DBPARTITIONNUMS
- 指定要在 db2nodes.cfg 文件中指定的所有分区上备份数据库。
- EXCEPT
- 指定将在 db2nodes.cfg 文件中指定的所有分区 (数据库分区列表中指定的分区除外) 上备份数据库。
- DBPARTITIONNUM db-partition-number1
- 指定数据库分区列表中的数据库分区号。
- DBPARTITIONNUMS db-partition-number1 TO db-partition-number2
- 指定一系列数据库分区号,以便从 db-partition-number1 到 db-partition-number2 的所有分区都包括在数据库分区列表中。
- TABLESPACE tablespace-name
- 用于指定要备份的表空间的名称列表。
- NO TABLESPACE
指定仅元数据备份。 仅元数据备份不包含任何表空间数据。 它包含的元数据包括数据库的恢复历史记录文件。 可以使用 RESTORE DATABASE 命令的 HISTORY FILE 选项来复原此文件。
- ONLINE
指定联机备份。 缺省值为脱机备份。 联机备份仅可用于在启用了 logarchmeth1 的情况下配置的数据库。 在联机备份期间, Db2® 在处理 SMS 表空间中存在的所有表时获取 IN (Intent None) 锁定。 在联机备份期间,不再对 SMS 表空间中的 LOB 数据挂起 S (共享锁定)。
- INCREMENTAL
- 指定累积 (增量) 备份映像。 增量备份映像是自最近一次成功的完全备份操作以来更改的所有数据库数据的副本。
- DELTA
- 指定非累积 (增量) 备份映像。 增量备份映像是自最近成功执行任何类型的备份操作以来更改的所有数据库数据的副本。
- USE
- TSM
- 指定备份将使用 Tivoli® Storage Manager (TSM) 作为目标设备。
- XBSA
- 指定将使用 XBSA 接口。 Backup Services API (XBSA) 是一个开放式应用程序编程接口,用于需要数据存储管理以进行备份或归档的应用程序或设施。
- SNAPSHOT
- 指定要进行快照备份。不能将 SNAPSHOT 参数与以下任一参数配合使用:
- TABLESPACE
- INCREMENTAL
- WITH num-buffers BUFFERS
- BUFFER
- PARALLELISM
- COMPRESS
- UTIL_IMPACT_PRIORITY
- SESSIONS
快照备份的缺省行为是对构成数据库的所有路径进行完全数据库脱机备份。 此备份包括所有容器,本地卷目录,数据库路径 (DBPATH) 以及主日志和镜像日志路径 (INCLUDE LOGS 是所有快照备份的缺省值,除非明确声明 EXCLUDE LOGS )。
在以下情况下设置 ENCRLIB 时,支持快照备份: 数据库已加密。 这将确保快照备份本身已加密。 配置的加密库是本机 Db2 加密库之一。 这可以是加密库,也可以是组合的加密/压缩库之一。 如果您为备份配置了非IBM 加密库,那么我们认为这意味着您希望对所有备份都采用此设置。 使用本机 Db2 加密创建快照备份将违反此首选项。
- LIBRARY library-name
- 集成到 IBM® Db2 Server 是用于以下存储硬件的 Db2 ACS API 驱动程序:
- IBM TotalStorage™ SAN Volume Controller
- IBM Enterprise Storage Server ® 800 型
- IBM Storwize ® V7000
- IBM System Storage ® DS6000™
- IBM System Storage DS8000®
- IBM System Storage N 系列
- IBM XIV ®
如果您具有其他存储器硬件以及适用于该存储器硬件的 DB2 ACS API 驱动程序,那么您可以使用 LIBRARY 参数来指定 DB2 ACS API 驱动程序。
LIBRARY 参数的值是标准库文件名。
- SCRIPT script-name
- 能够执行快照备份操作的可执行脚本的名称。 脚本名称必须是标准文件名。
- OPTIONS
- "options-string"
- 指定要用于备份操作的选项。 字符串的传递与输入的完全相同,不带双引号。
- @ file-name
- 指定要用于备份操作的选项包含在 Db2 服务器上的文件中。 该字符串将传递到供应商支持库。 该文件必须是标准文件名。
不能使用 vendoropt 数据库配置参数为快照备份操作指定特定于供应商的选项。 必须改为使用备份实用程序的 OPTIONS 参数。
- OPEN num-sessions SESSIONS
- 要在 Db2 产品与 TSM 产品或其他备份供应商产品之间创建的 I/O 会话数。 当您备份到磁带,磁盘或其他本地设备时,此参数无效。 如果为联机备份指定 INCLUDE LOGS 参数,那么在关闭初始会话之后,将为 OPEN num-sessions SESSIONS 参数创建额外的会话。 如果要创建单个系统视图 (SSV) 联机备份,那么对于备份的每个节点,将在初始会话关闭后为 OPEN num-sessions SESSIONS 参数创建额外的会话。 如果将此参数与 TSM 选项配合使用,那么在历史记录文件中创建的条目数等于创建的会话数。
- TO dir | pipename | dev | remote-storage
要将备份映像存储到的路径,命名管道,设备或远程存储位置的列表。 仅在 Unix 和 Linux 平台上支持备份到命名管道。
必须指定每个目标目录的完整路径。 如果省略 USE TSM, TO和 LOAD ,那么缺省目标目录是客户端计算机的当前工作目录。 目标目录或设备必须可在数据库服务器上本地寻址。 如果目标目录位于网络文件系统 (NFS) 上,那么需要使用 nolock 选项 ( AIX上的llock ) 配置 NFS 。 否则,备份可能会挂起。
要备份到远程存储器 (例如, IBM Cloud Object Storage 或 Amazon Simple Storage Service (S3)) ,请使用存储器访问别名指定远程存储位置。 需要本地登台空间来临时存储要传输到远程存储服务器的备份映像。 远程存储器的每个备份会话的最大大小为 5 GB ,这可能会生成略小于 5 TB 的总数据库备份映像大小。 请参阅 远程存储器需求。 用于指定远程存储位置的语法为:DB2REMOTE://<alias>//<storage-path>
在分区数据库中,目标目录或设备必须存在于所有数据库分区上,并且可以选择是共享路径。 可以使用数据库分区表达式来指定目录或设备名。 有关数据库分区表达式的更多信息,请参阅 使用数据库分区表达式。
可重复此参数以指定备份映像所跨的目标目录和设备。 如果指定了多个目标 (例如,target1, target2和 target3) ,那么将首先打开 target1 。 介质头和特殊文件 (包括配置文件,表空间表和历史记录文件) 放置在 target1中。 将打开所有剩余目标,然后在备份操作期间并行使用这些目标。 由于在 Windows 操作系统上没有一般磁带支持,因此每种类型的磁带设备都需要唯一的设备驱动程序。
使用磁带设备或软盘可能会生成消息并提示用户输入。 有效的响应选项为:- c
- 继续 - 继续使用生成警告消息的设备 (例如,安装了新磁带时)
- d
- 设备终止 - 停止仅使用生成警告消息的设备 (例如,当没有更多磁带时)
- t
- 终止 - 异常中止备份操作。
如果磁带系统不支持唯一引用备份映像的能力,那么同一数据库的多个备份副本不得保存在同一磁带上。
- LOAD library-name
- 包含要使用的供应商备份和复原 I/O 功能的共享库 (Windows 操作系统上的 DLL) 的名称。 它可以包含完整路径。 如果未提供完整路径,那么它缺省为用户出口程序所在的路径。
- DEDUP_DEVICE
- 优化支持重复数据删除的目标存储设备的备份映像格式。
- WITH num-buffers BUFFERS
- 将要使用的缓冲区数量。 如果指定的缓冲区数不足以创建成功备份,那么将为此参数自动选择完成备份所需的最小值。 如果要备份到多个位置,那么可以指定更多缓冲区以提高性能。 如果指定 COMPRESS 参数,那么为了帮助提高性能,可以为为 PARALLELISM 参数指定的每个表空间添加额外的缓冲区。
- BUFFER buffer-size
- 构建备份映像时使用的缓冲区大小 (以 4 KB 页面为单位)。 除非显式输入值,否则 Db2 会自动为此参数选择最佳值。 此参数的最小值为 8 页。
如果使用具有可变块大小的磁带,请将缓冲区大小减小到磁带设备支持的范围内。 否则,备份操作可能会成功,但生成的映像可能不可恢复。
对于大多数版本的 Linux®,使用 Db2 随附的缺省缓冲区大小对 SCSI 磁带设备进行备份操作会导致错误 SQL2025N,原因码为 75。 要防止 Linux 内部 SCSI 缓冲区溢出,请使用以下公式:
其中 bufferpages 是要与 BUFFER 参数配合使用的值,bufferpages <= ST_MAX_BUFFERS * ST_BUFFER_BLOCKS / 4
ST_MAX_BUFFERS
和ST_BUFFER_BLOCKS
在 Linux 内核中的 drivers/scsi 目录下定义。 - PARALLELISM n
- 确定可由备份实用程序并行读取的表空间数。 除非显式输入值,否则 Db2 会自动为此参数选择最佳值。
- UTIL_IMPACT_PRIORITY priority
- 指定备份以调速方式运行,并指定优先级。 调速允许您调节备份操作的性能影响。 优先级可以是 1 到 100之间的任何数字,其中 1 表示最低优先级, 100 表示最高优先级。 如果指定 UTIL_IMPACT_PRIORITY 关键字时没有优先级,那么备份将以缺省优先级 50运行。 如果未指定 UTIL_IMPACT_PRIORITY ,那么备份将以未调速方式运行。 必须通过设置 util_impact_lim 配置参数来定义影响策略,备份才能以调速方式运行。
- COMPRESS|ENCRYPT
- 指示要压缩或加密备份。 不能同时指定这两个参数。 COMPRESS 和 ENCRYPT 参数是同义词,仅当同时指定了 COMPRLIB 或 ENCRLIB 时才能互换使用。 如果指定 COMPRESS 而不指定 COMPRLIB,那么将使用缺省压缩库 libdb2compr.so 进行压缩。 如果指定 ENCRYPT 而不指定 ENCRLIB,那么将使用缺省加密库 libdb2encr.so 进行加密。 如果要指定另一个库,那么可以互换使用 COMPRESS 和 ENCRYPT 。 您可以使用 COMPRLIB 或 ENCRLIB 来指定 libdb2compr_encr.so 库。 如果 encrlib 数据库配置参数设置为非 NULL 值,那么既不能指定 COMPRLIB 也不能指定 ENCRLIB 。 如果未设置 encrlib 数据库配置参数,那么将使用指定的 ENCROPTS 命令选项而不是 encropts 数据库配置参数。 如果 encrlib 和 encropts 数据库配置参数设置为非 NULL 值,那么不能在命令上指定 COMPROPTS 或 ENCROPTS 。注: 对于本机加密的数据库,将在备份之前对数据进行解密。 可以使用 BACKUP DATABASE 命令的此 ENCRYPT 参数来实现备份加密。 还可以通过 encrlib 数据库配置参数来实现备份的加密。 备份将使用指定加密库所使用的算法进行加密,独立于任何数据库本机加密配置的密码或算法。
- COMPRLIB|ENCRLIB name
- 指示在压缩或加密过程中使用的库的名称。 例如, db2compr.dll for Windows; libdb2compr.so for Linux 和 UNIX 操作系统。 该名称必须是引用服务器上的文件的标准路径。 如果未指定此参数,那么将使用缺省 Db2 压缩库。 如果无法装入指定的库,那么备份操作将失败。
- EXCLUDE
- 指示库未存储在备份映像中。
- COMPROPTS|ENCROPTS string
- 描述传递到库中初始化例程的二进制数据块。 数据库管理器将此字符串直接从客户机传递到服务器。 任何字节反转或代码页转换问题都由压缩库处理。 如果数据块的第一个字符为 "@" ,那么其余数据将解释为服务器上文件的名称。 然后,数据库管理器将字符串的内容替换为此文件的内容,并将此新值传递给初始化例程。 string 的最大长度为 1024 字节。对于缺省 Db2 库 libdb2compr_encr.so (压缩和加密) 或 libdb2encr.so (仅限加密) , ENCROPTS 字符串 的格式如下所示:
Cipher=cipher-name:Mode=mode-name:Key Length=key-length: Master Key Label=label-name-1...:Master Key Label=label-name-n
- 密码是可选的。 有效值为 AES 和 3DES (缺省值为 AES)。
- 方式是可选的。 缺省值为 CBC。
- 键长度是可选的。 AES 的有效值为 128,192 和 256 (缺省值为 256) , 3DES 的唯一有效值为 168。
- 主密钥标签是可选的。 缺省值为数据库主密钥标签。
- EXCLUDE LOGS
- 指定备份映像不得包含任何日志文件。 执行脱机备份操作时,如果指定了此选项,那么将排除日志 (快照 backups.Logs :
- 单分区数据库的脱机备份。
- 不使用单个系统视图备份时,多分区数据库的联机或脱机备份。
如果使用快照备份指定 EXCLUDE LOGS ,那么在备份期间允许写入日志文件。 缺省情况下,这些日志文件包含在快照备份中,但不可用于恢复。 如果复原此备份,那么不得从备份中抽取日志文件。 如果在执行备份时将日志路径设置为缺省值,那么无法从复原中排除日志文件,并且必须在复原备份后手动删除这些日志文件。 如果日志路径不是缺省值,那么可以在复原时通过将 LOGTARGET EXCLUDE 选项与 RESTORE DATABASE 命令配合使用来排除日志文件。
- INCLUDE LOGS
- 指定备份映像必须包含复原此映像并将其前滚到某个一致时间点所需的日志文件范围。 此选项对于脱机备份 (快照备份除外) 无效。 INCLUDE LOGS 始终是任何联机备份操作的缺省选项,但独立备份每个数据库分区的多分区联机备份除外 (即,非单一系统视图备份)。
如果备份所需的任何日志文件先前已备份并且不再位于日志路径中,那么 Db2 数据库管理器将从溢出日志路径中检索这些文件以进行备份 (如果已设置路径)。 否则,数据库管理器会从当前日志路径或镜像日志路径检索它们以进行备份。 备份完成后,将从日志路径中除去这些日志文件。
- WITHOUT PROMPTING
指定备份在无人照管的情况下运行,并且通常需要用户干预的任何操作都会返回错误消息。
注:- 如果 backup 命令指示要备份分区数据库中的哪些分区,那么将隐式执行备份操作 WITHOUT PROMPTING。
- 在分区数据库环境中的 BACKUP DATABASE 命令上指定的选项将单独应用于每个分区。 例如,如果将备份操作指定为 USE TSM OPEN 3 SESSIONS,那么 Db2 将在每个分区上打开三个 TSM 会话。
示例
- 在以下示例中,数据库 WSDB 是在所有四个数据库分区上定义的,编号为 0-3。 可从所有数据库分区访问路径 /dev3/backup 。 数据库分区 0 是目录分区。 要对 /dev3/backup的所有 WSDB 数据库分区执行脱机备份,请从数据库分区 0 发出以下命令:
db2 BACKUP DATABASE wsdb ON ALL DBPARTITIONNUMS TO /dev3/backup
备份在所有分区上同时执行。 所有四个数据库分区备份映像都存储在 /dev3/backup 目录中。 此目录可以是可从多个分区访问的共享目录,也可以是可从每个分区单独访问的本地安装目录,也可以是两者的组合。
- 您可以使用命名管道将一个数据库直接备份到另一个数据库中,而不保存中间备份映像。
以下示例将源数据库 (srcdb
) 复制到目标数据库 (tgtdb
) 中。 可以按任一顺序输入 BACKUP 和 RESTORE 命令。(在一次会议中)
(在另一届会议上)$ db2 backup db srcdb to /<pipename>
$ db2 restore db srcdb from /<pipename> into tgtdb
- 在以下示例中,将数据库 SAMPLE 备份到使用两个并发 TSM 客户机会话的 TSM 服务器。 Db2 计算此环境的最佳缓冲区大小。
db2 backup database sample use tsm open 2 sessions with 4 buffers
- 在以下示例中,对磁带执行数据库
payroll
的表空间 (syscatspace , userspace1) 的表空间级别备份。db2 backup database payroll tablespace (syscatspace, userspace1) to /dev/rmt0, /dev/rmt1 with 8 buffers without prompting
- USE TSM OPTIONS 关键字可用于指定要用于备份操作的 TSM 信息。 以下示例显示如何使用 USE TSM
OPTIONS 关键字来指定标准文件名:
文件 myoptions.txt 包含以下信息:db2 backup db sample use TSM options @/u/dmcinnis/myoptions.txt
-fromnode=bar -fromowner=dmcinnis
- 以下是对可恢复数据库每周进行的增量备份策略的样本。 它包括每周完全数据库备份操作,每日非累积 (增量) 备份操作和中周累积 (增量) 备份操作:
(Sun) db2 backup db sample use tsm (Mon) db2 backup db sample online incremental delta use tsm (Tue) db2 backup db sample online incremental delta use tsm (Wed) db2 backup db sample online incremental use tsm (Thu) db2 backup db sample online incremental delta use tsm (Fri) db2 backup db sample online incremental delta use tsm (Sat) db2 backup db sample online incremental use tsm
- 在以下示例中,在数据库 SAMPLE 上为备份操作指定了三个完全相同的目标目录。 如果目标文件系统由多个物理磁盘组成,那么这适用。
同时将数据备份到三个目标目录,并使用扩展db2 backup database sample to /dev3/backup, /dev3/backup, /dev3/backup
.001
,.002
和.003
生成三个备份映像。 - 在以下示例中,数据库 WSDB 是在所有四个数据库分区上定义的,编号为 0-3。 数据库分区 0 是目录分区。 要对数据库分区 1 和 2 上的表空间 USERSPACE1 执行联机备份,并将备份映像存储在 TSM 服务器上,请从分区 0 发出以下命令:
db2 BACKUP DATABASE wsdb ON DBPARTITIONNUMS (1, 2) TABLESPACE (USERSPACE1) ONLINE USE TSM
- 为指示每个分区返回的
sqlcode
而生成的样本输出。- Example 1
- 所有分区都成功 (sqlcode> = 0)
$ db2 backup db foo on all dbpartitionnums tablespace(T1) Part Result ---- ------ 0000 DB20000I The BACKUP DATABASE command completed successfully. 0001 SQL2430W The database backup succeeded, but the following table spaces do not exist on this database partition: "T1". Backup successful. The timestamp for this backup image is : 20040908010203
- Example 2
- One or more partitions fail (sqlcode < 0)
$ db2 backup db foo on all dbpartitionnums to /backups Part Result ---- ------ 0000 SQL2001N The utility was interrupted. The output data may be incomplete. 0001 SQL2419N The target disk "/backups" has become full. SQL2429N The database backup failed. The following database partitions returned errors: "1".
- 以下备份包含创建的映像中的日志目录:
db2 backup db sample use snapshot
db2 backup db sample online use snapshot
db2 backup db sample use snapshot INCLUDE LOGS
db2 backup db sample online use snapshot INCLUDE LOGS
- 以下备份将不包含创建的映像中的日志目录:
db2 backup db sample use snapshot EXCLUDE LOGS
db2 backup db sample online use snapshot EXCLUDE LOGS
- 以下命令使用缺省加密选项对备份映像进行加密:
BACKUP DATABASE ccards ENCRYPT;
- 以下命令使用 缺省加密库和 显式提供的加密选项对备份映像进行加密:
BACKUP DATABASE ccards ENCRYPT ENCRLIB 'libdb2encr.so' ENCROPTS 'Cipher=3DES'; BACKUP DATABASE ccards ENCRYPT ENCRLIB 'libdb2encr.so' ENCROPTS 'Master Key Label=mylabel.mydb.myinstance.myserver';
- 以下命令将创建压缩和加密的备份映像:
BACKUP DATABASE ccards ENCRYPT ENCRLIB libdb2compr_encr.so;
使用说明
- 备份中的数据无法由数据库服务器保护。 确保正确保护备份,尤其是在备份包含受 LBAC 保护的数据时。
- 备份到磁带时,不支持使用可变块大小。 如果必须使用此选项,请确保已测试了使您能够使用使用可变块大小创建的备份映像成功恢复的过程。
- 备份实用程序不能与类型 2 连接配合使用。
- 使用可变块大小时,必须指定备份缓冲区大小小于或等于正在使用的磁带设备的最大限制。 要获得优化的性能,缓冲区大小必须等于正在使用的设备的最大块大小限制。
- 在文件管理器/存储系统发生故障时,应使用常规磁盘备份来补充快照备份。
- 在定期备份数据库时,可能会累积大量数据库备份映像,许多数据库日志和装入副本映像,所有这些都可能占用大量磁盘空间。 请参阅
管理恢复对象
,以获取有关如何管理这些恢复对象的信息。 - 您可以使用 OPTIONS 参数在支持代理节点的 TSM 环境中启用备份操作。 有关更多信息,请参阅
配置 Tivoli Storage Manager 客户机
主题。 - 在备份期间,可以使用 DB2_BCKP_PAGE_VERIFICATION 注册表变量来启用 DMS 和 AS 页面验证。 验证能够识别许多类型的结构完整性问题,包括数据,索引和 XML 对象页面校验和验证失败,以及这些页面的元信息中的异常。 但是,无法识别所有可想而知的完整性问题。 一些限制包括但不限于:
- 未识别数据页的版本是否反映 Db2 上次写入磁盘上的表空间容器文件的内容 (即,丢失的 I/O 写入)。
- 未识别页面上的数据与与此数据相关的对象 (例如索引,约束或 MQT) 之间的任何逻辑不连续性。
- 如果数据页的版本位于磁盘上 Db2 将其写入的表空间容器文件中的位置 (即,错误放置的 I/O 写入) ,那么如果错误放置的数据页位于期望具有相同 objectID 的页面的位置中的另一个表空间中,那么将不会检测到该数据页的版本。
- 未验证 LOB 或长字段数据页面的完整性。
- 不会验证空 (清零) 页面的完整性,即使期望这些页面包含数据,也不会将其报告为错误。
- 对于 SMS 表空间,完整性验证仅限于确保每个对象的页面计数正确,不会执行进一步验证。
- 您可以使用 DB2_BCKP_INCLUDE_LOGS_WARNING 注册表变量来指定某些联机备份现在可以成功,即使它们未成功包含所有必需的日志也是如此。
- 发出带有 ONLINE 选项和 INCLUDE LOGS 选项的 BACKUP DATABASE 命令后,生成的备份数据库映像将包含前滚到备份结束所需的所有日志文件。