首批通过分布式安全可靠测评,为关键业务系统打造
执行指定路径的恢复
更新时间:2026-04-16 00:11:36
当数据备份集(backup_set)和日志归档(archivelog_piece)由于业务原因手动搬迁至其他路径后,可以通过加载对应的 backup_set 和 archivelog_piece 后再发起恢复命令的方式来恢复租户。
前提条件
请确认已获取待恢复的 backup_set 和 archivelog_piece 的存放路径。
请确认待恢复的 backup_set 和 archivelog_piece 属于同一租户,当前仅允许从同一个租户的backup_set 和 archivelog_piece 中恢复出新租户。
请确认已完成恢复前准备,具体操作请参见 恢复前准备。
使用限制
对于 V4.2.1 版本,从 V4.2.1 BP7 版本开始支持指定路径的恢复。
操作步骤
使用
root用户登录待恢复的租户所在集群的sys租户。(可选)执行
ALTER SYSTEM RESTORE...PREVIEW命令,指定原始数据备份路径和日志归档路径及期望恢复的时间。语句如下:
ALTER SYSTEM RESTORE FROM 'uri' UNTIL { TIME='timestamp' | SCN=scn } PREVIEW;相关参数说明如下:
uri:指定原始数据备份路径和日志归档的路径,使用英文逗号分隔。TIME='timestamp' | SCN=scn:指定期望恢复的时间戳或 SCN。执行该语句时,必须显式指定时间。
示例如下:
OSSNFS指定原始数据备份路径和日志归档路径,并且期望恢复到恢复到指定 scn
1712650554000909004。obclient [oceanbase]> ALTER SYSTEM RESTORE FROM 'oss://test_bucket/data?host=***&access_id=****&access_key=****, oss://test_bucket/archive?host=***&access_id=****&access_key=****' UNTIL SCN = 1712650554000909004 PREVIEW;指定原始数据备份路径和日志归档路径,并且期望恢复到指定时间戳
2024-04-09 16:15:54。obclient [oceanbase]> ALTER SYSTEM RESTORE FROM 'oss://test_bucket/data?host=***&access_id=****&access_key=****, oss://test_bucket/archive?host=***&access_id=****&access_key=****' UNTIL TIME = '2024-04-09 16:15:54' PREVIEW;
指定原始数据备份路径和日志归档路径,并且期望恢复到恢复到指定 scn
1712650554000909004。obclient [oceanbase]> ALTER SYSTEM RESTORE FROM 'file:///ob_backup/data, file:///ob_backup/archive' UNTIL SCN = 1712650554000909004 PREVIEW;指定原始数据备份路径和日志归档路径,并且期望恢复到指定时间戳
2024-04-09 16:15:54。obclient [oceanbase]> ALTER SYSTEM RESTORE FROM 'file:///ob_backup/data, file:///ob_backup/archive' UNTIL TIME = '2024-04-09 16:15:54' PREVIEW;
(可选)执行
SHOW RESTORE PREVIEW命令,展示恢复到指定时间所需的 backup_set 和 archivelog_piece。注意
必须在
ALTER SYSTEM RESTORE...PREVIEW命令执行成功后,再执行SHOW RESTORE PREVIEW命令,否则无法获取所需的结果。obclient [oceanbase]> SHOW RESTORE PREVIEW;例如,结果如下:
+--------------+-----------+--------------------------------------------------------------------------------+------------------------------------------------------------------------------+ | backup_type | backup_id | backup_dest | description | +--------------+-----------+--------------------------------------------------------------------------------+------------------------------------------------------------------------------+ | BACKUP_SET | 1 | file:///ob_backup/data/backup_set_1_full | | | BACKUP_PIECE | 1 | file:///ob_backup/archive/piece_d1002r1p1 | start_scn_display: 20240409T155954, checkpoint_scn_display: 20240409T160154. | | BACKUP_PIECE | 2 | file:///ob_backup/archive/piece_d1002r1p2 | start_scn_display: 20240409T160154, checkpoint_scn_display: 20240409T160353. | | BACKUP_PIECE | 3 | file:///ob_backup/archive/piece_d1002r1p3 | start_scn_display: 20240409T160354, checkpoint_scn_display: 20240409T160553. | | BACKUP_PIECE | 4 | file:///ob_backup/archive/piece_d1002r1p4 | start_scn_display: 20240409T160554, checkpoint_scn_display: 20240409T160754. | | BACKUP_PIECE | 5 | file:///ob_backup/archive/piece_d1002r1p5 | start_scn_display: 20240409T160754, checkpoint_scn_display: 20240409T160953. | | BACKUP_PIECE | 6 | file:///ob_backup/archive/piece_d1002r1p6 | start_scn_display: 20240409T160954, checkpoint_scn_display: 20240409T161154. | | BACKUP_PIECE | 7 | file:///ob_backup/archive/piece_d1002r1p7 | start_scn_display: 20240409T161154, checkpoint_scn_display: 20240409T161354. | | BACKUP_PIECE | 8 | file:///ob_backup/archive/piece_d1002r1p8 | start_scn_display: 20240409T161354, checkpoint_scn_display: 20240409T161554. | +--------------+-----------+--------------------------------------------------------------------------------+------------------------------------------------------------------------------+ 9 rows in set查询结果中展示了恢复到指定时间所需的所有 backup_set 和 archivelog_piece,以及这些文件在原始数据备份和日志归档目的端下的存放路径。如果因为业务需要,您已将部分或所有文件手动转移到其他路径或存储介质上,则需要您根据实际情况,自行维护好每个 backup_set 和 archivelog_piece 从原始路径到当前路径之间的映射关系。
例如,上述查询结果中,需要使用
BACKUP_PIECE为1的 archivelog_piece 进行恢复,而该文件已经被手动转移到oss://test_bucket/archive/piece_1上,则在使用ADD RESTORE SOURCE命令加载备份路径时,需要选择新的存放路径oss://test_bucket/archive/piece_1。执行
ADD RESTORE SOURCE命令,分别加载恢复所需的 backup_set 和 archivelog_piece。加载路径的语句如下:
ALTER SYSTEM ADD RESTORE SOURCE 'restore_path';语句使用说明:
restore_path:填写待加载的 backup_set 或 archivelog_piece 的路径。可以是一个路径,也可以是多个路径。注意
如果待加载的 backup_set 或 archivelog_piece 存放在对象存储上,则要求每个 backup_set 或 archivelog_piece 路径中的
host、access_id以及access_key等参数信息均相同。该语句在同一个会话中可以连续多次执行。在同一会话中多次执行时,系统会增量添加到恢复源列表中。
示例如下:
加载待恢复的 backup_set。
obclient [oceanbase]> ALTER SYSTEM ADD RESTORE SOURCE 'file:///ob_backup/data/backup_set_1_full';加载待恢复的 archivelog_piece。
obclient [oceanbase]> ALTER SYSTEM ADD RESTORE SOURCE 'file:///ob_backup/archive/piece_d1002r1p1,file:///ob_backup/archive/piece_d1002r1p2';obclient [oceanbase]> ALTER SYSTEM ADD RESTORE SOURCE 'oss://test_bucket/archive/piece_1?host=***&access_id=x****&access_key=****';
(可选)加载 backup_set 或 archivelog_piece 过程中,如果发现输入了错误的路径,可以执行以下语句来撤销之前的输入后,再重新加载正确的恢复路径。
obclient [oceanbase]> ALTER SYSTEM CLEAR RESTORE SOURCE;所有路径加载成功后,调用恢复命令。
注意
- 执行恢复命令时,要求与执行
ADD RESTORE SOURCE命令的会话是同一个会话,如果不是同一个会话(原先的会话中断或者使用了新的会话),之前加载的恢复源列表就会被清空。 - 执行
ADD RESTORE SOURCE命令后,在同一会话中不允许再通过指定备份目的端的恢复命令来恢复租户。 - 执行恢复命令后,无论是否恢复成功,之前加载的恢复源列表均会被清空。如果您需要重新调用恢复命令,则需要重新加载恢复所需的 backup_set 和 archivelog_piece。
执行以下语句:
ALTER SYSTEM RESTORE restore_tenant_name [UNTIL {TIME='timestamp' | SCN=scn} ] WITH 'restore_option';部分参数说明如下:
restore_tenant_name:待恢复的新租户的名称。UNTIL {TIME='timestamp' | SCN=scn}:指定恢复的时间。timestamp:指定恢复到的时间戳。scn:指定恢复到的 SCN。如果不指定
UNTIL TIME='timestamp'或UNTIL SCN=scn,则默认恢复到能恢复的最新位点。
restore_option:支持指定pool_list、locality、primary_zone、concurrency,不同参数之间通过&分隔。在指定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。
有关各参数的详细说明请参见 物理恢复相关参数介绍。
调用恢复命令的示例如下:
从指定路径恢复租户
mysql到指定 scn1658285759724047000, 并指定资源池为restore_pool。obclient [oceanbase]> ALTER SYSTEM RESTORE mysql UNTIL SCN = 1712650554000909004 WITH 'pool_list=restore_pool';从指定路径恢复租户
mysql到指定时间戳2024-04-09 16:15:54, 并指定资源池为restore_pool。obclient [oceanbase]> ALTER SYSTEM RESTORE mysql UNTIL TIME = '2024-04-09 16:15:54' WITH 'pool_list=restore_pool';
- 执行恢复命令时,要求与执行
后续操作
发起恢复任务后,您可以通过视图查看恢复的进度和结果,具体操作请参见 查看恢复进度。
恢复任务完成后,如果您是从低版本的备份数据恢复到高版本集群中的场景,还需要对恢复出来的租户进行升级,具体操作请参见 恢复完成后升级租户。
物理恢复流程与物理备库统一,物理恢复后的租户为备租户,后续该租户可作为备租户提供相关服务,也可转为主租户提供服务。作为备租户继续日志归档从源租户回放日志的详细操作参见 备租户分段回放日志;将备租户转为主租户的详细操作请参见 备租户转为主租户。
相关文档
更多恢复相关的介绍,请参见 恢复架构。