使用 Tivoli Storage Manager 备份和恢复 DB2 数据库

本文介绍 IBM® Tivoli® Storage Manager 和 IBM DB2® 架构的基本知识,展示如何使用 Tivoli Storage Manager 备份和还原功能。本文还提供了分步说明来展示如何在 Tivoli Storage Manager 服务器上备份和还原 DB2 数据库数据。本文可用作 DB2 数据库管理员和 Tivoli Storage Manager 管理员的指南。

Bharat Vyas, Tivoli Storage Manager 2 级技术支持工程师, IBM

Bharat Vyas 的照片Bharat Vyas 是 IBM 在印度浦那的一位 Tivoli Storage Manager 2 级技术支持工程师。他将大部分时间都用于与 Tivoli Storage Manager 管理员一道解决与 Tivoli Storage Manager 相关的问题。他的专业领域包括 Tivoli Storage Manager、Tivoli Storage Manager FastBack、Tivoli Storage Manager FastBack for Workstations 和存储区域网络。



Deepa Vyas, DB2 高级技术支持分析师, IBM

Deepa Vyas 的照片Deepa Vyas 是一位 IT 专家和 IBM DB2 认证工程师。她在位于印度浦那的 IBM 印度软件实验室担任 2 级高级支持工程师。她将大部分时间都用于与 DBA 一道解决与 DB2 相关的问题。



2013 年 6 月 28 日

简介

IBM Tivoli Storage Manager 是一个软件产品,主要解决跨分布式环境的复杂存储管理的挑战。此产品保护和管理从工作站到公司服务器环境的各种数据。IBM DB2 是关系数据库管理系统 (RDBMS) 产品系列。DB2 数据库包含一个数据字典或一组描述数据的逻辑和物理结构的系统表。DB2 提供了自动调优功能,以及动态调整和调优。

本文首先回顾了一些概念和考虑因素,解释如何安装和配置 Tivoli Storage Manager 备份归档客户端,并提供分步说明和技术来展示如何在 Tivoli Storage Manager 服务器上备份和还原 DB2 数据库数据。

DB2

IBM DB2 是一个 RDBMS,其中的数据可根据内容来引用,而无需考虑数据的存储方式。DB2 数据库有一种处理数据的物理和逻辑存储模型。DB2 数据库包含各种不同的对象,比如表、视图、索引、模式、锁、触发器、存储过程、包、缓冲池、日志文件和表空间。其中一些对象(比如表和视图)有助于识别数据的组织方式。其他对象(比如表空间)表示数据库的物理实现。其他一些与内存相关的对象(比如缓冲池)处理数据库性能。

实例(数据库管理器)是一个逻辑环境,用于管理分配到的数据和系统资源。一个系统可拥有多个实例。每个实例拥有自己的一组数据库管理器配置参数和安全配置。一个实例可拥有一个或多个数据库。该层次结构如 图 1 所示。

图 1. 一个实例中的 DB2 对象层次结构
该图显示了一个实例中的 DB2 对象的层次结构

用户的数据位于表中。尽管表包含行和列,但用户并不知道数据的实际物理表示和存储位置。这个事实有时称为数据的物理独立性。表放在表空间中。表空间 用作数据库与持有实际的表数据的容器对象之间的一层。一个表空间可包含多个表。容器 是一种物理存储设备,可由一个目录名称、设备名称或文件名来标识。一个容器分配给一个表空间。一个表空间可涵盖若干个容器,这就使得您能够绕过可能限制一个容器可容纳的数据量的操作系统限制。

Tivoli Storage Manager

IBM Tivoli Storage Manager 是一个软件产品,使用一种客户端/服务器模型提供了数据的存储管理服务,主要包括备份、还原、归档和检索。一般而言,Tivoli Storage Manager 备份归档客户端安装在每个系统上(比如文件服务器、数据库服务器、客户端工作站)。由于使用了一个配置好的网络传输协议(比如 TCP/IP),每个 Tivoli Storage Manager 客户端都可将其文件的副本作为备份或归档对象发送给一个 Tivoli Storage Manager 服务器。该服务器将客户端文件存储在一个集中化的存储系统(通常由大量磁盘或磁带存储器组成)中。

