oceanbase clog 大的问题

按照这里设置了,clog文件大小也没变。, clog 这么大, 怎么回收, 有没有快速解决办法。文档都是东一块西一块的。有没有步骤解决,第一步,第二步,第三步这样的直接的文档

1 个赞

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


https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000001429714

1 个赞

clog 空间是预分配式的, 节点的 clog 空间目录大小通过参数 log_disk_size 控制(不建议根据 log_disk_percentage 控制)。各个租户分的是节点的 clog 空间大小 。

ncdu 1.20 ~ Use the arrow keys to navigate, press ? for help     
--- /home/data/log1/obtest --------------------------------------
                                             /..                 
   50.0 GiB [#######################]    828 /clog               
  135.5 MiB [                       ]     19 /slog    
    8.0 KiB [                       ]      2 /etc2       


ncdu 1.20 ~ Use the arrow keys to navigate, press ? for help 
--- /home/data/log1/obtest/clog -----------------------------
                                             /..             
   28.4 GiB [#######################]    456 /log_pool       
    7.2 GiB [#####                  ]    118 /tenant_1
    6.5 GiB [#####                  ]    110 /tenant_1006
    6.5 GiB [#####                  ]    110 /tenant_1004
  704.0 MiB [                       ]     14 /tenant_1005
  704.0 MiB [                       ]     14 /tenant_1003

租户的 clog 有自己的复用策略,由下面4个参数设置。没有回收命令。
log_disk_throttling_maximum_duration
log_disk_throttling_percentage
log_disk_utilization_threshold
log_disk_utilization_limit_threshold
具体可以查一下。

clog 空间的分配首先要考虑尽可能能满足业务高并发读写情况下的需求,建议是 内存规格的 2~4 倍.
不要太小(如 十几个 G,太小容易遭遇 clog disk is full 类报错),也不用太大(大几百个 G,是有点浪费)

更多参考: OB 数据文件缩容技巧

1 个赞

磁盘性能问题吧

1 个赞

这个是阻塞了日志回收吗, 怎么排查解决呢

1 个赞

虚拟机来的, 固态硬盘,性能很好的

1 个赞

查一下 这个几个参数 看一下参数是不是设置不合理
show parameters where name in (‘memory_limit’,‘memory_limit_percentage’,‘system_memory’,‘log_disk_size’,‘log_disk_percentage’,‘datafile_size’,‘datafile_disk_percentage’);

1 个赞

obclient [oceanbase]> show parameters where name in (‘memory_limit’);
±------±---------±-------------±---------±-------------±----------±-------±--------------------------------------------------------------------------------------------------------------------------------±---------±--------±--------±------------------±--------------±----------+
| zone | svr_type | svr_ip | svr_port | name | data_type | value | info | section | scope | source | edit_level | default_value | isdefault |
±------±---------±-------------±---------±-------------±----------±-------±--------------------------------------------------------------------------------------------------------------------------------±---------±--------±--------±------------------±--------------±----------+
| zone1 | observer | 192.168.10.6 | 2882 | memory_limit | CAPACITY | 16337M | the size of the memory reserved for internal use(for testing purpose), 0 means follow memory_limit_percentage. Range: 0, [1G,). | OBSERVER | CLUSTER | DEFAULT | DYNAMIC_EFFECTIVE | 0M | 0 |
±------±---------±-------------±---------±-------------±----------±-------±--------------------------------------------------------------------------------------------------------------------------------±---------±--------±--------±------------------±--------------±----------+
1 row in set (0.003 sec)

obclient [oceanbase]> show parameters where name in (‘memory_limit_percentage’);
±------±---------±-------------±---------±------------------------±----------±------±---------------------------------------------------------------------------------------±---------±--------±--------±------------------±--------------±----------+
| zone | svr_type | svr_ip | svr_port | name | data_type | value | info | section | scope | source | edit_level | default_value | isdefault |
±------±---------±-------------±---------±------------------------±----------±------±---------------------------------------------------------------------------------------±---------±--------±--------±------------------±--------------±----------+
| zone1 | observer | 192.168.10.6 | 2882 | memory_limit_percentage | INT | 80 | the size of the memory reserved for internal use(for testing purpose). Range: [10, 95] | OBSERVER | CLUSTER | DEFAULT | DYNAMIC_EFFECTIVE | 80 | 1 |
±------±---------±-------------±---------±------------------------±----------±------±---------------------------------------------------------------------------------------±---------±--------±--------±------------------±--------------±----------+
1 row in set (0.003 sec)

obclient [oceanbase]> show parameters where name in (‘system_memory’);
±------±---------±-------------±---------±--------------±----------±------±------------------------------------------------------------------------------------------------------------------------------------------------------------------------±---------±--------±--------±------------------±--------------±----------+
| zone | svr_type | svr_ip | svr_port | name | data_type | value | info | section | scope | source | edit_level | default_value | isdefault |
±------±---------±-------------±---------±--------------±----------±------±------------------------------------------------------------------------------------------------------------------------------------------------------------------------±---------±--------±--------±------------------±--------------±----------+
| zone1 | observer | 192.168.10.6 | 2882 | system_memory | CAPACITY | 3072M | the memory reserved for internal use which cannot be allocated to any outer-tenant, and should be determined to guarantee every server functions normally. Range: [0M,) | OBSERVER | CLUSTER | DEFAULT | DYNAMIC_EFFECTIVE | 0M | 0 |
±------±---------±-------------±---------±--------------±----------±------±------------------------------------------------------------------------------------------------------------------------------------------------------------------------±---------±--------±--------±------------------±--------------±----------+
1 row in set (0.003 sec)

obclient [oceanbase]> show parameters where name in (‘log_disk_size’);
±------±---------±-------------±---------±--------------±----------±-------±---------------------------------------------------------------±-----------±--------±--------±------------------±--------------±----------+
| zone | svr_type | svr_ip | svr_port | name | data_type | value | info | section | scope | source | edit_level | default_value | isdefault |
±------±---------±-------------±---------±--------------±----------±-------±---------------------------------------------------------------±-----------±--------±--------±------------------±--------------±----------+
| zone1 | observer | 192.168.10.6 | 2882 | log_disk_size | CAPACITY | 20480M | the size of disk space used by the log files. Range: [0, +∞) | LOGSERVICE | CLUSTER | DEFAULT | DYNAMIC_EFFECTIVE | 0M | 0 |
±------±---------±-------------±---------±--------------±----------±-------±---------------------------------------------------------------±-----------±--------±--------±------------------±--------------±----------+
1 row in set (0.002 sec)

obclient [oceanbase]> show parameters where name in (‘log_disk_percentage’);
±------±---------±-------------±---------±--------------------±----------±------±------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------±-----------±--------±--------±------------------±--------------±----------+
| zone | svr_type | svr_ip | svr_port | name | data_type | value | info | section | scope | source | edit_level | default_value | isdefault |
±------±---------±-------------±---------±--------------------±----------±------±------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------±-----------±--------±--------±------------------±--------------±----------+
| zone1 | observer | 192.168.10.6 | 2882 | log_disk_percentage | INT | 0 | the percentage of disk space used by the log files. Range: [0,99] in integer;only effective when parameter log_disk_size is 0;when log_disk_percentage is 0: a) if the data and the log are on the same disk, means log_disk_percentage = 30 b) if the data and the log are on the different disks, means log_disk_perecentage = 90 | LOGSERVICE | CLUSTER | DEFAULT | DYNAMIC_EFFECTIVE | 0 | 1 |
±------±---------±-------------±---------±--------------------±----------±------±------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------±-----------±--------±--------±------------------±--------------±----------+
1 row in set (0.002 sec)

obclient [oceanbase]> show parameters where name in (‘datafile_size’);
±------±---------±-------------±---------±--------------±----------±-------±----------------------------------------±--------±--------±--------±------------------±--------------±----------+
| zone | svr_type | svr_ip | svr_port | name | data_type | value | info | section | scope | source | edit_level | default_value | isdefault |
±------±---------±-------------±---------±--------------±----------±-------±----------------------------------------±--------±--------±--------±------------------±--------------±----------+
| zone1 | observer | 192.168.10.6 | 2882 | datafile_size | CAPACITY | 10875M | size of the data file. Range: [0, +∞) | SSTABLE | CLUSTER | DEFAULT | DYNAMIC_EFFECTIVE | 0M | 0 |
±------±---------±-------------±---------±--------------±----------±-------±----------------------------------------±--------±--------±--------±------------------±--------------±----------+
1 row in set (0.002 sec)

obclient [oceanbase]> show parameters where name in (‘datafile_disk_percentage’);
±------±---------±-------------±---------±-------------------------±----------±------±------------------------------------------------------------------------------±--------±--------±--------±------------------±--------------±----------+
| zone | svr_type | svr_ip | svr_port | name | data_type | value | info | section | scope | source | edit_level | default_value | isdefault |
±------±---------±-------------±---------±-------------------------±----------±------±------------------------------------------------------------------------------±--------±--------±--------±------------------±--------------±----------+
| zone1 | observer | 192.168.10.6 | 2882 | datafile_disk_percentage | INT | 0 | the percentage of disk space used by the data files. Range: [0,99] in integer | SSTABLE | CLUSTER | DEFAULT | DYNAMIC_EFFECTIVE | 0 | 1 |
±------±---------±-------------±---------±-------------------------±----------±------±------------------------------------------------------------------------------±--------±--------±--------±------------------±--------------±----------+
1 row in set (0.003 sec)

尽量这样查一下吧 信息这样有点乱 粘贴到文本里 看一下信息
show parameters where name in (‘memory_limit’,‘memory_limit_percentage’,‘system_memory’,‘log_disk_size’,‘log_disk_percentage’,‘datafile_size’,‘datafile_disk_percentage’)\G;

obclient [oceanbase]> show parameters where name in (‘memory_limit’,‘memory_limit_percentage’,‘system_memory’,‘log_disk_size’,‘log_disk_percentage’,‘datafile_size’,‘datafile_disk_percentage’)\G;
*************************** 1. row ***************************
zone: zone1
svr_type: observer
svr_ip: 192.168.10.6
svr_port: 2882
name: log_disk_percentage
data_type: INT
value: 0
info: the percentage of disk space used by the log files. Range: [0,99] in integer;only effective when parameter log_disk_size is 0;when log_disk_percentage is 0: a) if the data and the log are on the same disk, means log_disk_percentage = 30 b) if the data and the log are on the different disks, means log_disk_perecentage = 90
section: LOGSERVICE
scope: CLUSTER
source: DEFAULT
edit_level: DYNAMIC_EFFECTIVE
default_value: 0
isdefault: 1
*************************** 2. row ***************************
zone: zone1
svr_type: observer
svr_ip: 192.168.10.6
svr_port: 2882
name: log_disk_size
data_type: CAPACITY
value: 20480M
info: the size of disk space used by the log files. Range: [0, +∞)
section: LOGSERVICE
scope: CLUSTER
source: DEFAULT
edit_level: DYNAMIC_EFFECTIVE
default_value: 0M
isdefault: 0
*************************** 3. row ***************************
zone: zone1
svr_type: observer
svr_ip: 192.168.10.6
svr_port: 2882
name: memory_limit_percentage
data_type: INT
value: 80
info: the size of the memory reserved for internal use(for testing purpose). Range: [10, 95]
section: OBSERVER
scope: CLUSTER
source: DEFAULT
edit_level: DYNAMIC_EFFECTIVE
default_value: 80
isdefault: 1
*************************** 4. row ***************************
zone: zone1
svr_type: observer
svr_ip: 192.168.10.6
svr_port: 2882
name: system_memory
data_type: CAPACITY
value: 3072M
info: the memory reserved for internal use which cannot be allocated to any outer-tenant, and should be determined to guarantee every server functions normally. Range: [0M,)
section: OBSERVER
scope: CLUSTER
source: DEFAULT
edit_level: DYNAMIC_EFFECTIVE
default_value: 0M
isdefault: 0
*************************** 5. row ***************************
zone: zone1
svr_type: observer
svr_ip: 192.168.10.6
svr_port: 2882
name: memory_limit
data_type: CAPACITY
value: 16337M
info: the size of the memory reserved for internal use(for testing purpose), 0 means follow memory_limit_percentage. Range: 0, [1G,).
section: OBSERVER
scope: CLUSTER
source: DEFAULT
edit_level: DYNAMIC_EFFECTIVE
default_value: 0M
isdefault: 0
*************************** 6. row ***************************
zone: zone1
svr_type: observer
svr_ip: 192.168.10.6
svr_port: 2882
name: datafile_disk_percentage
data_type: INT
value: 0
info: the percentage of disk space used by the data files. Range: [0,99] in integer
section: SSTABLE
scope: CLUSTER
source: DEFAULT
edit_level: DYNAMIC_EFFECTIVE
default_value: 0
isdefault: 1
*************************** 7. row ***************************
zone: zone1
svr_type: observer
svr_ip: 192.168.10.6
svr_port: 2882
name: datafile_size
data_type: CAPACITY
value: 10875M
info: size of the data file. Range: [0, +∞)
section: SSTABLE
scope: CLUSTER
source: DEFAULT
edit_level: DYNAMIC_EFFECTIVE
default_value: 0M
isdefault: 0
7 rows in set (0.003 sec)

obclient [oceanbase]> show parameters where name in (‘datafile_disk_percentage’) \G;
*************************** 1. row ***************************
zone: zone1
svr_type: observer
svr_ip: 192.168.10.6
svr_port: 2882
name: datafile_disk_percentage
data_type: INT
value: 0
info: the percentage of disk space used by the data files. Range: [0,99] in integer
section: SSTABLE
scope: CLUSTER
source: DEFAULT
edit_level: DYNAMIC_EFFECTIVE
default_value: 0
isdefault: 1
1 row in set (0.003 sec)

第一个文档的参数过期了吧, 设置的时候clog_usage_limit_size 不存在, 版本 4.2.3

查一下 cat /proc/meminfo

[root@localhost ~]# cat /proc/meminfo
MemTotal: 21334028 kB
MemFree: 8347124 kB
MemAvailable: 10696748 kB
Buffers: 2844 kB
Cached: 2189388 kB
SwapCached: 0 kB
Active: 10851700 kB
Inactive: 1044172 kB
Active(anon): 9719876 kB
Inactive(anon): 0 kB
Active(file): 1131824 kB
Inactive(file): 1044172 kB
Unevictable: 0 kB
Mlocked: 0 kB
SwapTotal: 5238780 kB
SwapFree: 5238780 kB
Zswap: 0 kB
Zswapped: 0 kB
Dirty: 200 kB
Writeback: 0 kB
AnonPages: 9684128 kB
Mapped: 709076 kB
Shmem: 16236 kB
KReclaimable: 549288 kB
Slab: 726292 kB
SReclaimable: 549288 kB
SUnreclaim: 177004 kB
KernelStack: 36160 kB
PageTables: 34300 kB
SecPageTables: 0 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 15905792 kB
Committed_AS: 17505572 kB
VmallocTotal: 34359738367 kB
VmallocUsed: 56964 kB
VmallocChunk: 0 kB
Percpu: 69632 kB
HardwareCorrupted: 0 kB
AnonHugePages: 8423424 kB
ShmemHugePages: 0 kB
ShmemPmdMapped: 0 kB
FileHugePages: 0 kB
FilePmdMapped: 0 kB
CmaTotal: 0 kB
CmaFree: 0 kB
Unaccepted: 0 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
Hugetlb: 0 kB
DirectMap4k: 225088 kB
DirectMap2M: 11427840 kB
DirectMap1G: 11534336 kB


虚拟机分配了20g的内存

1、memory_limit = MemTotal * memory_limit_percentage = 21334028*0.8KB
2、log_disk_size取值计算方式:log_disk_size>=memory_limit * 3 2. 预占用会提前申请磁盘空间,部署完成查看磁盘使用很大,属于正常现象。3. log_disk_size优先级大log_disk_percentage。
这个是你的log_disk_size的大小 log_disk_size的大小设置的不合理导致的 目前log_disk_size的大小压根不够用
name: log_disk_size
data_type: CAPACITY
value: 20480M

昨天是 40G, 我看教程是说缩小会回收, 所以改到20g. 那现在要怎么处理才能回收 clog的空间? 存储才11G, clog 就去了42G

我挺好奇你怎么查看的是占用11G的 我看你查出来的是42G的clog


我这里不是说的是 存储11g, clog 42g么, 纠结这个干嘛, 不是告诉我怎么才能够回收这个 clog的空间么

刚才没看清楚 不好意思 看错了
1、如果想给 clog 盘瘦身,可以临时调小 log_disk_utilization_threshold,等磁盘空间降下来后,调整log_disk_size大小,再将 log_disk_utilization_threshold 调回默认值 80 。log_disk_size设置过小 会有风险的 会导致clog没有空间可以用

2、log_disk_size取值计算方式:log_disk_size>=memory_limit * 3 2. 预占用会提前申请磁盘空间,部署完成查看磁盘使用很大,属于正常现象。3. log_disk_size优先级大log_disk_percentage。

1 个赞

@论坛小助手