ob备份还原租户的时候报错

【 使用环境 】生产环境 or 测试环境
【 OB or 其他组件 】ob
【 使用版本 】4.2.0_CE
【问题描述】

  1. 通过备份文件的形式还原租户失败
    执行:
    ALTER SYSTEM RESTORE syncmysql FROM ‘file:///sync/databackup’ WITH ‘pool_list=syncpool’;

报错:-Error 1210 (HY000): Incorrect arguments to cluster version of backup set

1 个赞

1.你这里备份是通过 PLUS ARCHIVELOG 方式发起的吗?,若是是通过 PLUS ARCHIVELOG 方式发起的只需要填一个路径即可,否则需要分别输入数据备份和日志归档至少 2 个路径,例如:‘file:///backup/archive, file:///backup/data’

2.备份租户的OB版本和恢复的OB版本一致吗?

1 个赞
  1. 是的 通过完整备份包归档,只写一个备份包路径
  2. ob版本一致

麻烦按如下步骤提供下日志

1.开启 Trace 功能
SET ob_enable_show_trace=ON;
2.执行SQL
3.获取SQL trace_id
SELECT last_trace_id() FROM DUAL;
4.登录对应 OBServer 节点,进入到日志文件所在目录
cd /home/admin/oceanbase/log
5.获取trace_id对应的日志
grep xxxxxxx observer.log --填写第3步获取的trace_id
grep xxxxxxx rootservice.log --填写第3步获取的trace_id

ob_log.rar (6.5 KB)

已按步骤操作,帮忙看下

麻烦在备份端和恢复端分别执行,具体路径根据实际修改

/home/admin/oceanbase/bin/observer -V

备份端A:
observer (OceanBase_CE 4.2.0.0)
REVISION: 101000032023091319-600ea4557d9847784acfa3e6b7a7d24c595891c6
BUILD_BRANCH: HEAD
BUILD_TIME: Sep 13 2023 20:02:18
BUILD_FLAGS: RelWithDebInfo
BUILD_INFO:

数据来源端B:
observer (OceanBase_CE 4.2.1.2)
REVISION: 102010022023121415-f6752332b5001069034f96c6dbb620926dc666f0
BUILD_BRANCH: HEAD
BUILD_TIME: Dec 14 2023 15:38:58
BUILD_FLAGS: RelWithDebInfo
BUILD_INFO:

PS:

  1. 若在A生成的备份包,在B可以还原租户
  2. 在B生成的备份包,在A还原失败(此次的问题)

看报错是和集群版本有关系,物理备份恢复一般是要求同版本之间进行或者向更高的小版本号恢复,向低版本恢复一般是不允许的。

image

[2024-11-28 19:18:14.642252] WDIAG [RS.RESTORE] check_backup_set_version_match_ (ob_restore_util.cpp:747) [2857][DDLQueueTh0][T0][YB427F000001-000627F533D132B7-0-0] [lt=14][errcode=-4002] cluster version are not exist(ret=-4002)
[2024-11-28 19:18:14.642258] WDIAG check_backup_set_version_match_ (ob_restore_util.cpp:748) [2857][DDLQueueTh0][T0][YB427F000001-000627F533D132B7-0-0] [lt=6][errcode=-4002] Incorrect arguments to cluster version of backup set
[2024-11-28 19:18:14.642264] WDIAG [RS.RESTORE] do_fill_backup_info_ (ob_restore_util.cpp:716) [2857][DDLQueueTh0][T0][YB427F000001-000627F533D132B7-0-0] [lt=5][errcode=-4002] failed to check backup set version match(ret=-4002)
[2024-11-28 19:18:14.642273] WDIAG [RS.RESTORE] fill_compat_backup_path (ob_restore_util.cpp:325) [2857][DDLQueueTh0][T0][YB427F000001-000627F533D132B7-0-0] [lt=5][errcode=-4002] fail to do fill backup info
[2024-11-28 19:18:14.642280] WDIAG [RS.RESTORE] fill_backup_info_ (ob_restore_util.cpp:230) [2857][DDLQueueTh0][T0][YB427F000001-000627F533D132B7-0-0] [lt=5][errcode=-4002] failed to fill compat backup path(ret=-4002, arg={tenant_name:"syncmysql", uri:"file:///ysdisk/cache/ob/sync/databackup", restore_option:"pool_list=syncpool", restore_scn:{val:18446744073709551615, v:3}, passwd_array:"", kms_info:"", table_items:[], multi_uri:"", with_restore_scn:false, encrypt_key:"", kms_uri:"", kms_encrypt_key:"", restore_timestamp:""})
  1. ob是在哪里自动检测升级机制
  2. 有什么方式能禁用自动升级

不会自动升级的,升级是需要做好计划的

  1. 这个计划怎么理解?
  2. obd mirror disable remote 我们是用这命令来禁止升级,这个操作会被绕过而升级吗

1.这个计划是指要做好时间规划,回滚方案等,和业务沟通好升级窗口,滚动升级虽然服务可用,但是是降级的可用
2.ob不会自动升级的,除非是在服务器上或者哪里做了一些自动化的升级脚本