DB2 数据库是一个自包含的数据文件,您可使用 Tivoli Storage Manager 进行备份和还原。Tivoli Storage Manager 会完整还原一个 DB2 数据库,因为它对 Tivoli Storage Manager 而言只是一个文件。如果删除或损坏了 DB2 数据库,Tivoli Storage Manager 则可将此数据库的最新版本或任何以前的备份版本从 Tivoli Storage Manager 服务器还原到 DB2 服务器或客户端。

Tivoli Storage Manager API

Tivoli Storage Manager 应用程序编程接口 (API) 提供了一个函数库,可供独立软件应用程序和定制构建的应用程序将它们的数据进行备份并归档到 Tivoli Storage Manager 服务器。DB2 DBMS 也使用 Tivoli Storage Manager API 执行备份和还原操作。

DB2 提供了自己的备份实用程序,可用于在表空间级别或数据库级别上备份数据。如果将此实用程序设置为使用 Tivoli Storage Manager 作为备份媒介,DB2 则会与 Tivoli Storage Manager API 进行通信来执行备份和还原操作。因此,Tivoli Storage Manager API 客户端和备份归档客户端会一起为您的 DB2 环境提供全面的数据保护。API 客户端和备份归档客户端可在同一个 DB2 服务器上同时运行。Tivoli Storage Manager 服务器将这两个客户端视为独立的客户端。


基本的 DB2 和 Tivoli Storage Manager 架构

Tivoli Storage Manager 备份归档客户端可备份、还原、归档和检索客户端文件系统数据。该客户端可备份任何文件,使用标准操作系统功能来访问文件系统内的文件。此方法会影响 DB2 和其他数据库系统的备份方式。每个数据库在服务器或客户端文件系统上显示为一个独立文件。

要管理数据库或表空间级备份处理,DB2 数据库管理员可使用 Tivoli Storage Manager API。Tivoli Storage Manager 客户端 API 必须安装在每个 DB2 数据库服务器上。

图 2. DB2 Tivoli Storage Manager 架构
该图显示了 2 个服务器。Tivoli Storage Manager 服务器位于一个服务器上;客户端和 DB2 数据库位于另一个服务器上。API 与这两个服务器相连接。

图 2 显示了一种可用于备份 DB2 数据库的方法。Tivoli Storage Manager 服务器位于 Server B 上。Server A 包含 DB2 数据库及 Tivoli Storage Manager 备份归档客户端和 API。

图 2 中,使用了以下 Tivoli Storage Manager 组件:

  • Tivoli Storage Manager 备份归档客户端:为用户提供一个工具来将文件版本备份到 Tivoli Storage Manager 服务器中,如果原始文件丢失或被损坏,就可还原这些文件。用户也可对文件进行归档以便可以长期存储,也可在必要时检索归档的文件。
  • Tivoli Storage Manager API:允许独立软件应用程序和定制构建的应用程序将它们的应用程序数据进行备份或归档到 Tivoli Storage Manager 服务器中。DB2 调用 Tivoli Storage Manager API 所提供的函数将数据库和表空间备份直接发送到 Tivoli Storage Manager 服务器。
  • Tivoli Storage Manager 服务器:提供服务来存储和管理客户端的数据。该服务器可将数据存储在磁盘和磁带存储设备上。Tivoli Storage Manager 服务器 V5.5 版拥有一个专用数据库。Tivoli Storage Manager 6 和更高版本使用一个 DB2 数据库来跟踪服务器存储、客户端、客户端数据、策略和调度的相关信息。

安装和配置 Tivoli Storage Manager 备份归档客户端

在使用 Tivoli Storage Manager 备份 DB2 数据库之前,必须安装和配置 Tivoli Storage Manager 备份归档客户端和 Tivoli Storage Manager 服务器。对于本文,客户端和服务器都在 AIX® 系统上设置,因此需要以下组件:

  • 用于 AIX 的 Tivoli Storage Manager 备份归档客户端 V6.1 或更高版本
  • 用于 AIX 的 Tivoli Storage Manager 服务器 V6.1 或更高版本

安装 Tivoli Storage Manager 备份归档客户端

