如何一条语句 查询备份的总趋势

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

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

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

问题1: 如何一条语句 某个集群下的某个租户的备份的容量总趋势

问题2: 如何一条语句 某个集群下的所有租户的备份的容量总趋势

根据您提供的问题描述,您希望查询某个集群下的某个租户或所有租户的备份容量总趋势。遗憾的是,从检索到的文档片段中没有直接提供关于如何查询备份容量总趋势的具体SQL语句。不过,基于OceanBase数据库的特点和常规的监控与查询方式,我可以为您提供一个合理的解决方案。

问题1: 查询某个集群下的某个租户的备份容量总趋势

为了查询特定租户的备份容量总趋势,您可以使用GV$OB_BACKUP_SET视图来获取备份集的信息,并结合时间戳进行趋势分析。以下是一个可能的SQL查询示例:

SELECT 
    TO_CHAR(backup_set_create_time, 'YYYY-MM-DD HH24:MI') AS backup_time,
    SUM(data_size) AS total_backup_size
FROM 
    oceanbase.GV$OB_BACKUP_SET
WHERE 
    tenant_id = <您的租户ID>
GROUP BY 
    TO_CHAR(backup_set_create_time, 'YYYY-MM-DD HH24:MI')
ORDER BY 
    backup_time;

请将<您的租户ID>替换为实际的租户ID。

问题2: 查询某个集群下的所有租户的备份容量总趋势

对于查询整个集群下所有租户的备份容量总趋势,可以使用类似的查询逻辑,但不需要指定租户ID。以下是相应的SQL查询示例:

SELECT 
    TO_CHAR(backup_set_create_time, 'YYYY-MM-DD HH24:MI') AS backup_time,
    SUM(data_size) AS total_backup_size
FROM 
    oceanbase.GV$OB_BACKUP_SET
GROUP BY 
    TO_CHAR(backup_set_create_time, 'YYYY-MM-DD HH24:MI')
ORDER BY 
    backup_time;

这两个查询将帮助您了解特定时间段内的备份容量变化情况。请注意,这些查询假设您有访问GV$OB_BACKUP_SET视图的权限,并且该视图包含了所需的备份信息。

如果上述方法无法满足需求,建议进一步检查是否有其他专门用于备份管理的工具或API,或者联系OceanBase的技术支持团队以获得更详细的指导。

以上回答是基于现有知识给出的可能解答。如果您需要更精确的结果,请确保拥有最新的OceanBase版本并参考官方文档或技术支持。

详情请参考:

  1. 配置项和系统变量概述
  2. 集群总览
  3. 查看内存的使用信息
  4. 检查租户资源使用状态
  5. GV$OB_SHARED_STORAGE_QUOTA
  6. GV$OB_GROUP_IO_STAT
  7. V$OB_SHARED_STORAGE_QUOTA

报错了
ErrorCode = 1146, SQLState = 42S02, Details = Table ‘oceanbase.GV$OB_BACKUP_SET’ doesn’t exist

感谢您的反馈。根据您提供的错误信息,oceanbase.GV$OB_BACKUP_SET 表不存在。这表明我之前的建议中引用的表名不准确。让我们重新审视并提供一个更准确的查询方法。

查询备份容量总趋势

为了查询某个集群下的某个租户或所有租户的备份容量总趋势,我们可以使用 CDB_OB_BACKUP_TASKSCDB_OB_BACKUP_TASK_HISTORY 视图来获取备份任务的相关信息,并结合时间戳进行趋势分析。

问题1: 查询某个集群下的某个租户的备份容量总趋势

您可以使用以下SQL语句来查询特定租户的备份容量总趋势:

SELECT 
    TO_CHAR(T.START_TIMESTAMP, 'YYYY-MM-DD HH24:MI') AS backup_time,
    SUM(T.OUTPUT_BYTES) AS total_backup_size
FROM 
    oceanbase.CDB_OB_BACKUP_TASK_HISTORY T
WHERE 
    T.TENANT_ID = <您的租户ID>
GROUP BY 
    TO_CHAR(T.START_TIMESTAMP, 'YYYY-MM-DD HH24:MI')
ORDER BY 
    backup_time;

请将 <您的租户ID> 替换为实际的租户ID。

问题2: 查询某个集群下的所有租户的备份容量总趋势

对于查询整个集群下所有租户的备份容量总趋势,可以使用类似的查询逻辑,但不需要指定租户ID。以下是相应的SQL查询示例:

SELECT 
    TO_CHAR(T.START_TIMESTAMP, 'YYYY-MM-DD HH24:MI') AS backup_time,
    SUM(T.OUTPUT_BYTES) AS total_backup_size
FROM 
    oceanbase.CDB_OB_BACKUP_TASK_HISTORY T
GROUP BY 
    TO_CHAR(T.START_TIMESTAMP, 'YYYY-MM-DD HH24:MI')
