使用 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 。请注意,dbcli
命令不可用于多节点 RAC 数据库系统。
Prerequisites
您需要以下各项:
- 要备份的数据库系统和数据库。
- 必须为数据库系统的云网络 (VCN) 配置对对象存储的访问权限:
- 对于与数据库系统在同一区域中的对象存储访问:Oracle 建议使用服务网关。
- 要从数据库系统以外的其他区域访问对象存储,请使用互联网网关。请注意,数据库系统与对象存储之间的网络流量不会离开云,也不会到达公共互联网。
有关更多信息,请参见VCN 和子网。
- 要用作备份目的地的现有对象存储桶。您可以使用控制台或对象存储 API 创建存储桶。
有关详细信息,请参阅管理存储桶。
- OCI 生成的验证令牌。您可以使用控制台或 IAM API 生成密码。
有关更多信息,请参见 Managing User Credentials 中的 Working with auth token 。
-
用户名(在安装和使用备份模块时指定)必须具有对对象存储的租户级访问权限。这样做的简单方法是将用户名添加到 "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>
有关将用户添加到组的更多信息,请参见 Managing Groups 。有关策略的详细信息,请参阅策略入门。
在数据库系统上安装备份模块
- 通过 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>
参数包括:
Parameter (参数) 说明 -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
是租户的对象存储名称空间。有关更多信息,请参见 Understanding Object Storage Namespaces 。请勿在对象存储名称空间后添加斜杠。
要查找区域名称,请参阅区域和可用性域。
配置 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 备份和恢复文档。
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 备份和恢复文档。确保定期备份以最大程度地减少潜在的数据丢失,并始终包括 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;
备份作业完成后,您可以通过选择对象存储在控制台的存储页面上显示存储桶中的备份文件。