图 2 中所示,Tivoli Storage Manager 备份归档客户端和 API 必须安装在一个 DB2 服务器上,且 Tivoli Storage Manager 服务器必须安装在一个独立的系统上。在本例中,DB2 服务器位于一个 AIX 系统上,所以使用了 AIX System Management Interface Tool (SMIT) 来安装备份归档客户端。

在安装备份归档客户端时选择以下文件集:

  • tivoli.tsm.client.ba64
  • tivoli.tsm.client.api.32bit
  • tivoli.tsm.client.api.64bit
  • GSKit8.gskcrypt64.ppc.rte 和 GSKit8.gskssl64.ppc.rte(64 位客户端 API 需要)

安装 Tivoli Storage Manager 备份归档客户端后,运行 AIX lslpp 命令来验证下列已安装的文件集:

$ lslpp -L | grep "tivoli"
  
  tivoli.tsm.client.api.32bit
  tivoli.tsm.client.api.64bit
  tivoli.tsm.client.ba.64bit.base
  tivoli.tsm.client.ba.64bit.common
  tivoli.tsm.client.ba.64bit.hdw
  tivoli.tsm.client.ba.64bit.image
  tivoli.tsm.client.ba.64bit.nas
  tivoli.tsm.client.ba.64bit.snphdw
  tivoli.tsm.client.ba.64bit.web

Tivoli Storage Manager 备份归档客户端和 API 的默认安装目录为:

  • 备份归档客户端目录:/usr/tivoli/tsm/client/ba/bin64
  • API 目录:/usr/tivoli/tsm/client/api/bin64

配置 Tivoli Storage Manager 备份归档客户端

要配置 Tivoli Storage Manager 备份归档客户端,需要完成以下任务。

  1. 设置环境变量

    在操作系统 shell 或
    /home/instance_home_dir/sqllib/userprofile 文件中设置以下 DSMI 环境变量。
    DSMI_DIR
    DSMI_CONFIG
    DSMI_LOG

    重要事项:DB2 DBMS 在 DB2 实例启动期间读取这些环境变量。如果更改这些变量,必须重新启动 DB2 实例,更改才会生效。

    DSMI_DIR
    此变量指向 API 安装目录。dsmtca 文件、dsm.sys 文件和语言文件必须位于 DSMI_DIR 环境变量所指向的目录中。将 DSMI_DIR 变量设置为可选。如果未指定,默认目录将为 /usr/tivoli/tsm/client/api/bin64(针对 AIX 64 位版)。
    DSMI_CONFIG
    此变量指向 Tivoli Storage Manager dsm.opt 客户端选项文件的完全限定路径和文件名。此文件包含将要使用的服务器名称。
    DSMI_LOG
    此变量指向要在其中创建错误日志文件 dsierror.log 的目录路径。

    将以下行添加到 userprofile 文件中。

    export DSMI_CONFIG=/usr/tivoli/tsm/client/api/bin64/dsm.opt
    export DSMI_LOG=/home/db2inst1
    export DSMI_DIR=/usr/tivoli/tsm/client/api/bin64

    注销并以实例用户身份再次登录,运行 .profile 文件。

    $ ~/.profile
  2. 创建 dsm.sys 客户端选项文件

    使用 root 用户 ID 登录,创建一个包含以下条目(可针对您的安装自定义)的 dsm.sys 文件。此文件必须位于 DSMI_DIR 环境变量指定的目录中。


    servername tsmdb2              //name of this stanza 
    commmethod tcpip			
    tcpserveraddress  x.xx.xxx.xxx //IP address of Tivoli Storage Manager server
    tcpport 1500                   //Port where Server is listening
    nodename tsmdb2                //Must match nodename on Tivoli Storage Manager server
    passwordaccess generate
  3. 创建 dsm.opt 客户端选项文件

    使用 root 用户 ID 登录并创建 dsm.opt 文件。此选项文件中只有一行代码,也就是对 dsm.sys 文件中的服务器节的引用。此文件必须位于 DSMI_CONFIG 环境变量指定的目录中。


    Servername   tsmdb2
  4. 回收 DB2 实例

    停止并启动 DB2 实例。


    $ db2stop
    SQL1064N DB2STOP processing was successful.
    $ db2start
    SQL1063N DB2START processing was successful.
  5. 设置 API 密码

    要访问 Tivoli Storage Manager 服务器,客户端用户(称为节点)必须拥有访问服务器的密码。DB2 dsmapipw 程序使用 Tivoli Storage Manager API 创建加密的密码文件。DB2 应用程序包含 dsmapipw 实用程序,该实用程序安装在 /home/instance_home_dir/sqllib/adsm 目录中。

    以 root 用户身份登录,以运行 dsmapipw 实用程序。在运行 dsmapipw 之前,必须像在 DB2 实例上一样设置 DSMI 环境变量,如下面的示例所示:


    export DSMI_CONFIG=/usr/tivoli/tsm/client/api/bin64/dsm.opt 
    export DSMI_DIR=/usr/tivoli/tsm/client/api/bin64

    要设置密码,从 /home/instance_home_dir/sqllib/adsm/ 目录运行 dsmapipw 实用程序。当 dsmapipw 实用程序提示时,指定存储在 Tivoli Storage Manager 服务器上的 Tivoli Storage Manager 节点的密码。


    $ ./dsmapipw
    *************************************************************
    * Tivoli Storage Manager                                    *
    * API Version = 6.1.0                                       *
    *************************************************************
    Enter your current password:
    Enter your new password:
    Enter your new password again:
    
    Your new password has been accepted and updated.

    提示:如果使用 passwordaccess prompt 选项,您无需运行 dsmapipw 实用程序。


