首批通过分布式安全可靠测评,为关键业务系统打造
执行物理恢复
更新时间:2026-04-10 11:58:01
本节主要介绍如何通过命令的方式进行租户级物理恢复,目前 OceanBase 数据库支持租户级别的基于时间点的全量恢复。
OceanBase 数据库的恢复支持在同集群内恢复,也支持在不同的集群内恢复。
恢复会先根据用户输入的命令,从备份目的端将需要的宏块数据从对应的全量备份和增量备份中恢复到目标租户,并同步拉取和回放事务日志。
前提条件
执行物理恢复前,请确认已完成恢复前准备,具体操作请参见 恢复前准备。
操作步骤
使用
root用户登录集群的sys租户。(可选)执行以下语句,设置备份的恢复密码。
仅在数据备份时添加了密码的场景下才需要设置备份的恢复密码。
SET DECRYPTION IDENTIFIED BY 'password';其中,
password需要替换为备份时添加的密码。如果全量备份和增量备份设置的密码不一样,则需要输入多个密码,密码之间使用英文逗号分隔(全量备份密码放在前面,增量备份密码放在后面)。全量备份和增量备份设置的密码相同时的示例如下:
SET DECRYPTION IDENTIFIED BY '******';全量备份和增量备份设置的密码不一样时的示例如下:
SET DECRYPTION IDENTIFIED BY '******','******';执行以下语句,设置加密信息。
说明
如果未加密或恢复时可以访问原来的密钥管理服务,则跳过本步骤。
obclient [(none)]> SET @kms_encrypt_info = '<加密string>';其中,
<加密string>为EXTERNAL_KMS_INFO的值,EXTERNAL_KMS_INFO为租户级配置项。说明
external_kms_info用于存储一些密钥管理信息。有关该配置项的详细介绍,请参见 external_kms_info。执行以下语句,开始执行恢复任务。
语句如下:
恢复到指定时间戳
ALTER SYSTEM RESTORE dest_tenant_name FROM uri UNTIL TIME='timestamp' WITH 'restore_option' [WITH KEY FROM 'backup_key_path' ENCRYPTED BY 'password'] [DESCRIPTION description];恢复到指定 SCN
ALTER SYSTEM RESTORE dest_tenant_name FROM uri UNTIL SCN=scn WITH 'restore_option' [WITH KEY FROM 'backup_key_path' ENCRYPTED BY 'password'] [DESCRIPTION description];恢复到最新位点
ALTER SYSTEM RESTORE dest_tenant_name FROM uri WITH 'restore_option' [WITH KEY FROM 'backup_key_path' ENCRYPTED BY 'password'] [DESCRIPTION description];
语句中:
dest_tenant_name:待恢复的新租户的名称。uri需要分别指定数据备份路径和日志归档路径;UNTIL [TIME|SCN]指用户指定的恢复终点,恢复到该位点为止,且包括该位点。当指定恢复到
TIME或SCN时, 必须以=来连接指定的值。restore_option支持指定pool_list、locality、primary_zone、concurrency、kms_encrypt等参数, 不同参数之间通过&分隔。在指定locality和primary_zone时,建议尽量与源租户保持同构。如果不同构,待租户恢复后激活为主租户可能会产生负载均衡操作,影响性能。pool_list:填写为待恢复的新租户创建的资源池。多个资源池之间用英文逗号(,)分隔。Locality:指定新租户副本分布的 Locality 信息,需要与新租户所在集群的pool_list的 Zone 信息相匹配。与源租户保持同构时,建议新租户与源租户的 F 副本个数相同。primary_zone:指定新租户的 Leader 副本的偏好位置,需要与pool_list及locality相匹配。与源租户保持同构时,建议新租户与源租户的第一优先级的 Primary Zone 个数相同。concurrency:指定数据恢复的并发度。如果不指定,则默认等于该租户被分配的MAX_CPU数。例如,本文档中,系统租户为待恢复的租户分配的MAX_CPU为 16。kms_encrypt:为true时,表示在恢复时需要使用在恢复前指定的kms_encrypt_info。
有关各参数的详细说明请参见 物理恢复相关参数介绍。
WITH KEY FROM 'backup_key_path' ENCRYPTED BY 'password':指定加密租户的秘钥备份信息。仅当源租户配置了透明加密,才需要在恢复时指定秘钥备份相关的信息。backup_key_path:秘钥的备份路径。password:备份秘钥时设置的加密密码。
有关秘钥备份的相关操作,请参见 备份前准备 中的 备份秘钥。
语句中
TIME或SCN的选取以及各参数的详细说明请参见 物理恢复相关参数介绍。恢复示例如下:
阿里云 OSSNFS腾讯云 COSAWS S3兼容 S3 协议的对象存储从 OSS 备份路径与日志归档路径恢复租户
mysql到指定时间戳2020-06-01 00:00:00, 指定资源池为restore_pool,同时恢复源租户的密钥信息。obclient> ALTER SYSTEM RESTORE mysql FROM 'oss://oceanbase-test-bucket/backup/data/?host=***.aliyun-inc.com&access_id=***&access_key=***,oss://oceanbase-test-bucket/backup/archive/?host=***.aliyun-inc.com&access_id=***&access_key=***' UNTIL TIME='2020-06-01 00:00:00' WITH 'pool_list=restore_pool' WITH KEY FROM 'oss://oceanbase-test-bucket/data_backup_dest/key?host=***.aliyun-inc.com&access_id=***&access_key=***' ENCRYPTED BY '******';从数据备份路径与日志归档路径恢复租户
mysql到指定 scn1658285759724047000, 指定资源池为restore_pool。obclient> ALTER SYSTEM RESTORE mysql FROM 'oss://oceanbase-test-bucket/backup/data/?host=***.aliyun-inc.com&access_id=***&access_key=***,oss://oceanbase-test-bucket/backup/archive/?host=***.aliyun-inc.com&access_id=***&access_key=***' UNTIL SCN=1658285759724047000 WITH 'pool_list=restore_pool';从数据备份路径与日志归档路径恢复租户
mysql恢复到当前最新的归档位点, 指定资源池为restore_pool,同时指定恢复的并发度concurrency为50。obclient> ALTER SYSTEM RESTORE mysql FROM 'oss://oceanbase-test-bucket/backup/data/?host=***.aliyun-inc.com&access_id=***&access_key=***,oss://oceanbase-test-bucket/backup/archive/?host=***.aliyun-inc.com&access_id=***&access_key=***' WITH 'pool_list=restore_pool&concurrency=50';从数据备份路径与日志归档路径恢复租户
mysql到指定时间戳2020-06-01 00:00:00, 指定资源池为restore_pool, 副本 Locality 为F@z1,F@z2,F@z3。obclient> ALTER SYSTEM RESTORE mysql FROM 'oss://oceanbase-test-bucket/backup/data/?host=***.aliyun-inc.com&access_id=***&access_key=***,oss://oceanbase-test-bucket/backup/archive/?host=***.aliyun-inc.com&access_id=***&access_key=***' UNTIL TIME='2020-06-01 00:00:00' WITH 'pool_list=restore_pool&locality=F@z1,F@z2,F@z3';从数据备份路径与日志归档路径恢复租户
mysql到指定时间戳2020-06-01 00:00:00, 指定资源池为restore_pool, 副本 Locality 为F@z1,F@z2,F@z3, 并指定primary_zone为z1。obclient> ALTER SYSTEM RESTORE mysql FROM 'oss://oceanbase-test-bucket/backup/data/?host=***.aliyun-inc.com&access_id=***&access_key=***,oss://oceanbase-test-bucket/backup/archive/?host=***.aliyun-inc.com&access_id=***&access_key=***' UNTIL TIME='2020-06-01 00:00:00' WITH 'pool_list=restore_pool&locality=F@z1,F@z2,F@z3&primary_zone=z1';
除
url参数有所变更外, 其余参数的使用与 OSS 一致。从数据备份路径与日志归档路径恢复租户
mysql到指定时间戳2020-06-01 00:00:00, 指定资源池为restore_pool,同时恢复源租户的密钥信息。obclient> ALTER SYSTEM RESTORE mysql FROM 'file:///data/nfs/backup/data,file:///data/nfs/backup/archive' UNTIL TIME='2020-06-01 00:00:00' WITH 'pool_list=restore_pool' WITH KEY FROM 'file:///data_backup_dest/key' ENCRYPTED BY '******';从数据备份路径与日志归档路径恢复租户
mysql恢复到当前最新的归档位点, 指定资源池为restore_pool,同时指定恢复的并发度concurrency为50。obclient> ALTER SYSTEM RESTORE mysql FROM 'file:///data/nfs/backup/data,file:///data/nfs/backup/archive' WITH 'pool_list=restore_pool&concurrency=50';
除
url参数有所变更外, 其余参数的使用与NFS一致。从 COS 备份路径与 COS 日志归档路径恢复租户
mysql到指定时间戳2020-06-01 00:00:00, 指定资源池为restore_pool。ALTER SYSTEM RESTORE mysql FROM 'cos://oceanbase-test-appid/backup?host=cos.ap-****.myqcloud.com&access_id=***&access_key=***&appid=***, cos://oceanbase-test-appid/backup/archive?host=cos.ap-****.myqcloud.com&access_id=***&access_key=***&appid=***' UNTIL TIME='2020-06-01 00:00:00' WITH 'pool_list=restore_pool';除
url参数有所变更外, 其余参数的使用与NFS一致。从 S3 备份路径与 S3 日志归档路径恢复租户
mysql到指定时间戳2024-01-15 00:00:00, 指定资源池为restore_pool。ALTER SYSTEM RESTORE mysql FROM 's3://oceanbase-test-bucket/backup/data?host=s3.<region>.amazonaws.com&access_id=***&access_key=***&s3_region=***, s3://oceanbase-test-bucket/backup/archive?host=s3.<region>.amazonaws.com&access_id=***&access_key=***&s3_region=***' UNTIL TIME='2024-01-15 00:00:00' WITH 'pool_list=restore_pool';除
url参数有所变更外, 其余参数的使用与 OSS 一致。从 OBS 备份路径与日志归档路径恢复租户
mysql到指定时间戳2020-06-01 00:00:00,指定资源池为restore_pool。obclient> ALTER SYSTEM RESTORE mysql FROM 's3://oceanbase-test-bucket/backup/data/?host=obs.***.myhuaweicloud.com&access_id=***&access_key=***,s3://oceanbase-test-bucket/backup/archive/?host=obs.***.myhuaweicloud.com&access_id=***&access_key=***' UNTIL TIME='2023-06-01 00:00:00' WITH 'pool_list=restore_pool';从 GCS 备份路径与日志归档路径恢复租户
mysql到指定时间戳2020-06-01 00:00:00,指定资源池为restore_pool。obclient> ALTER SYSTEM RESTORE mysql FROM 's3://oceanbase-test-bucket/backup/data/?host=https://storage.googleapis.com&access_id=***&access_key=***,s3://oceanbase-test-bucket/backup/archive/?host=https://storage.googleapis.com&access_id=***&access_key=***' UNTIL TIME='2023-06-01 00:00:00' WITH 'pool_list=restore_pool';
(可选)在待恢复租户对应的 Meta 租户创建成功后,如果需要加速恢复,可以通过配置项
ha_high_thread_score配置恢复任务的并发线程数。通过
oceanbase.DBA_OB_TENANTS视图查看待恢复租户对应的 Meta 租户是否创建成功。语句如下:
SELECT * FROM oceanbase.DBA_OB_TENANTS;查询结果中,
TENANT_NAME列中以META$开头的租户即为 Meta 租户,当 Meta 租户的状态为NORMAL时,则表示 Meta 租户创建成功。更多视图
DBA_OB_TENANTS的字段说明信息请参见 DBA_OB_TENANTS。设置配置项
ha_high_thread_score。租户级配置项
ha_high_thread_score用于设置高可用高优先级线程的当前工作线程数。默认值为 0,取值范围为 [0, 100],建议修改为 10。有关配置项ha_high_thread_score的更多介绍,请参见 ha_high_thread_score。语句示例如下:
ALTER SYSTEM SET ha_high_thread_score =10 TENANT = mysql;
后续操作
发起恢复任务后,您可以通过视图查看恢复的进度和结果,具体操作请参见 查看恢复进度。
恢复任务完成后,如果您是从低版本的备份数据恢复到高版本集群中的场景,还需要对恢复出来的租户进行升级,具体操作请参见 恢复完成后升级租户。
物理恢复流程与物理备库统一,物理恢复后的租户为备租户,后续该租户可作为备租户提供相关服务,也可转为主租户提供服务。作为备租户继续日志归档从源租户回放日志的详细操作参见 备租户分段回放日志;将备租户转为主租户的详细操作请参见 备租户转为主租户。
相关文档
更多恢复相关的介绍,请参见 恢复架构。