ob怎么统计某个租户,每小时产生的归档量

【 使用环境 】测试环境
【 OB or 其他组件 】
【 使用版本 】
【问题描述】ob怎么统计某个租户,每小时产生的归档量

OB好像没有明确的视图会记录日志量,但是知识库里面有统计日志的办法

https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000000207765?back=kb

1 个赞

欢迎给obdiag的一键洞察加上这个场景
https://www.oceanbase.com/docs/common-obdiag-cn-1000000002488237

代码仓库:https://github.com/oceanbase/obdiag/tree/master/plugins/display/tasks/observer

1 个赞

好的,谢谢,我试下

startTime=2022-03-07T11%3A34%3A50.000%2B08%3A00&endTime=2022-03-07T14%3A34%3A50.000%2B08%3A00 这里的时间怎么选取呀,随便填写的吗

做了类似需求的简单脚本,可以参考示例 clog_size.sh

#!/bin/bash

# [root@10-186-63-160 ~]# sh clog_size.sh /data/log1/demo/clog day
# Statistics for /data/log1/demo/clog by day:
# Date         Size(MB)     Count
# 2024-12-24   13696.00     214
# 2024-12-25   9792.00      153
# 2024-12-26   7360.00      115

# [root@10-186-63-160 ~]# sh clog_size.sh /data/log1/demo/clog hour
# Statistics for /data/log1/demo/clog by hour:
# Date Hour            Size(MB)     Count
# 2024-12-24 13:00     192.00       3
# 2024-12-24 14:00     5056.00      79
# 2024-12-24 15:00     5952.00      93
# 2024-12-24 16:00     2304.00      36
# 2024-12-24 18:00     64.00        1
# 2024-12-24 20:00     64.00        1
# 2024-12-24 22:00     64.00        1
# 2024-12-25 00:00     64.00        1
# 2024-12-25 02:00     64.00        1
# 2024-12-25 04:00     64.00        1
# 2024-12-25 07:00     64.00        1
# 2024-12-25 09:00     64.00        1



# 检查参数数量
if [ $# -lt 1 ]; then
  echo "Usage: $0 <directory> [day|hour]"
  exit 1
fi

# 获取目标目录
TARGET_DIR=$1

# 判断目录是否存在
if [ ! -d "$TARGET_DIR" ]; then
  echo "Error: Directory $TARGET_DIR does not exist."
  exit 1
fi

# 获取时间参数(day 或 hour)
MODE=${2:-day}

# 根据模式统计文件大小和数量
if [ "$MODE" == "day" ]; then
  echo "Statistics for $TARGET_DIR by day:"
  find "$TARGET_DIR" -type f -printf '%TY-%Tm-%Td %s\n' | awk '
  {
    sizes[$1] += $2;
    counts[$1]++;
  }
  END {
    for (date in sizes) {
      printf "%s %.2f %d\n", date, sizes[date] / (1024 * 1024), counts[date];
    }
  }' | sort | awk '
  BEGIN {
    printf "%-12s %-12s %-10s\n", "Date", "Size(MB)", "Count";
  }
  {
    printf "%-12s %-12.2f %-10d\n", $1, $2, $3;
  }'

elif [ "$MODE" == "hour" ]; then
  echo "Statistics for $TARGET_DIR by hour:"
  find "$TARGET_DIR" -type f -printf '%TY-%Tm-%Td %TH:00 %s\n' | awk '
  {
    sizes[$1" "$2] += $3;
    counts[$1" "$2]++;
  }
  END {
    for (datehour in sizes) {
      printf "%s %.2f %d\n", datehour, sizes[datehour] / (1024 * 1024), counts[datehour];
    }
  }' | sort | awk '
  BEGIN {
    printf "%-20s %-12s %-10s\n", "Date Hour", "Size(MB)", "Count";
  }
  {
    printf "%-20s %-12.2f %-10d\n", $1" "$2, $3, $4;
  }'
else
  echo "Error: Invalid mode. Use 'day' or 'hour'."
  exit 1
fi
1 个赞

好的,谢谢

学习了 :+1: :+1:

@论坛小助手

根据文档库中的信息,以下是关于如何统计某个租户每小时产生的归档量以及时间参数选取的详细解答:

1. 统计某个租户每小时产生的归档量

OceanBase 数据库按照 Piece 来组织和管理归档日志数据。一个 Piece 是某个租户连续一段时间内完备日志的集合,时间段由 LOG_ARCHIVE_DEST 参数中的 piece_switch_interval 属性控制(参考文档片段 4)。因此,可以通过以下步骤统计某个租户每小时产生的归档量:

  • 设置归档日志的时间段:将 piece_switch_interval 设置为 1h,这样每个 Piece 就会包含一小时内产生的所有日志。

  • 查询归档日志的大小:通过查询归档日志的元数据表(如 __all_archive_log),可以获取每个 Piece 的大小。例如,执行以下 SQL 查询:

    SELECT tenant_id, piece_id, start_time, end_time, file_size
    FROM __all_archive_log
    WHERE tenant_id = <目标租户ID>
      AND start_time >= TO_TIMESTAMP('2022-03-07 11:00:00', 'YYYY-MM-DD HH24:MI:SS')
      AND end_time <= TO_TIMESTAMP('2022-03-07 14:00:00', 'YYYY-MM-DD HH24:MI:SS');
    
    • tenant_id:目标租户的 ID。
    • piece_id:归档日志的 Piece ID。
    • start_timeend_time:Piece 的起止时间。
    • file_size:Piece 的文件大小。

通过上述查询结果,可以统计出每小时产生的归档日志量。


2. 时间参数的选取

在 URL 中的时间参数 startTimeendTime 并非随意填写,而是需要根据实际需求设定。以下是选取时间参数的建议:

  • 明确统计范围:确定需要统计的起始时间和结束时间。例如,如果要统计从 2022-03-07 11:00:00 到 2022-03-07 14:00:00 的归档量,则应将 startTimeendTime 分别设置为这两个时间点。

  • 时间格式要求:时间参数需要遵循 ISO 8601 格式,并且需要进行 URL 编码。例如:

    • 原始时间:2022-03-07T11:34:50+08:00
    • URL 编码后:2022-03-07T11%3A34%3A50.000%2B08%3A00
  • 避免时间重叠或遗漏:确保 startTimeendTime 覆盖完整的统计区间,且不重叠或遗漏。


总结

  • 统计归档量:通过调整 piece_switch_interval 和查询 __all_archive_log 表,可以统计某个租户每小时产生的归档量。
  • 时间参数选取:根据实际需求设定 startTimeendTime,并确保时间格式正确且覆盖完整统计区间。

如果仍有疑问,请进一步说明具体需求,我们将尽力为您解答!

更多信息请查看:

  1. 备份架构
  2. obcdc 开发说明
  3. 日志归档前准备
  4. 日志归档概述
  5. 手动收集统计信息
  6. 设置日志恢复终点
  7. 自动统计信息收集
  8. OceanBase 数据库性能的影响因素
  9. 租户性能诊断
  10. OceanBase 术语
1 个赞

AI幻觉是吧。。这张表都搜不到 :joy:

是的,感谢反馈

学习