Tivoli Storage Manager 服务器考虑因素

Tivoli Storage Manager 服务器充当着来自一个或多个 Tivoli Storage Manager 客户端的备份和归档数据的一个中央存储库。服务器维护一个数据库来跟踪客户端数据、用户(节点、管理员 ID)、数据保留策略和 Tivoli Storage Manager 服务器资源。数据保留策略管理以下设置:

  • 将一个归档文件保存多长时间
  • 将一个备份保存多长时间
  • 要维护一个备份的多少个副本

该服务器还控制 Tivoli Storage Manager 服务器存储(存储池)。这些存储池存储客户端的备份和归档数据。每个存储池表示一种类型的存储媒介。例如,一个存储池可表示一个随机访问磁盘池,另一个则可表示一个顺序访问磁带池,而第三个可表示一个顺序访问光盘池。

在 Tivoli Storage Manager 服务器上完成以下步骤:

  1. 定义策略域
  2. 定义策略集
  3. 定义管理类
  4. 分配默认管理类
  5. 定义副本分组
  6. 验证和激活策略集
  7. 注册客户端节点
  1. 使用以下命令定义策略域。当注册一个客户端节点时,该节点会分配给一个现有的域,并且此节点或域关联定义了该节点的数据由 Tivoli Storage Manager 服务器管理的方式。

    tsm: TSM6120>define domain dbdomain
    ANR1500I Policy domain DBDOMAIN defined.
  2. 使用以下命令定义策略集。

    tsm: TSM6120>define policyset dbdomain dbpolicy
    ANR1510I Policy set DBPOLICY defined in policy domain DBDOMAIN.
  3. 使用以下命令定义管理类。

    tsm: TSM6120>define mgmtclass dbdomain dbpolicy dbmgmtclass
    ANR1520I Management class DBMGMTCLASS defined in policy domain DBDOMAIN, set
    DBPOLICY.
  4. 使用以下命令分配一个默认管理类。

    tsm: TSM6120>assign defmgmtclass dbdomain dbpolicy dbmgmtclass
    ANR1538I Default management class set to DBMGMTCLASS for policy domain
    DBDOMAIN, set DBPOLICY.
  5. 使用以下命令定义副本分组。

    tsm: TSM6120>define copygroup dbdomain dbpolicy dbmgmtclass type=backup dest=ltopool 
    VEREXISTS=1 VERDEL=0 RETEXTRA=0 RETONLY=0
    ANR1530I Backup copy group STANDARD defined in policy domain DBDOMAIN, set
    DBPOLICY, management class DBMGMTCLASS.

    DB2 备份存储在 Tivoli Storage Manager 服务器上的所有对象都会基于该对象的时间戳给定一个惟一名称。因为这些对象是惟一的,所以它们从不会自动在 Tivoli Storage Manager 服务器上过期。db2adutl 工具可用于从 Tivoli Storage Manager 服务器删除(标记为不活动)不想要的备份对象。

    要在 DB2 备份被标记为不活动后立即从 Tivoli Storage Manager 服务器删除,备份副本分组必须拥有以下保留设置:VEREXISTS=1, VERDEL=0, RETEXTRA=0, RETONLY=0

  6. 使用以下命令验证和激活策略集。

    tsm: TSM6120>validate policyset dbdomain dbpolicy
    tsm: TSM6120>activate policyset dbdomain dbpolicy
  7. 使用以下命令注册客户端节点。要访问 Tivoli Storage Manager 服务器,各个节点必须使用其各自的节点名称和密码登录到 Tivoli Storage Manager 服务器。发出以下命令来向服务器注册一个带有密码的 DB2 节点,并将该节点分配给策略域。

    tsm: TSM6120>register node db2node password domain=dbdomain

