问题现象
使用 A 集群的备份文件黑屏恢复到 B 集群时报错 -9011 ERROR 9011 (HY000):cannot find backup file。
关键日志信息。
[2024-05-06 11:20:33.166059] INFO [STORAGE] ob_storage_oss_base.cpp:1325 [1303546][0][xxxxx-xxxxx-xxxxx-xxxxx] [lt=11] [dc=0] file not exist(ret=-9011, bucket_ob_string=ob2a-backup, object_ob_string=b_cluster/xxxxxxxx/incarnation_1/tenant_name_info_@versionset@/@version@_xxxxxx)
由上信息可知 object_ob_string 中的路径为 b_cluster,正确路径应该是 a_cluster/。
问题原因
恢复命令编写错误,集群名应该写备份源端的 A 集群名,但错写成了目标端 B 集群名,此时内核在拼接文件路径时前缀会拼接成目标端集群名的路径,导致找不到文件。
错误命令如下:
ALTER SYSTEM RESTORE obtenant_a FROM tenant_a at 'oss://obbackup/?host=xxxxx' until '2024-05-06 10:00:00' with 'backup_cluster_name=bcluster&backup_cluster_id=100010&pool_list=pool1
正确命令如下:
ALTER SYSTEM RESTORE ob_tenant_a FROM tenant_a at 'oss://obbackup/?host=xxxxx' until '2024-05-06 10:00:00' with 'backup_cluster_name=acluster&backup_cluster_id=10001&pool_list=pool1
问题的风险及影响
恢复失败。
影响租户
影响 OceanBase 数据库中的 SYS 租户和 Oracle 租户以及 MySQL 租户。
适用版本
OceanBase 数据库 V3.x 版本。
解决方法及规避方式
将恢复命令的 backup_cluster_name 和 backup_cluster_id 填写为备份文件源端集群的集群名,大小写要一致。