跳到主要内容

数据恢复

提示

数据恢复功能在 ob-operator 2.1.0 版本中引入。

本文档介绍从备份数据恢复的方法。数据恢复依赖关键资源为 OBTenant 和 OBTenantRestore,分别表示租户和租户恢复任务。因数据恢复行为的最终结果是产生一个新的租户,所以使用在 OBTenant Spec 中的 Source 字段来指定租户的恢复源。在租户资源中指定了数据恢复相关的字段之后,Operator 会创建出 OBTenantRestore 资源来执行具体的恢复任务。

前提条件

  • 存在成功备份可恢复的数据。

  • 集群正常运行,并且剩余资源足够创建恢复租户。

  • 如果恢复源为 NFS 类型,需要确定挂载到 OceanBase 集群的备份 Volume 可用。

数据恢复配置文件说明

恢复数据的配置文件即租户管理当中所提到的 OBTenant 资源描述:

apiVersion: oceanbase.oceanbase.com/v1alpha1  
kind: OBTenant
metadata:
name: t1s
# namespace: oceanbase
spec:
obcluster: obcluster
tenantName: t1s
unitNum: 1
tenantRole: STANDBY
source:
restore:
bakDataSource:
# type: "NFS"
# path: "t1/dataBackup"
type: "OSS"
path: "oss://bucket/backup?host=oss-cn-hangzhou.aliyuncs.com"
ossAccessSecret: "oss-access"
archiveSource:
# type: "NFS"
# path: "t1/logArchive"
type: "OSS"
path: "oss://bucket/archive?host=oss-cn-hangzhou.aliyuncs.com"
ossAccessSecret: "oss-access"
until:
unlimited: true
replayLogUntil:
unlimited: true
tenant: t1
fields: values

数据恢复相关配置说明如下:

  • tenantRole: 需要创建的租户的角色,可选值为 PRIMARY 和 STANDBY,分别代表主租户和备租户。如果不指定,默认为 PRIMARY;有关备租户/物理备库的说明文档,请查看物理备库
  • source: 租户数据来源
    • restore: 备份数据恢复源
      • bakDataSource: 备份数据恢复的目标地址,与数据备份中数据备份目的地配置相同
      • archiveSource: 日志归档恢复的目标地址,同上
      • until: 数据恢复的截止位点
        • unlimited: 恢复到最新位点
        • timestamp: 需要恢复到的时间戳,格式为 YYYY-MM-DD HH:mm:ss,例如 2023-11-10 09:00:00
        • scn: 需要恢复到的 SCN
      • replayLogUntil: 作为数据恢复截止位点的补充,表示在数据恢复之后继续回放主租户日志到指定的位点,仅在恢复成为备租户且数据恢复截止位点没有设置为最新位点时生效,配置与 until 相同
    • tenant: 指定主租户,仅在恢复成为备租户时生效
  • 其他配置与正常租户的配置相同

常用操作实例

发起数据恢复

使用以下命令发起租户数据恢复。

kubectl apply -f tenant_restore.yaml

查看数据恢复状态

  • 使用以下命令,查看待恢复租户的状态。
kubectl get obtenants.oceanbase.oceanbase.com -n oceanbase

返回结果如下:

NAME   STATUS      TENANTNAME   TENANTROLE   CLUSTERNAME   AGE
t1s restoring t1s STANDBY obcluster 27s
  • 使用以下命令查看创建的租户恢复任务。
kubectl get obtenantrestores.oceanbase.oceanbase.com -n oceanbase

返回结果如下:

NAME          STATUS    AGE    TARGETTENANT   TARGETCLUSTER   RESTOREROLE   STATUSINDB
t1s-restore RUNNING 113s t1s obcluster STANDBY WAIT_TENANT_RESTORE_FINISH
  • 使用以下命令查看租户恢复任务的详细信息
kubectl describe obtenantrestores.oceanbase.oceanbase.com -n oceanbase

返回结果如下:

Name:         t1s-restore
Namespace: oceanbase
Labels: oceanbase.oceanbase.com/tenant-name=t1s
ref-obcluster=obcluster
ref-uid=b9317541-6566-4ac0-84fb-9a4c6fca03ba
Annotations: <none>
API Version: oceanbase.oceanbase.com/v1alpha1
Kind: OBTenantRestore
Metadata:
Creation Timestamp: 2023-11-13T03:13:26Z
Generation: 1
Owner References:
API Version: oceanbase.oceanbase.com/v1alpha1
Block Owner Deletion: true
Kind: OBTenant
Name: t1s
UID: b9317541-6566-4ac0-84fb-9a4c6fca03ba
Resource Version: 927784
UID: e439a060-9758-4074-a170-661d3e23a836
Spec:
Primary Tenant: t1
Restore Option: pool_list=pool_t1s_zone1&primary_zone=zone1;&locality=FULL{1}@zone1
Restore Role: STANDBY
Source:
Archive Source:
Oss Access Secret: oss-access
Path: oss://bucket/archive?host=oss-cn-hangzhou.aliyuncs.com
Type: OSS
Bak Data Source:
Oss Access Secret: oss-access
Path: oss://bucket/backup?host=oss-cn-hangzhou.aliyuncs.com
Type: OSS
Replay Log Until:
Unlimited: true
Until:
Unlimited: true
Target Cluster: obcluster
Target Tenant: t1s
Status:
Restore Progress:
backup_cluster_name: obcluster
backup_cluster_version:
backup_dest: oss://bucket/backup?host=oss-cn-hangzhou.aliyuncs.com&access_id=xxx&access_key=yyy,oss://bucket/archive?host=oss-cn-hangzhou.aliyuncs.com&access_id=xxx&access_key=yyy
backup_piece_list: oss://bucket/archive/piece_d1005r10p10?host=oss-cn-hangzhou.aliyuncs.com&access_id=xxx&access_key=yyy
backup_set_list: oss://bucket/backup/backup_set_25_full?host=oss-cn-hangzhou.aliyuncs.com&access_id=xxx&access_key=yyy,oss://bucket/backup/backup_set_26_inc?host=oss-cn-hangzhou.aliyuncs.com&access_id=xxx&access_key=yyy
backup_tenant_id: 1016
backup_tenant_name: t1
Description:
finish_ls_count: 0
finish_tablet_count: 0
finish_timestamp:
job_id: 5
ls_count: 0
restore_option: pool_list=pool_t1s_zone1&primary_zone=zone1;&locality=FULL{1}@zone1
restore_scn: 1697098764718466986
restore_scn_display: 2023-10-12 16:19:24.718466
restore_tenant_id: 1004
restore_tenant_name: t1s
start_timestamp: 2023-11-13 11:13:46.220513
Status: WAIT_TENANT_RESTORE_FINISH
tablet_count: 0
tenant_id: 1
Status: RUNNING
Events: <none>

查看租户恢复是否成功

  • 连接 sys 租户。
mysql -h$(kubectl get pods -l ref-obcluster=test -o jsonpath='{.items[0].status.podIP}') -P2881 -uroot oceanbase -A -c
  • 查看需恢复的租户是否恢复。
select * from DBA_OB_TENANTS;