备份技术

配置好 Tivoli Storage Manager 服务器和客户端后,DB2 可将数据备份到 Tivoli Storage Manager 服务器上。使用 USE TSM 选项指定要在数据库备份操作期间使用的 Tivoli Storage Manager 信息。当在 DB2 备份操作上指定 USE TSM 选项时,该 API 会用于将数据库备份定向到 Tivoli Storage Manager 服务器。USE TSM 选项告诉 DB2 使用调用 Tivoli Storage Manager 的 DB2 API 库接口。例如:
DB2 BACKUP DATABASE database_name USE TSM

可通过多种方式来使用 Tivoli Storage Manager 备份 DB2 数据库:

离线备份

离线备份包括在启动备份操作之前关闭数据库,以及在备份完成后重新启动数据库。离线备份比较容易管理。但是,在备份执行期间,用户和批处理进程无法访问数据库。您必须计划足够的时间来执行备份操作。

下面的示例展示了如何运行离线的 DB2 数据库备份。该示例使用 DB2 命令行接口 (CLI) 备份 SAMPLE 数据库。

  1. 以一个实例所有者身份或具有更高权限的身份登录。
  2. 确保没有应用程序连接到您希望备份的数据库。使用 DB2 LIST APPLICATIONS 命令检查是否有一些应用程序连接到该数据库。

    $ db2 list applications for db sample
    
    Auth Id  Application    Appl.      Application Id                DB       # of
             Name           Handle                                   Name    Agents
    -------- -------------- ---------- --------------------------    -------- -----
    db2inst1    db2bp       245        *LOCAL.DB2INST1.120731143027  SAMPLE   3
    db2inst1    db2med      132        *LOCAL.DB2INST1.120731162426  SAMPLE   2
  3. 注销连接到数据库的所有应用程序。上一步表明有两个应用程序连接到数据库。使用 FORCE APPLICATION 命令断开这些应用程序的连接。要在 FORCE APPLICATION 命令上指定多个应用程序,可使用一个逗号来分隔各个句柄。

    $ db2 "force application ( 245,132 )"
    DB20000I The FORCE APPLICATION command completed successfully.
    DB21024I This command is asynchronous and might not be effective immediately.
    提示:如果许多应用程序连接到数据库,可使用 db2 force application all 命令将它们都注销。但是,在使用此命令时需谨慎,因为该命令会注销连接到实例中的任何数据库的所有应用程序。
  4. 重新发出 LIST APPLICATIONS 命令(参见 第 2 步)并确认不再有用户连接到数据库。
  5. 使用 BACKUP DATABASE 命令和 USE TSM 选项来备份数据库。

    $ db2 backup db sample use tsm
    
    Backup successful. The timestamp for this backup image is : 20120806185756

在线备份

在 DB2 数据库系统中,可在数据库启动后且正在使用时备份数据。显然,如果在用户更新一个数据库时备份该数据库,那么备份的数据可能不一致。DB2 DBMS 在恢复过程中使用日志文件将数据库恢复到一个完全一致的状态。此过程要求在数据库备份开始时和备份完成时收集日志文件。

