使用 RMAN 将数据库备份到对象存储

本文介绍了如何使用恢复管理器 (RMAN) 管理数据库系统数据库到您自己的对象存储的备份。

要备份到该服务,您需要为备份创建对象存储存储桶,生成该服务的密码,安装 Oracle Database Cloud Backup Module,然后配置 RMAN 以将备份发送到该服务。备份模块是与 RMAN 紧密集成的系统备份到磁带 (system backup to tape,SBT) 接口,因此您可以使用熟悉的 RMAN 命令执行备份和恢复操作。

您会注意到控制台和服务的端点 URL 中提到的 Swift 。这是因为备份模块通常用于备份到 Oracle Database Backup Cloud Service,这是一个 OpenStack Swift 对象存储。

提示:在数据库系统上,可以使用 DBCLI 备份到对象存储。这是安装备份模块并使用 RMAN 进行备份的替代方法。有关更多信息,请参见Objectstoreswift Commands 。

先决条件

您将需要以下信息:

在数据库系统上安装备份模块

  1. 通过 SSH 连接到数据库系统。

    ssh -i <SSH_key_used_when_launching_the_DB_system> opc@<DB_system_IP_address_or_hostname>
  2. 以 opc 用户身份登录。

    login as: opc
  3. sudo 至 oracle 用户。

    sudo su - oracle
  4. 转到包含 opc_install.jar 备份模块文件的目录。

    cd /opt/oracle/oak/pkgrepos/oss/odbcs
  5. 使用以下命令语法安装备份模块。

    java -jar opc_install.jar
        -opcId <user_id>
        -opcPass '<auth_token>'
        -container <bucket_name>
        -walletDir ~/hsbtwallet/
        -libDir ~/lib/
        -configfile ~/config
        -host https://swiftobjectstorage.<region_name>.oraclecloud.com/v1/<object_storage_namespace>

    参数包括:

    参数 说明
    -opcId Oracle Cloud Infrastructure 用户帐户的用户名,例如:-opcId <username>@<example>.com。
    这是用于登录控制台的用户名。
    用户名必须是 Administrators 组的成员,如先决条件部分所述。
    还可以用单引号指定用户名。如果名称包含特殊字符(例如:-opcId 'j~smith@<example>.com'
    请务必使用单引号,而不是倾斜的撇号),则可能需要执行此操作。
    -opcPass 使用控制台或 IAM API 生成的验证令牌(单引号),例如:-opcPass <password>
    请确保使用单引号,而不是倾斜撇号。
    有关更多信息,请参见 Managing User Credentials 。
    这不是 Oracle Cloud Infrastructure 用户的密码。
    -container 对象存储中要用作备份目标的现有存储桶的名称,例如:-container DBBackups
    -walletDir 安装工具将创建包含 Oracle Cloud Infrastructure 用户名和验证令牌的 Oracle Wallet 的目录。
    -walletDir ~/hsbtwallet 将在当前用户 (oracle) 主目录中创建 wallet。
    -libDir 存储 SBT 库的目录。在运行该命令之前,该目录必须已存在。此参数将导致下载最新的 SBT 库。
    -libDir ~/lib/ 将 libopc.so 文件下载到当前用户的起始目录,例如 /home/oracle/lib/libopc.so。
    -configfile 安装工具将创建的初始化参数文件的名称。RMAN 作业将引用此文件。
    -configfile ~/config 将在当前用户的起始目录(例如 /home/oracle/config)中创建该文件。
    -host 要将备份发送到的端点 URL:
    https://swiftobjectstorage.<region_name>.oraclecloud.com/v1/<object_storage_namespace>
    其中 object_storage_namespace 是租户的对象存储名称空间。有关详细信息,请参阅了解对象存储名称空间。
    请勿在对象存储名称空间后面添加斜杠。
    要查找区域名称,请参阅区域和可用性域。

配置 RMAN

本主题介绍了如何将 RMAN 配置为将存储桶用作默认备份目标。以下情况假定您仍登录到数据库系统。

  1. 在数据库系统上,使用 oraenv 实用程序设置 ORACLE_HOME 和 ORACLE_SID 环境变量。

    . oraenv
  2. 使用 RMAN 连接到数据库。

    rman target /
  3. 将 RMAN 配置为使用 SBT 设备并指向在安装备份模块时创建的 config 文件。此处显示了版本 12 数据库的命令样例。

    CONFIGURE CHANNEL DEVICE TYPE 'SBT_TAPE' PARMS
        'SBT_LIBRARY=/home/oracle/lib/libopc.so,
        SBT_PARMS=(OPC_PFILE=/home/oracle/config)';
  4. 将 RMAN 配置为默认使用 SBT_TAPE。以下示例将控制文件和 spfile 自动备份启用到 SBT_TAPE 并配置加密。其他设置可能适用于您的安装,例如压缩、要使用的备份和恢复通道数、备份保留策略、归档日志删除策略等。有关选择适当设置的更多信息,请参见适用于您的 Oracle 版本的 Oracle Backup and Recovery 文档。

    CONFIGURE DEFAULT DEVICE TYPE TO SBT_TAPE;
    CONFIGURE BACKUP OPTIMIZATION ON;
    CONFIGURE CONTROLFILE AUTOBACKUP ON;
    CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE SBT_TAPE TO '%F';
    CONFIGURE ENCRYPTION FOR DATABASE ON;

注:备份必须加密。执行备份时将指定加密。如果未加密备份,将出现错误。

RMAN 配置完成后,您可以使用定期用于磁带备份的相同 RMAN 命令。

备份该数据库

本主题提供了常用备份命令的示例。

  1. 设置数据库加密:

    SET ENCRYPTION IDENTIFIED BY "password" ONLY;

    请注意,此设置不是永久性的;必须为每个新的 RMAN 会话设置此设置。

  2. 备份数据库和归档日志。下面是一些示例命令。有关选择满足您需求的备份过程的详细信息,请参阅您的 Oracle 版本的 Oracle Backup and Recovery 文档。请务必定期备份,以最大限度地减少潜在的数据丢失,并始终包括 spfile 和控制文件的副本。请注意,下面的示例使用多部分增量备份,这是 12c 中引入的一项功能。使用 11g 时,省略 section size 子句。

    BACKUP INCREMENTAL LEVEL 0 SECTION SIZE 512M DATABASE PLUS ARCHIVELOG;
    BACKUP INCREMENTAL LEVEL 1 SECTION SIZE 512M DATABASE PLUS ARCHIVELOG;
    BACKUP INCREMENTAL LEVEL 1 CUMULATIVE SECTION SIZE 512M DATABASE PLUS ARCHIVELOG;
  3. 经常备份归档日志以尽可能减少潜在的数据丢失,并保留多个备份副本作为预防措施。

    BACKUP ARCHIVELOG ALL NOT BACKED UP 2 TIMES;

备份作业完成后,您可以通过选择对象存储,在控制台的存储页上显示存储桶中的备份文件。