首批通过分布式安全可靠测评,为关键业务系统打造
极简化体验物理备份与恢复
更新时间:2025-09-27 10:46:50
本文档旨在以一个极简的租户级备份与恢复示例,为第一次使用 OceanBase 数据库物理备份与恢复的使用者提供完整的最小化使用手册,主要分为以下三个步骤:
- 发起日志归档。
- 发起数据备份。
- 发起物理恢复。
注意事项
- 本文以备份一个租户为例进行介绍,如果需要备份多个租户,在配置备份目的端和归档目的端时,要求每个租户的备份路径和归档路径都配置为独立的空目录,不同租户不能配置相同的路径。
- OceanBase 数据库支持在同集群内恢复,也支持在不同的集群内恢复。
前提条件
本示例以备份介质为 NFS 为例,在体验物理备份恢复前,请确认已完成 NFS 的部署,部署 NFS 相关操作请参见 部署 NFS。
背景信息
本文以非加密租户 oracle_test 为例,介绍如何通过物理备份功能将该租户备份后,再使用备份的数据恢复出一个新租户 oracle_backup。
本示例的关键信息如下:
源租户的日志归档路径为
/data/nfs/backup/archive。归档选择默认的业务优先模式(Optional),每隔一天切分一个日志 Piece。
源租户的数据备份路径为
/data/nfs/backup/data。需要恢复出的目标租户
oracle_backup的资源池为restore_pool,副本Locality为F@z1,并且将租户恢复到最新位点。如果租户所在的集群为多副本集群,请参考 恢复数据 章节一步步进行恢复。
操作步骤
步骤一:发起日志归档
oracle_test租户的租户管理员登录数据库。执行以下命令,配置归档目的端。
obclient> ALTER SYSTEM SET LOG_ARCHIVE_DEST='LOCATION=file:///data/nfs/backup/archive';开启日志归档模式。
obclient> ALTER SYSTEM ARCHIVELOG;确认日志归档状态是否为
DOING。仅当日志归档状态为DOING,才能发起数据备份。obclient> SELECT * FROM DBA_OB_ARCHIVELOG\G查询结果如下:
*************************** 1. row *************************** DEST_ID: 1001 ROUND_ID: 1 INCARNATION: 1 DEST_NO: 0 STATUS: DOING START_SCN: 1706670992366131000 START_SCN_DISPLAY: 2024-01-31 11:16:32.366131 CHECKPOINT_SCN: 1706670992366131001 CHECKPOINT_SCN_DISPLAY: 2024-01-31 11:16:32.366131 COMPATIBLE: 1 BASE_PIECE_ID: 1 USED_PIECE_ID: 1 PIECE_SWITCH_INTERVAL: 86400000000 UNIT_SIZE: 1 COMPRESSION: none INPUT_BYTES: 54533925 INPUT_BYTES_DISPLAY: 52.01MB OUTPUT_BYTES: 54533925 OUTPUT_BYTES_DISPLAY: 52.01MB COMPRESSION_RATIO: 1.00 DELETED_INPUT_BYTES: 0 DELETED_INPUT_BYTES_DISPLAY: 0.00MB DELETED_OUTPUT_BYTES: 0 DELETED_OUTPUT_BYTES_DISPLAY: 0.00MB COMMENT: PATH: file:///data/nfs/backup/archive 1 row in set从查询结果中可知,日志归档状态
STATUS为DOING。
更多日志归档的详细操作及说明,请参见 日志归档 章节。
步骤二:发起数据备份
确认日志归档状态为 DOING 后,即可发起数据备份。
oracle_test租户的租户管理员登录数据库。执行以下命令,配置备份目的端。
obclient> ALTER SYSTEM SET DATA_BACKUP_DEST='file:///data/nfs/backup/data';发起全量数据备份。
obclient> ALTER SYSTEM BACKUP DATABASE;等待数据备份结束。
可以查询视图
DBA_OB_BACKUP_TASKS,如果查询出来的任务列表为空,则表示数据备份结束。obclient> SELECT * FROM DBA_OB_BACKUP_TASKS;查看数据备份结果。
obclient> SELECT * FROM DBA_OB_BACKUP_JOB_HISTORY;查询结果如下:
*************************** 1. row *************************** JOB_ID: 1 INCARNATION: 1 BACKUP_SET_ID: 1 INITIATOR_TENANT_ID: 1002 INITIATOR_JOB_ID: 0 EXECUTOR_TENANT_ID: 1002 PLUS_ARCHIVELOG: OFF BACKUP_TYPE: FULL JOB_LEVEL: USER_TENANT ENCRYPTION_MODE: NONE PASSWD: START_TIMESTAMP: 2024-01-31 11:20:59.804836 END_TIMESTAMP: 2024-01-31 11:23:08.773566 STATUS: COMPLETED RESULT: 0 COMMENT: DESCRIPTION: PATH: file:///data/nfs/backup/data 1 row in set
更多数据备份的详细操作及说明,请参见 数据备份 章节。
步骤三:执行物理恢复
使用
root用户登录目标租户所在集群的sys租户。创建目标租户所需的资源。
创建资源单元
unit_backup。obclient> CREATE RESOURCE UNIT unit_backup MAX_CPU 8, MEMORY_SIZE = '16G', MAX_IOPS 10240, MIN_IOPS=10240;创建目标租户所使用的资源池,建议尽量与源租户保持同构,即资源池中
UNIT_NUM的个数与源租户相同。obclient> CREATE RESOURCE POOL restore_pool UNIT = 'unit_backup', UNIT_NUM = 1, ZONE_LIST = ('z1');
执行物理恢复,恢复出新租户
oracle_backup。obclient> ALTER SYSTEM RESTORE oracle_backup FROM 'file:///data/nfs/backup/data,file:///data/nfs/backup/archive' WITH 'pool_list=restore_pool&locality=F@z1';
更多物理恢复的详细操作及说明,请参见 恢复数据 章节。