使用 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 。
先决条件
您将需要以下信息:
- 要备份的数据库系统和数据库。
-
必须为数据库系统的云网络 (VCN) 配置以下对象存储访问权限:
- 对于与数据库系统位于同一区域的对象存储访问,Oracle 建议使用服务网关。
- 对于与数据库系统不同的对象存储访问:使用 Internet 网关。请注意,数据库系统与对象存储之间的网络流量不会离开云,也不会到达公共互联网。
有关详细信息,请参阅 VCN 和子网。
-
要用作备份目标的现有对象存储存储容器。您可以使用控制台或对象存储 API 创建存储桶。
有关更多信息,请参见 Managing Buckets 。
-
由 OCI 生成的验证令牌。您可以使用控制台或 IAM API 生成密码。
有关更多信息,请参见 Managing User Credentials 中的 Working with auth tokens 。
-
用户名(在安装和使用备份模块时指定)必须具有对对象存储的租户级访问权限。这样做的一个简单方法是将用户名添加到 Administrators 组中。但是,这允许访问所有云服务。管理员应创建如下策略来限制对对象存储中所需资源的访问,以便备份和还原数据库:
Allow group <group_name> to manage objects in compartment <compartment_name> where target.bucket.name = '<bucket_name>' Allow group <group_name> to read buckets in compartment <compartment_name>
在数据库系统上安装备份模块
-
通过 SSH 连接到数据库系统。
ssh -i <SSH_key_used_when_launching_the_DB_system> opc@<DB_system_IP_address_or_hostname> -
以
opc用户身份登录。login as: opc -
sudo至oracle用户。sudo su - oracle -
转到包含
opc_install.jar备份模块文件的目录。cd /opt/oracle/oak/pkgrepos/oss/odbcs -
使用以下命令语法安装备份模块。
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>参数包括:
参数 说明 -opcIdOracle 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 配置为将存储桶用作默认备份目标。以下情况假定您仍登录到数据库系统。
-
在数据库系统上,使用
oraenv实用程序设置ORACLE_HOME和ORACLE_SID环境变量。. oraenv -
使用 RMAN 连接到数据库。
rman target / -
将 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)'; -
将 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 命令。
备份该数据库
本主题提供了常用备份命令的示例。
-
设置数据库加密:
SET ENCRYPTION IDENTIFIED BY "password" ONLY;请注意,此设置不是永久性的;必须为每个新的 RMAN 会话设置此设置。
-
备份数据库和归档日志。下面是一些示例命令。有关选择满足您需求的备份过程的详细信息,请参阅您的 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; -
经常备份归档日志以尽可能减少潜在的数据丢失,并保留多个备份副本作为预防措施。
BACKUP ARCHIVELOG ALL NOT BACKED UP 2 TIMES;
备份作业完成后,您可以通过选择对象存储,在控制台的存储页上显示存储桶中的备份文件。