当在线备份结束时,当前的活动日志会归档并包含在备份映像中。通过使用在线方法,您可收集恢复数据库所需的一组日志文件。

限制:在在线备份期间,各种应用程序都可在数据库上运行。但是,一些实用程序(比如 REORG TABLE)与在线备份不兼容,无法在备份活动时执行。

下面这个示例展示了如何运行在线 DB2 数据库备份。该示例使用 DB2 CLI 备份 SAMPLE 数据库。

  1. 以数据库管理员身份或具有更高权限的身份登录。
  2. 使用 BACKUP DATABASE 命令和 ONLINEUSE TSM 选项备份数据库。

    $ db2 backup db sample online use tsm
    
    Backup successful. The timestamp for this backup image is : 20120805223343

表空间备份

在不希望执行完整数据库备份时,DB2 DBMS 支持执行表空间级备份。例如,您完成了完整数据库备份,随后一个用户向一个特定表空间中的重要表执行了大量插入或加载操作。用户希望备份新数据。因为您不希望重复执行完整数据库备份,所以可执行一次表空间级备份。表空间级备份既可在线执行,也可离线执行。必须启用前滚恢复,才能执行在线备份。

下面这个示例展示了如何运行表空间备份。该示例使用 DB2 CLI 备份 SAMPLE 数据库中的 DATA1 表空间。

  1. 以数据库管理员身份或具有更高权限的身份登录。
  2. 使用 BACKUP DATABASE 命令和 TABLESPACEUSE TSM 选项来备份表空间。如果希望执行在线备份,则包含 ONLINE 选项。

    $ db2 backup db sample tablespace DATA1 online use tsm
    
    Backup successful. The timestamp for this backup image is : 20120805223621

恢复技术

任何 DBMS 的主要功能都是从数据库发生故障的时刻恢复它。DB2 DBMS 具有各种不同的特性和功能可供您用于管理数据库,以及在需要时执行标准恢复。尽管不可能从每一次故障时恢复数据库,但您可确保在大部分情形下以极小的数据损失来恢复。有各种不同的方法可用于从一个备份映像还原数据库。

版本恢复

使用版本恢复来从使用 BACKUP DATABASE 命令创建的一个备份映像还原一个以前的数据库版本。当还原数据库时,整个数据库会使用在之前的一个时刻创建的数据库备份来重新构建。生成数据库的备份映像后,您可使用该映像还原该数据库,也可创建数据库的一个副本。

只有未启用前滚恢复的数据库才可执行版本恢复。这些数据库称为不可恢复的数据库(也就是说,在执行备份映像之后保存的所有事务都会丢失)。所有用户必须从数据库断开,版本恢复才能执行。

执行以下步骤来使用版本恢复恢复数据库。这些步骤使用 DB2 CLI 恢复 SAMPLE 数据库。

  1. 使用 LIST HISTORY 命令和 BACKUP 选项查找希望还原的备份映像。

    $ db2 list history backup all for sample
    
     Op Obj Timestamp+Sequence Type Dev Earliest Log Current Log  Backup ID
     -- --- ------------------ ---- --- ------------ ------------ --------------
      B  D  20120805223343001   N    A  S0000002.LOG S0000002.LOG
     ----------------------------------------------------------------------------
      Contains 7 tablespace(s):
    
      00001 SYSCATSPACE
      00002 USERSPACE1
      00003 IBMDB2SAMPLEREL
      00004 IBMDB2SAMPLEXML
      00005 TEST1
      00006 DATA1
      00007 SYSTOOLSPACE
     ----------------------------------------------------------------------------
        Comment: DB2 BACKUP SAMPLE ONLINE
     Start Time: 20120805223343
       End Time: 20120805223401
         Status: A
     ----------------------------------------------------------------------------
      EID: 15 Location: adsm/libtsm.a
    
    
     Op Obj Timestamp+Sequence Type Dev Earliest Log Current Log  Backup ID
     -- --- ------------------ ---- --- ------------ ------------ --------------
      B  D  20120805223343002   N    A  S0000002.LOG S0000002.LOG
     ----------------------------------------------------------------------------
      Contains 7 tablespace(s):
    
      00001 SYSCATSPACE
      00002 USERSPACE1
      00003 IBMDB2SAMPLEREL
      00004 IBMDB2SAMPLEXML
      00005 TEST1
      00006 DATA1
      00007 SYSTOOLSPACE
     ----------------------------------------------------------------------------
        Comment: DB2 BACKUP SAMPLE ONLINE
     Start Time: 20120805223343
       End Time: 20120805223401
         Status: A
     ----------------------------------------------------------------------------
      EID: 16 Location: adsm/libtsm.a
  2. 使用 RESTORE DATABASE 命令和 USE TSM 选项还原数据库。USE TSM 选项告诉 DBMS 使用 Tivoli Storage Manager API 读取备份文件并还原该文件。

    $  db2 restore db sample use tsm taken at 20120805223343
    SQL2539W  Warning!  Restoring to an existing database that is the same as the
    backup image database.  The database files will be deleted.
    Do you want to continue ? (y/n) y
    DB20000I  The RESTORE DATABASE command completed successfully.