ORDER BY 
    backup_time;

解释

  • START_TIMESTAMP: 备份任务的开始时间。
  • OUTPUT_BYTES: 备份输出的数据量(字节数)。
  • TENANT_ID: 租户ID,用于过滤特定租户的备份任务。

这些查询将帮助您了解特定时间段内的备份容量变化情况。请注意,这些查询假设您有访问 CDB_OB_BACKUP_TASK_HISTORY 视图的权限,并且该视图包含了所需的备份信息。

如果上述方法仍然无法满足需求,建议进一步检查是否有其他专门用于备份管理的工具或API,或者联系OceanBase的技术支持团队以获得更详细的指导。

以上回答是基于现有文档库中的信息给出的可能解答。如果您需要更精确的结果,请确保拥有最新的OceanBase版本并参考官方文档或技术支持。

参考文档

希望这次的解答能解决您的问题。如果有任何进一步的问题或需要更多帮助,请随时告知。

详情请参考:

  1. oceanbase.CDB_OB_BACKUP_TASKS
  2. oceanbase.CDB_OB_BACKUP_TASK_HISTORY
  3. oceanbase.CDB_OB_ACCESS_POINT
  4. oceanbase.CDB_OB_BACKUP_SET_FILES
  5. oceanbase.CDB_OB_TABLET_REPLICAS
  6. GV$OB_SESSION
  7. oceanbase.DBA_OB_BACKUP_TASKS
  8. oceanbase.DBA_OB_BACKUP_STORAGE_INFO

(小助手的答复已结束,如未能解决您的问题,请继续提问并等待其他同学的回复,谢谢!)

不存在的表名改成这个 oceanbase.CDB_OB_BACKUP_SET_FILES

SELECT

TO_CHAR(backup_set_create_time, 'YYYY-MM-DD HH24:MI') AS backup_time,

SUM(data_size) AS total_backup_size

FROM

oceanbase.CDB_OB_BACKUP_SET_FILES

WHERE

tenant_id = 1082

GROUP BY

TO_CHAR(backup_set_create_time, 'YYYY-MM-DD HH24:MI')

ORDER BY

backup_time;

报错
失败原因:

ErrorCode = 1054, SQLState = 42S22, Details = Unknown column ‘backup_set_create_time’ in ‘field list’ If column exists but type cannot be identified (example 'selec

查ocp_meta租户的表backup_data_set
select * from meta_database.backup_data_set;

学习,记录 :+1:

oceanbase.CDB_OB_BACKUP_SET_FILES

包括如下字段:
MINOR_TURN_ID bigint(20) NO 转储数据备份结束的轮次
MAJOR_TURN_ID bigint(20) NO 基线数据备份结束的轮次
META_TURN_ID bigint(20) YES 备份 META 的轮次
DATA_TURN_ID bigint(20) YES 备份数据的轮次
MACRO_BLOCK_COUNT bigint(20) YES 备份宏块总量
FINISH_MACRO_BLOCK_COUNT bigint(20) YES 完成备份宏块总量

所以我应该统计当前备份的大小。对吗? 备份宏块的单位是多少呢?
select sum(FINISH_MACRO_BLOCK_COUNT) from oceanbase.CDB_OB_BACKUP_SET_FILES where file_status=‘AVAILABLE’

集群/租户:- /ocp_meta
数据库用户名:root

-》查询结果如下:单位是多少,我想转成G?
select sum(data_backup_size) from backup_data_set;
339771214630912.000

这个单位是字节

SELECT tenant_id, backup_type, status, file_status, ROUND(output_bytes / 1024/1024/1024, 2) AS output_gb FROM CDB_OB_BACKUP_SET_FILES where backup_type=‘FULL’;


这样看看,租户维度展示备份大小

GV$OB_BACKUP_SET这个视图看看

学习中

查询结果,总共300T ,因为是历史所有备份数据的总和,现在磁盘已经有的备份综合,可有方法获取?
select sum(data_backup_size)/1024/1024/1024/1024 tB from backup_data_set;
311.7276287414133548737

select min(start_time),max(start_time) from backup_data_set;
2023-04-07 10:12:38.045000 2025-03-10 05:30:09.179000

谢谢,这个租户维度的备份查询的很准

我注意到OCP ,集群级别,也有备份恢复的 存储趋势?这个应该怎么用SQL 获得?

你好,这个没有直接的展示方法,我理解是ocp采集数据再生成趋势表的功能。

ocp 数据源的表?

这个问题我再咨询下OCP这块的老师,有进展会回复您

经了解,这个是备份恢复把监控接口封装了一下,底层是走的监控接口,metric等于ob_backup_storage_capacity_bytes,不是表里可以直接查出来结果的,所有监控数据都查不了表,表里监控只存原始数据,原始数据在 monitor 租户的表 metric_data_second 中,最终数据是经过计算的