基于湖库一体架构,统一管理结构化、半结构化与非结构化等多模态数据,一个系统承载事务处理、实时分析与 AI 工作负载。
执行物理恢复
更新时间:2025-12-30 11:03:58
本节主要介绍如何通过命令的方式进行租户级物理恢复,目前 OceanBase 数据库支持租户级别的基于时间点的全量恢复。
OceanBase 数据库的恢复支持在同集群内恢复,也支持在不同的集群内恢复。
恢复会先根据用户输入的命令,从备份目的端将需要的宏块数据从对应的全量备份和增量备份中恢复到目标租户,并同步拉取和回放事务日志。
前提条件
执行物理恢复前,请确认已完成恢复前准备,具体操作请参见 恢复前准备。
操作步骤
使用
root用户登录集群的sys租户。(可选)执行以下语句,设置备份的恢复密码。
仅在数据备份时添加了密码的场景下才需要设置备份的恢复密码。
obclient [(none)]> SET DECRYPTION IDENTIFIED BY 'password';其中,
password需要替换为备份时添加的密码。如果全量备份和增量备份设置的密码不一样,则需要输入多个密码,密码之间使用英文逗号分隔(全量备份密码放在前面,增量备份密码放在后面)。示例:
obclient [(none)]> SET DECRYPTION IDENTIFIED BY '******'; obclient [(none)]> SET DECRYPTION IDENTIFIED BY '******','******';执行以下语句,开始执行恢复任务。
语句如下:
恢复到指定时间戳
obclient [(none)]> ALTER SYSTEM RESTORE dest_tenant_name FROM uri UNTIL TIME=timestamp WITH restore_option [DESCRIPTION description];恢复到指定 SCN
obclient [(none)]> ALTER SYSTEM RESTORE dest_tenant_name FROM uri UNTIL SCN=scn WITH restore_option [DESCRIPTION description];恢复到最新位点
obclient [(none)]> ALTER SYSTEM RESTORE dest_tenant_name FROM uri WITH restore_option [DESCRIPTION description];
语句中:
uri需要分别指定数据备份路径和日志归档路径;UNTIL [TIME|SCN]指用户指定的恢复终点,恢复到该位点为止,且包括该位点。当指定恢复到
TIME或SCN时, 必须以=来连接指定的值。restore_option支持指定pool_list、locality、primary_zone、kms_encrypt, 其中pool_list为必选项, 其余为可选项。
语句中
TIME或SCN的选取以及各参数的详细说明请参见 物理恢复相关参数介绍。恢复示例如下:
NFS
从数据备份路径
file:///data/nfs/backup/data与日志归档路径file:///data/nfs/backup/archive恢复租户mysql到指定时间戳2020-06-01 00:00:00, 指定资源池为restore_poolobclient [(none)]> 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';从数据备份路径
file:///data/nfs/backup/data与日志归档路径file:///data/nfs/backup/archive恢复租户mysql恢复到当前最新的归档位点, 指定资源池为restore_poolobclient [(none)]> ALTER SYSTEM RESTORE mysql FROM 'file:///data/nfs/backup/data,file:///data/nfs/backup/archive' WITH 'pool_list=restore_pool';从数据备份路径
file:///data/nfs/backup/data与日志归档路径file:///data/nfs/backup/archive恢复租户mysql到指定 scn1658285759724047000, 指定资源池为restore_poolobclient [(none)]> ALTER SYSTEM RESTORE mysql FROM 'file:///data/nfs/backup/data,file:///data/nfs/backup/archive' UNTIL SCN=1658285759724047000 WITH 'pool_list=restore_pool';从数据备份路径
file:///data/nfs/backup/data与日志归档路径file:///data/nfs/backup/archive恢复租户mysql到指定时间戳2020-06-01 00:00:00, 指定资源池为restore_pool, 副本 Locality 为F@z1,F@z2,F@z3。obclient [(none)]> 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&locality=F@z1,F@z2,F@z3';从数据备份路径
file:///data/nfs/backup/data与日志归档路径file:///data/nfs/backup/archive恢复租户mysql到指定时间戳2020-06-01 00:00:00, 指定资源池为restore_pool, 副本 Locality 为F@z1,F@z2,F@z3, 并指定primary_zone为z1。obclient [(none)]> 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&locality=F@z1,F@z2,F@z3&primary_zone=z1';
OSS
除
url参数有所变更外, 其余参数使用与NFS一致。从 OSS 备份路径
oss://oceanbase-test-bucket/backup/data/?host=xxx.aliyun-inc.com&access_id=xxx&access_key=xxx与 OSS 日志归档路径oss://oceanbase-test-bucket/backup/archive/?host=xxx.aliyun-inc.com&access_id=xxx&access_key=xxx恢复租户mysql到指定时间戳2020-06-01 00:00:00, 指定资源池为restore_pool。obclient [(none)]> ALTER SYSTEM RESTORE mysql FROM 'oss://oceanbase-test-bucket/backup/data/?host=xxx.aliyun-inc.com&access_id=xxx&access_key=xxx,oss://oceanbase-test-bucket/backup/archive/?host=xxx.aliyun-inc.com&access_id=xxx&access_key=xxx' UNTIL TIME='2020-06-01 00:00:00' WITH 'pool_list=restore_pool';
(可选)在待恢复租户对应的 Meta 租户创建成功后,如果需要加速恢复,可以通过配置项
ha_high_thread_score配置恢复任务的工作线程数。通过
oceanbase.DBA_OB_TENANTS视图查看待恢复租户对应的 Meta 租户是否创建成功。语句如下:
obclient [(none)]> SELECT * FROM oceanbase.DBA_OB_TENANTS;查询结果中,
TENANT_NAME列中以META$开头的租户即为 Meta 租户,当 Meta 租户的状态为NORMAL时,则表示 Meta 租户创建成功。更多视图
oceanbase.DBA_OB_TENANTS的字段说明信息请参见 oceanbase.DBA_OB_TENANTS。设置配置项
ha_high_thread_score。租户级配置项
ha_high_thread_score用于设置高可用高优先级线程的当前工作线程数。默认值为 0,取值范围为 [0, 100],建议修改为 10。有关配置项ha_high_thread_score的更多介绍,请参见 ha_high_thread_score。语句示例如下:
obclient [(none)]> ALTER SYSTEM SET ha_high_thread_score =10 TENANT = mysql;
后续操作
发起恢复任务后,您可以通过视图查看恢复的进度和结果,具体操作请参见 查看恢复进度。
恢复任务完成后,如果您是从低版本的备份数据恢复到高版本集群中的场景,还需要对租户进行升级,具体操作请参见 恢复完成后升级租户。
恢复成功后,物理恢复流程与物理备库统一,物理恢复后的租户为备租户,后续该租户可作为备租户提供相关服务,也可转为主租户提供服务。作为备租户继续日志归档从源租户回放日志的详细操作参见 备租户分段回放日志;将备租户转为主租户的详细操作请参见 备租户转为主租户。
相关文档
更多恢复相关的介绍,请参见 恢复架构。