数据库前滚恢复

数据库前滚恢复增强了版本恢复,方法是使用完整数据库备份和日志文件来将数据库或选定的表空间还原到一个特定时刻。这些数据库称为可恢复数据库。使用一个完整数据库备份映像作为基准,如果拥有从备份时刻到当前时间的所有可用的日志文件,那么可以将截至这些日志所涵盖时段内的任何时刻的所有事务应用到数据库中的任何或所有表空间上。借助可恢复数据库,可还原数据库并将日志应用到故障时刻,且不会丢失任何事务。

在 DB2 中,前滚恢复在数据库级别上指定,且必须显式启用。

完整数据库还原和前滚

可以将数据库还原,然后前滚到日志末尾。以下步骤使用 DB2 CLI 恢复 SAMPLE 数据库。

  1. 使用 RESTORE DATABASE 命令和 USE TSM 选项,指定需要还原的备份映像的时间戳。

    $  db2 restore db sample use tsm taken at 20120805223343
    SQL2539W  Warning!  Restoring to an existing database that is the same as the
    backup image database.  The database files will be deleted.
    Do you want to continue ? (y/n) y
    DB20000I  The RESTORE DATABASE command completed successfully.
  2. 使用 ROLLFORWARD DATABASE 命令应用所有日志。

    $ db2 rollforward db sample to end of logs and stop
    
                                     Rollforward Status
    
     Input database alias                   = sample
     Number of nodes have returned status   = 1
    
     Node number                            = 0
     Rollforward status                     = not pending
     Next log file to be read               =
     Log files processed                    = S0000002.LOG - S0000003.LOG
     Last committed transaction             = 2012-08-05-17.06.21.000000 UTC
    
    DB20000I  The ROLLFORWARD command completed successfully.

表空间还原和前滚

借助可恢复数据库,您可恢复整个数据库或仅恢复需要恢复的表空间。表空间既可离线恢复,也可在线恢复。既可使用来自以前的表空间备份的备份映像,也可使用来自以前的数据库备份的备份映像。

以下步骤使用 DB2 CLI 恢复 SAMPLE 数据库中的 DATA1 表空间。

  1. 使用 RESTORE DATABASE 命令和 TABLESPACEUSE TSM 选项,指定备份映像的时间戳。

    $ db2 "restore db sample tablespace (DATA1) online use tsm taken at 20120805223621"
    DB20000I  The RESTORE DATABASE command completed successfully.
  2. 使用 ROLLFORWARD DATABASE 命令和 TABLESPACE 选项向已恢复的表空间应用所有日志。

    $ db2 "rollforward db sample to end of logs and stop tablespace (DATA1) online"
    
                                     Rollforward Status
    
     Input database alias                   = sample
     Number of nodes have returned status   = 1
    
     Node number                            = 0
     Rollforward status                     = not pending
     Next log file to be read               =
     Log files processed                    =  -
     Last committed transaction             = 2012-08-05-17.06.21.000000 UTC
    
    DB20000I  The ROLLFORWARD command completed successfully.

前滚到一个时间点

