如何用SQL; 查询查询某个租户的前天的的手工 备份记录和手工 备份片的位置?

【 使用环境 】生产环境 or 测试环境
【 OB or 其他组件 】
【 使用版本 】
【问题描述】清晰明确描述问题
【复现路径】问题出现前后相关操作
【附件及日志】推荐使用OceanBase敏捷诊断工具obdiag收集诊断信息,详情参见链接(右键跳转查看):

【SOP系列 22 】——故障诊断第一步(自助诊断和诊断信息收集)

【备注】基于 LLM 和开源文档 RAG 的论坛小助手已开放测试,在发帖时输入 [@论坛小助手] 即可召唤小助手,欢迎试用!

因为测试需要, 我们手工做了某个租户aa 在8/13 号11:00 的租户级别的全量备份, 然后开发每天都要求我们做一遍租户级别的恢复

恢复到时间点 8/13 号11:00 , 我的问题是,我通过备份 恢复了该租户后,恢复是成功的,尝试查询之前在8/13 号当天11:00的备份记录和备份片的位置,没有找到该记录?

我的查询方法:

select * from cdb_ob_backup_set_files

select * from CDB_OB_BACKUP_JOB_HISTORY

现在我的问题是如何用SQL; 查询之前在8/13 号当天11:00的备份记录和备份片的位置?

以下是我的恢复记录:

ID 备份集群 备份租户 备份方式 目标集群 目标租户 恢复对象 开始时间 恢复时长

状态

操作

47

obclu_test_ntest2

re_bt 物理备份 obclu_test_ntest2 re_bt

租户

2024年8月16日 10:18:34 13分钟55秒 已完成

备份方式

物理备份

恢复时间点

2024年8月13日 11:10:00

结束时间

2024年8月16日 10:32:29

存储目录

可以在用户租户下查看下:

-租户查看 JOB 级任务历史(租户发起一次备份即对应一条 JOB 任务记录)

SELECT * FROM oceanbase.DBA_OB_BACKUP_JOB_HISTORY\G;

–租户查看 Task 级任务历史(一个 Task 对应一个备份集的任务)

SELECT * FROM oceanbase.DBA_OB_BACKUP_TASK_HISTORY\G;

–租户查看查看对应的备份集信息

SELECT * FROM oceanbase.DBA_OB_BACKUP_SET_FILES WHERE BACKUP_SET_ID = 1 \G;

-租户查看 JOB 级任务历史(租户发起一次备份即对应一条 JOB 任务记录)

SELECT * FROM oceanbase.DBA_OB_BACKUP_JOB_HISTORY\G;

–in sys 租户 result: ->可以查到 08/13 10:49 发起的备份记录:

SELECT * FROM oceanbase.DBA_OB_BACKUP_JOB_HISTORY\G;

657 1 0 1 657 1052 OFF FULL CLUSTER NONE 2024-08-13 10:49:52.712899 2024-08-13 11:02:22.946129 COMPLETED 0 ALTER BACKUP TENANT FULL_BACKUP BY BACKUP_NOW AT 2024-08-13 10:49:52.0

–租户查看 Task 级任务历史(一个 Task 对应一个备份集的任务)

SELECT * FROM oceanbase.DBA_OB_BACKUP_TASK_HISTORY\G;

–租户查看查看对应的备份集信息

SELECT * FROM oceanbase.DBA_OB_BACKUP_SET_FILES WHERE BACKUP_SET_ID = 1 \G;

SELECT * FROM oceanbase.DBA_OB_BACKUP_SET_FILES WHERE BACKUP_SET_ID = 1 \G;

-in 租户结果如下: ->只能查看 08/17 05:47: 发起的备份记录 和备份位置:

1 1002 1 FULL 0 0 2024-08-17 05:30:15.724675 2024-08-17 05:47:20.717927 SUCCESS AVAILABLE 1025 OFF 1723809987831055233 2024-08-16 20:06:27.831055 1723844840679490705 2024-08-17 05:47:20.679490705 73530464334 64012962241 62452081.6270 0 10881 10881 35053 35053 0 1 0 0 NONE 4.2.1.7 3 file:///data/obbackup_obclu_test_ndb2/obclu_test_ndb2/1666082002/tenant_incarnation_1/1064/data 4.2.1.7 1723843857647130784 1 1

