本节主要介绍如何通过命令和 OCP 的方式进行物理恢复,目前 OceanBase 数据库支持租户级别的基于时间点的全量恢复。
通过命令进行恢复
恢复会先根据用户输入的命令,从备份的目的地将全量备份恢复回来。之后,再将增量备份恢复到全量备份上面。最后,应用备份出去的事务日志。
使用 sys 租户的 root 用户登录数据库。
(可选)执行以下语句,停止日志备份。
obclient> ALTER SYSTEM NOARCHIVELOG;
说明
由于 V2.2.7x 之前的版本不支持在日志备份的集群上发起恢复,如果发起恢复,会导致日志备份断流,故建议 V2.2.7x 之前的版本在执行恢复前先停止日志备份。
创建 Unit(资源单元)。
示例如下:
obclient> CREATE RESOURCE UNIT box_16c96g max_cpu 16, max_memory 103079215104, max_iops 10240, max_disk_size 53687091200, max_session_num 64, MIN_CPU=16, MIN_MEMORY=103079215104, MIN_IOPS=10240;
创建 Resource Pool(资源池)。
示例如下:
obclient> CREATE RESOURCE POOL restore_pool unit = 'box_16c96g', unit_num = 1, zone_list = ('z1','z2','z3');
执行以下语句,设置加密信息。
说明
如果未加密或恢复时可以访问原来的 KMS,则跳过本步骤。
obclient> SET @kms_encrypt_info = '<加密string>';
其中,
<加密string>
为EXTERNAL_KMS_INFO
的值,EXTERNAL_KMS_INFO
为租户级配置项。打开恢复配置。
检查
restore_concurrency
是否为0
,如果为0
,则需要执行以下语句:obclient> ALTER SYSTEM SET restore_concurrency = 50;
(可选)修改恢复的等待时间。
默认恢复等待时间
_restore_idle_time
为 1 分钟,整个恢复期间会有 3 次等待,即 3 分钟的等待时间。对于测试恢复性能的场景,为了减少恢复的空闲时间,您可以执行以下语句将等待时间调整为10s
。obclient> ALTER SYSTEM SET _restore_idle_time = '10s';
根据现场需要,设置恢复的密码。
obclient> SET DECRYPTION IDENTIFIED BY 'password';
只有在备份时添加了密码的场景下才需要设置恢复的密码。同时如果全量备份+增量备份设置的密码不一样,则需要输入多个密码,密码之间使用逗号分隔。示例如下:
obclient> SET DECRYPTION IDENTIFIED BY 'password1','password2';
执行以下语句,开始执行恢复任务。
obclient> ALTER SYSTEM RESTORE <dest_tenant_name> FROM <source_tenan_tname> at 'uri' UNTIL 'timestamp' WITH 'restore_option';
部分参数说明如下表所示。
参数
描述
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
、kms_encrypt
:backup_cluster_name
为必选项,填写源集群的名称。backup_cluster_id
为必选项,填写源集群的cluster_id
pool_list
为必选项,填写用户的资源池。locality
为可选项,填写租户的 Locality 信息。kms_encrypt
为可选项,为true
则表示在恢复时需要使用步骤 5 指定的kms_encrypt_info
。
恢复示例:
NFS
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;
OSS
obclient> ALTER SYSTEM RESTORE restored_trade FROM trade at 'oss://antsys-oceanbasebackup/backup_rd/?host=cn-hangzhou-alipay-b.oss-cdn.aliyun-inc.com&access_id=xxx&access_key=xxx' until ' 2020-03-23 08:59:45' with 'backup_cluster_name=ob20daily.backup&backup_cluster_id=1&pool_list=restore_pool';
腾讯云 COS
obclient> ALTER SYSTEM RESTORE restored_trade from trade at 'cos://backup-1304745170/backup_rd/20210127?host=cos.ap-nanjing.myqcloud.com&access_id=xxx&access_key=xxx&appid=xxx' until ' 2020-03-23 08:59:45' with 'backup_cluster_name=ob20daily.backup&backup_cluster_id=1&pool_list=restore_pool';
执行以下语句,查看恢复进度。
查看系统表 Root Table:
obclient> SELECT svr_ip,role, is_restore, COUNT(*) FROM __all_root_table AS a, (SELECT value FROM __all_restore_info WHERE name='tenant_id') AS b WHERE a.tenant_id=b.value GROUP BY role, is_restore, svr_ip ORDER BY svr_ip, is_restore;
其中,
is_restore
的取值含义如下:0:表示正常副本
1:表示逻辑恢复的副本
2:表示物理恢复需要恢复基线的副本
3:表示物理恢复需要恢复转储的副本
4:物理恢复需要恢复 clog 的副本
5:物理恢复需要转储的副本
6:物理恢复等待所有副本转储完成的副本
7:物理恢复设置 member list 的副本
role
的取值含义如下:1:表示 Leader
2:表示 Follower
3:表示恢复中的 Leader
查看用户表 Meta Table:
obclient> SELECT svr_ip,role, is_restore, COUNT(*) FROM __all_virtual_meta_table AS a, (SELECT value FROM __all_restore_info WHERE name='tenant_id') AS b WHERE a.tenant_id=b.value GROUP BY role, is_restore, svr_ip ORDER BY svr_ip, is_restore;
或者
obclient> SELECT svr_ip ,is_restore, COUNT(*) FROM __all_virtual_partition_store_info WHERE tenant_id>1002 group by svr_ip,is_restore order by svr_ip, is_restore;
执行以下语句,查看恢复结果。
obclient> SELECT * FROM __all_restore_info;
obclient> SELECT * FROM __all_restore_history;
通过 OCP 进行恢复
您也可以在 OCP 上对已备份的集群发起恢复操作。
说明
不同 OCP 版本的操作界面可能不同,本节以 OCP V2.5.0 版本为例提供操作指导,OCP 其他版本的操作请参考对应版本的《OCP 用户指南》文档。
登录 OCP。
在左侧导航栏上,单击 备份恢复 > 恢复。
在页面右上角单击 发起恢复。
设置存储配置。
存储配置相关说明如下表所示。
配置
描述
存储类型
支持 OSS 和 File 两种类型
存储目录
存储目录:
存储类型 为 OSS 时,示例如下:
oss://antsys-oceanbasebackup/backup_rd/
存储类型 为 File 时,示例如下:
file:///data/nfs/backup
访问域名、访问用户、访问秘钥
如果选择的 存储类型 为 OSS ,则需要输入访问域名、访问用户和访问密钥后,然后单击 测试,确认可访问。
如果已经有可用的配置,可以直接在 存储配置 区域的右上角单击 选择已有配置,并选择对应的配置后,系统会自动解析存储配置。
选择 恢复源与时间。
在列表中选择 源集群**、**源租户 和 恢复的时间点。
选择恢复的目标租户。
在列表中选择运行状态的集群,并在 租户名称 文本框中输入新的租户名称。
对恢复的租户进行 Zone 配置,选择 副本类型**、**Unit 规格 和 Unit 数量,并对 Zone 进行优先级排序。
单击 发起恢复。