此类型的前滚操作将数据库或表空间前滚到一个特定时间点。在在线备份期间,日志会定期从新事务更新。回滚会删除数据库中未提交的事务。但是,当提交事务后,将无法回滚。要删除主要由于用户错误而不想要的数据,可执行时间点 (PIT) 恢复。但是,PIT 恢复无法在包含系统目录的表空间上完成。

对于 PIT 恢复,首先还原数据库或表空间。然后应用截至特定时间点的日志。在下面的示例中,为 SAMPLE 数据库中的 DATA1 和 TEST1 表空间执行了 PIT 恢复。

  1. 使用 RESTORE DATABASE 命令和 TABLESPACEUSE TSM 选项,指定备份映像的时间戳。

    $ db2 "restore db sample tablespace (DATA1, TEST1) online use tsm 
    taken at 20120805223343"
    DB20000I  The RESTORE DATABASE command completed successfully.
  2. 使用 ROLLFORWARD DATABASE 命令和 TABLESPACE 选项将截至一个特定时间点的日志应用到已恢复的表空间。使用协调世界时间 (UTC) 格式指定时间点。时间点必须大于最早的恢复时间。

    $  db2 "rollforward db sample to 2012-08-05-16.26.48.000000 and stop 
    tablespace (DATA1, TEST1) online"
    
                                     Rollforward Status
    
     Input database alias                   = sample
     Number of nodes have returned status   = 1
    
     Node number                            = 0
     Rollforward status                     = not pending
     Next log file to be read               =
     Log files processed                    =  -
     Last committed transaction             = 2012-08-05-17.06.21.000000 UTC
    
    DB20000I  The ROLLFORWARD command completed successfully.

    这两个表空间现在处于备份暂停状态 (0x0020)。


    $ db2 list tablespaces show detail
    .....
    .....
     Tablespace ID                        = 5
     Name                                 = TEST1
     Type                                 = Database managed space
     Contents                             = All permanent data. Large table space.
     State                                = 0x0020
       Detailed explanation:
         Backup pending
     Total pages                          = 4096
     Useable pages                        = 4064
     Used pages                           = 96
     Free pages                           = 3968
     High water mark (pages)              = 96
     Page size (bytes)                    = 8192
     Extent size (pages)                  = 32
     Prefetch size (pages)                = 32
     Number of containers                 = 1
    
     Tablespace ID                        = 6
     Name                                 = DATA1
     Type                                 = Database managed space
     Contents                             = All permanent data. Large table space.
     State                                = 0x0020
    .....
    .....
  3. 使用 BACKUP DATABASE 命令和 USE TSMTABLESPACE 选项备份表空间。

    $ db2 "backup db SAMPLE tablespace (DATA1, TEST1) online use tsm"
    
    Backup successful. The timestamp for this backup image is : 20120806115021

现在,您可以成功地访问并操作 SAMPLE 数据库中的 DATA1 和 TEST1 表空间。


结束语

本文介绍了如何使用 Tivoli Storage Manager 备份和还原 DB2 数据库。您学习了如何配置 Tivoli Storage Manager 客户端和服务器,并了解了在初始设置期间必须注意的考虑因素。本文还提供了一个分步说明,向您展示了如何执行备份操作以及如何使用 Tivoli Storage Manager 服务器中存储的备份映像执行还原和前滚操作。了解了如何执行这些操作之后,就可利用 Tivoli Storage Manager 数据管理特性来管理 DB2 数据库了。

参考资料

学习

讨论

条评论

developerWorks: 登录

标有星(*)号的字段是必填字段。


需要一个 IBM ID?
忘记 IBM ID?


忘记密码?
更改您的密码

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件

 


在您首次登录 developerWorks 时,会为您创建一份个人概要。您的个人概要中的信息(您的姓名、国家/地区,以及公司名称)是公开显示的,而且会随着您发布的任何内容一起显示,除非您选择隐藏您的公司名称。您可以随时更新您的 IBM 帐户。

所有提交的信息确保安全。

选择您的昵称



当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。

昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。

标有星(*)号的字段是必填字段。

(昵称长度在 3 至 31 个字符之间)

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件.

 


所有提交的信息确保安全。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=Information Management, Tivoli
ArticleID=936033
ArticleTitle=使用 Tivoli Storage Manager 备份和恢复 DB2 数据库
publish-date=06282013