首批通过分布式安全可靠测评,为关键业务系统打造
执行备份备份数据的恢复
更新时间:2026-06-16 20:48:25
基于备份备份的恢复
使用
root用户登录到数据库的sys租户。执行以下命令,开始执行恢复任务。
obclient> ALTER SYSTEM RESTORE dest_tenant_name FROM source_tenant_name AT 'uri' UNTIL 'timestamp' WITH 'restore_option' PREVIEW;参数说明如下表所示。
参数 描述 dest_tenant_name 指恢复的新租户的名称。 source_tenant_name 指源集群的租户。 uri 指备份时设置的 backup_dest。timestamp 指恢复的时间戳,需要大于等于最早备份的数据备份的 CDB_OB_BACKUP_SET_DETAILS的START_TIME,小于等于日志备份CDB_OB_BACKUP_ARCHIVELOG_SUMMARY的MAX_NEXT_TIME。restore_option 支持 backup_cluster_name、backup_cluster_id、pool_list、locality、primary_zone、kms_encrypt:backup_cluster_name为必选项,填写源集群的名称。backup_cluster_id为必选项,填写源集群的cluster_idpool_list为必选项,填写用户的资源池。多个资源池之间用英文逗号(,)分隔。locality为可选项,填写新租户副本分布的 Locality 信息,需要满足与新租户所在集群的pool_list的 Zone 信息相匹配,默认使用源租户的 Locality。若填写的信息与新租户所在集群的pool_list 的 Zone 信息不匹配,则系统会重置为缺省 Locality,即按 resource_pool 的zone_list为每个 Zone 设一个 F 副本。
例如,源租户的 Locality 为"F@z1,F@z2,F@z3",新租户所在集群的 Zone 分布为"z1,z2,z3,z4",则新租户的 Locality 使用源租户的 Locality。若源租户的 Locality为"F@z1,F@z2,F@z3,F@z4,F@z5",新租户所在集群的 Zone 分布为"z1,z2,z3",则新租户的 Locality 使用所在集群的全部的 Zone,即新租户的 Locality 为"F@z1,F@z2,F@z3"。primary_zone为可选项,填写新租户的 Leader 副本的偏好位置,需要满足与pool_list及locality的匹配,即需要满足 Zone 信息匹配以及primary_region内至少有两个 Paxos 成员等限制,默认使用源租户的 Primary Zone。若填写的信息与新租户所在集群的pool_list及locality不匹配,则系统会将其重置为缺省primary_zone,即按locality的zone_list将 Leader 随机分布在这些 Zone 中。
例如,源租户的 Locality 为"F@z1,F@z2,F@z3",Primary Zone 为z1,新租户所在集群的 Zone 分布为"z1,z2,z3,z4",则新租户的 Primary Zone 也为z1。若源租户的 Locality 为"F@z1,F@z2,F@z3,F@z4,F@z5",Primary Zone 为z1,新租户所在集群的 Zone 分布是"z1,z2,z3",则新租户的 Locality 为"F@z1,F@z2,F@z3", 同时 Primary Zone 为"z1,z2,z3"。kms_encrypt为可选项,为true则表示在恢复时需要使用指定的kms_encrypt_info。
恢复 PREVIEW 示例:
obclient> ALTER SYSTEM RESTORE restored_trade FROM trade AT 'file:///data/nfs/backup' until '2020-05-21 09:39:54.071670' with 'backup_cluster_name=ob20daily.backup&backup_cluster_id=1&pool_list=restore_pool' PREVIEW;执行
SHOW RESTORE PREVIEW来获取恢复数据的路径。obclient> SHOW RESTORE PREVIEW; +--------------+-----------+---------+------------------------------------------------------------------------------------------------------------+-------------+ | backup_type | backup_id | copy_id | backup_dest | file_status | +--------------+-----------+---------+------------------------------------------------------------------------------------------------------------+-------------+ | BACKUP_SET | 1 | 0 | file:///data/nfs/backup/1/incarnation_1/1002/data/backup_set_1_full_20211225 | AVAILABLE | | BACKUP_SET | 2 | 0 | file:///data/nfs/backup/1/incarnation_1/1002/data/backup_set_2_inc_20211225 | AVAILABLE | | BACKUP_SET | 1 | 1 | file:///data/nfs/backup_backup/1/incarnation_1/1002/data/backup_set_1_full_20211225 | AVAILABLE | | BACKUP_SET | 2 | 1 | file:///data/nfs/backup_backup/1/incarnation_1/1002/data/backup_set_2_inc_20211225 | AVAILABLE | | BACKUP_PIECE | 1 | 0 | file:///data/nfs/backup/1/incarnation_1/1002/clog/1_1_20211225 | AVAILABLE | | BACKUP_PIECE | 2 | 0 | file:///data/nfs/backup/1/incarnation_1/1002/clog/1_2_20211225 | AVAILABLE | | BACKUP_PIECE | 2 | 1 | file:///data/nfs/backup_backup/1/incarnation_1/1002/clog/1_2_20211225 | AVAILABLE | +--------------+-----------+---------+------------------------------------------------------------------------------------------------------------+-------------+通过
ADD RESTORE SOURCE语句来加载需要恢复的路径。说明
xxx表示上文展示的路径。需要分别加载BACKUP_SET和BACKUP_PIECE对应的恢复路径,并且对于每一个backup_id相同的BACKUP_SET或BACKUP_PIECE,只需要选择其中一个copy_id对应的路径加入即可。obclient> ALTER SYSTEM ADD RESTORE SOURCE 'xxx';例如,根据上一步的查询结果,对于
BACKUP_SET和BACKUP_PIECE:BACKUP_SETbackup_id为1的BACKUP_SET,可以选择copy_id为0或1对应的路径,语句如下:ALTER SYSTEM ADD RESTORE SOURCE 'file:///data/nfs/backup/1/incarnation_1/1002/data/backup_set_1_full_20211225';或者
ALTER SYSTEM ADD RESTORE SOURCE 'file:///data/nfs/backup_backup/1/incarnation_1/1002/data/backup_set_1_full_20211225';backup_id为2的BACKUP_SET,选择copy_id为0对应的路径,语句如下:ALTER SYSTEM ADD RESTORE SOURCE 'file:///data/nfs/backup/1/incarnation_1/1002/data/backup_set_2_inc_20211225';BACKUP_PIECEbackup_id为1的BACKUP_PIECE,选择copy_id为0对应的路径,语句如下:ALTER SYSTEM ADD RESTORE SOURCE 'file:///data/nfs/backup/1/incarnation_1/1002/clog/1_1_20211225';backup_id为2的BACKUP_PIECE,可以选择copy_id为0或1对应的路径,语句如下:ALTER SYSTEM ADD RESTORE SOURCE 'file:///data/nfs/backup/1/incarnation_1/1002/clog/1_2_20211225';或者
ALTER SYSTEM ADD RESTORE SOURCE 'file:///data/nfs/backup_backup/1/incarnation_1/1002/clog/1_2_20211225';
如果输入错误,您可执行下述语句来撤销之前的输入。
ALTER SYSTEM CLEAR RESTORE SOURCE;调用恢复命令。
obclient> ALTER SYSTEM RESTORE <$restore_tenant> FROM <$backup_tenant> UNTIL '<$restore_checkpoint>' WITH 'backup_cluster_name=$backup_cluster_name&backup_cluster_id=$backup_cluster_id&pool_list=$resource_pool_list&locality=F@$zone_list&primary_zone=$primary_zone_list';注意
与普通的物理恢复不同,基于备份备份的多目的端恢复要求 SQL 语句中不带
at 'backup_dest'字段。其中,$restore_tenant表示恢复的租户名。$backup_tenant表示备份时的租户名。$restore_checkpoint表示希望恢复到的时间戳。
使用示例:
obclient> ALTER SYSTEM RESTORE test_restore_tenant FROM test_backup_tenant UNTIL '2020-05-21 09:39:54.071670' WITH 'backup_cluster_name=test_oceanbase&backup_cluster_id=1&pool_list=small_pool_2&locality=F@z1&primary_zone=z1';