【 使用环境 】生产环境 or 测试环境
【 OB or 其他组件 】
【 使用版本 】4.3.4
【问题描述】
clog_disk_utilization_threshold参数的具体含义是什么
1.达到所设定的百分比之后,clog日志会触发,清理最早的写入的日志么??
2.所谓的达到磁盘的百分比,这个磁盘空间指的是什么,是log_disk_size所设定的值,还是创建租户的时候,分配给租户的log空间,亦或是clog目录所在的磁盘分区的大小???
根据文档库中的信息,以下是关于 clog_disk_utilization_threshold
参数的具体含义及问题的解答:
1. 达到所设定的百分比之后,CLOG 日志会触发清理最早的写入的日志吗?
答案:是的,会触发清理最早的写入的日志。
- 根据文档片段 6 和片段 8 的描述,
clog_disk_utilization_threshold
参数用于控制 CLOG 磁盘空间复用的水位值。当磁盘使用量超过设定的百分比时,系统会开始回收(复用)最早的日志文件。 - 具体来说,
clog_disk_utilization_threshold
的默认值为 80%,表示当 CLOG 磁盘空间使用率达到 80% 时,系统会尝试清理可以回收的最早日志文件。
注意:
- 清理的前提是这些日志文件已经不再需要(例如,对应的事务已提交且数据已持久化到磁盘)。
- 如果日志文件仍处于活跃状态(例如,事务未完成或数据未完全持久化),即使达到阈值也不会被清理。
2. 所谓的达到磁盘的百分比,这个磁盘空间指的是什么?
答案:指的是租户分配的日志盘空间总量。
- 根据文档片段 5 和片段 7 的描述,在 OceanBase 数据库 V4.x 版本中,日志盘空间管理拆分为租户级别。因此,
clog_disk_utilization_threshold
参数中的“磁盘空间”是指 租户分配的日志盘空间总量,而不是整个物理磁盘分区的大小。 - 租户分配的日志盘空间总量由以下因素决定:
- 如果在创建租户时明确指定了日志盘空间大小,则以该值为准。
- 如果未明确指定,则根据全局配置项
log_disk_size
或log_disk_percentage
计算得出(参考文档片段 2)。
具体说明:
-
log_disk_size
和log_disk_percentage
: 这两个参数用于配置 OBServer 节点上的日志盘总空间大小。如果log_disk_size
设置为非零值,则优先使用该值;否则根据log_disk_percentage
计算日志盘空间。 -
租户级日志盘空间分配: 在创建租户时,OceanBase 会从节点的日志盘总空间中分配一部分给该租户。
clog_disk_utilization_threshold
参数的作用范围就是这部分分配的空间。
总结:
- 磁盘空间不是指
clog
目录所在的物理磁盘分区大小,也不是直接由log_disk_size
决定,而是指 租户分配的日志盘空间总量。
补充说明
-
clog_disk_utilization_threshold
和clog_disk_usage_limit_percentage
的关系:-
clog_disk_utilization_threshold
是日志盘空间复用的水位值,默认为 80%。超过此值后,系统会尝试清理最早的日志文件。 -
clog_disk_usage_limit_percentage
是日志盘空间使用的上限,默认为 95%。超过此值后,系统会停止写入新的日志。 - 两者的取值范围和关系如下:
-
clog_disk_utilization_threshold
的取值范围为 [10, 99]。 -
clog_disk_usage_limit_percentage
的取值范围为 [80, 100]。 - 必须满足
clog_disk_utilization_threshold < clog_disk_usage_limit_percentage
。
-
-
-
示例配置:
-- 设置日志盘空间复用水位值为 80% ALTER SYSTEM SET clog_disk_utilization_threshold=80; -- 设置日志盘空间使用上限为 95% ALTER SYSTEM SET clog_disk_usage_limit_percentage=95;
结论
- 当 CLOG 磁盘空间使用率达到
clog_disk_utilization_threshold
的设定值时,系统会触发清理最早的写入的日志。 - 磁盘空间指的是租户分配的日志盘空间总量,而不是整个物理磁盘分区的大小或
log_disk_size
的值。
希望以上解答能够帮助您更好地理解 clog_disk_utilization_threshold
参数的含义及其作用机制!
检索到的文档如下:
怎么查询租户现在已经用了多少日志空间
SELECT TENANT_ID, TENANT_NAME, SPACE_TYPE, USAGE_BYTES
FROM oceanbase.CDB_OB_SPACE_USAGE
WHERE SPACE_TYPE = ‘clog Data’ AND TENANT_NAME = ‘<您的租户名称>’;
log_pool你可以理解是一个日志的池子,日志文件使用的空间从log_pool里面取就行了,这个是预先分配好的,你要是看日志实际占用的空间,通过查询 dba_ob_tenants 和gv$ob_units视图可以获取租户的日志盘的使用情况
select
a.tenant_name,
b.svr_ip,
round(memory_size/1024/1024/1024,2) as memory_size,
round(LOG_DISK_IN_USE/LOG_DISK_SIZE,2) LOG_DISK_USE_PERCENTAGE,
round(LOG_DISK_SIZE/1024/1024/1024,2) as LOG_DISK_SIZE,
round(LOG_DISK_IN_USE/1024/1024/1024,2) as LOG_DISK_IN_USE
from
dba_ob_tenants a,
gv$ob_units b
where
a.tenant_id = b.tenant_id
and a.tenant_id = 1002
谢谢分享