我的问题是

  1. oceanbase.DBA_OB_BACKUP_JOB_HISTORY 可以查到 08/13 10:49 发起的备份记录,
  2. oceanbase.DBA_OB_BACKUP_SET_FILES 只能 查看 2024-08-17的记录。

我的问题是为啥 08/13 10:49 备份记录的备份集位置没有记住?

请发下数据库版本,

从 oceanbase.DBA_OB_BACKUP_JOB_HISTORY 看BACKUP_SET_ID=1的START_TIMESTAMP为 2024-08-13 10:49:52.712899

从oceanbase.DBA_OB_BACKUP_SET_FILES 看BACKUP_SET_ID=1的START_TIMESTAMP为 2024-08-17 05:30:15.724675

如果是在同一租户(请确定是否为同一租户)查询的这两个视图,这个结果是不符合预期的,麻烦发下这3个查询的结果(全量数据),可以将结果放到附件

–租户查看 JOB 级任务历史(租户发起一次备份即对应一条 JOB 任务记录)

SELECT * FROM oceanbase.DBA_OB_BACKUP_JOB_HISTORY\G;

–租户查看 Task 级任务历史(一个 Task 对应一个备份集的任务)

SELECT * FROM oceanbase.DBA_OB_BACKUP_TASK_HISTORY\G;

–租户查看查看对应的备份集信息

SELECT * FROM oceanbase.DBA_OB_BACKUP_SET_FILES \G

这条结果是在sys 租户查询的
–in sys 租户 result: ->可以查到 08/13 10:49 发起的备份记录:

SELECT * FROM oceanbase.DBA_OB_BACKUP_JOB_HISTORY\G;

657 1 0 1 657 1052 OFF FULL CLUSTER NONE 2024-08-13 10:49:52.712899 2024-08-13 11:02:22.946129 COMPLETED 0 ALTER BACKUP TENANT FULL_BACKUP BY BACKUP_NOW AT 2024-08-13 10:49:52.0

你使用的sys租户查询 ,你查下 oceanbase.CDB_OB_BACKUP_JOB_HISTORY,oceanbase.CDB_OB_BACKUP_SET_FILES

看下数据是否对得上

这个问题有进展吗

查询结果.7z (139.4 KB)

cdb_backup_job_history 找到8/13 11点备份记录

BACKUP_SET_FILES 找不到?

发下数据库版本,我联系相关同学看下

5.7.25-OceanBase-v4.2.1.7

这个文件用的是DBA_OB_BACKUP_JOB_HISTORY ,麻烦用 CDB_OB_BACKUP_JOB_HISTORY 查询下 取下结果,方便做CDB级数据的对比

CDB_OB_BACKUP_JOB_HISTORY.zip (81.1 KB)

CDB_OB_BACKUP_JOB_HISTORY 中虽然有8.13的备份记录但是没有记录备份文件,所以CDB_OB_BACKUP_SET_FILES看不到记录,
同样 7.18,7.19号也是一样,但是看备份的状态是成功的,请确认下是否有文件生成?

这几条备份记录是sys租户的备份记录,sys租户不记录路径的,是符合预期的

7.18,7.19号,7.13日实际上有问题产生,只是在备份的表里一直查不到。所以这个如何解决?

7.18,7.19,8.13号,这3天备份是手动触发的,备份后检查有备份文件生成了吗?

实际上是备份成功的,
你的1046,1050,1052租户被删除了,租户删除后,CDB_OB_BACKUP_JOB_HISTORY 中对应的备份记录(含有path的记录)会被删除,备份文件如果在保留策略内实际上未被删除,这个现象是否符合预期我和这块的同学再确认下。

已确认,租户删除后,CDB_OB_BACKUP_JOB_HISTORY 中对应的备份记录(path的记录)会被删除 是符合预期的,4.x备份和归档都拆到租户下了,相关的备份/归档信息都存储在租户下,删除租户后就没有了。

1 个赞