
通过告警平台发现OceanBase数据文件(sstable)使用率超过85%,当数据使用超过100%时,会导致数据不能写入,存在observer宕机的风险。当系统磁盘充足时,适当调整datafile_disk_percentage参数,以增大数据磁盘可使用空间,避免故障发生。




0.ENV
CentOS 7.6;
OceanBase-ce 3.1.2。


1. 调整前信息查询
1.1 observer磁盘空间使用率
datafile_disk_percentage: 30
1.2 系统磁盘空间使用
当前/home使用率为80%
[root@ob03 ~]# df -h | grep homeFilesystem Size Used Avail Use% Mounted on/dev/mapper/centos-home 1.8T 1.4T 359G 80% /home
查询目录空间占用
[admin@ob03 ~]$ du -sh *1.1G obagent1.4T observer[admin@ob03 ~]$ cd observer/[admin@ob03 observer]$ lsadmin bin etc etc2 etc3 lib log run store[admin@ob03 observer]$ du -sh *0 admin0 bin8.0K etc8.0K etc28.0K etc30 lib5.7G log4.0K run1.4T store[admin@ob03 observer]$ cd store/[admin@ob03 store]$ du -sh *875G clog4.6G ilog135M slog534G sstable #数据存放目录
1.3 查看数据库分配空间
发现数据分配使用率较低,
MySQL [oceanbase]> SELECT svr_ip, used_size/1024/1024/1024 used_GB,free_size/1024/1024/1024 free_GB from __all_virtual_disk_stat;+---------------+------------------+------------------+| svr_ip | used_GB | free_GB |+---------------+------------------+------------------+| 192.168.8.244 | 469.173828125000 | 64.677734375000 || 192.168.8.242 | 468.650390625000 | 65.201171875000 || 192.168.8.243 | 469.177734375000 | 64.673828125000 |+---------------+------------------+------------------+3 rows in set (0.005 sec)


2. 调整observer磁盘空间使用
2.1 调大数据文件使用磁盘大小
[admin@obp1 ~]$ obd cluster edit-config obcluster #将30修改为35,即将observer(数据文件)所在的磁盘空间使用率由30%调整为35%
global:...datafile_disk_percentage: 35...
2.2 使配置生效,不需要要重启,不影响业务运行
[admin@obp1 ~]$ obd cluster reload obclusterGet local repositories and plugins okLoad cluster param plugin okOpen ssh connection okCluster status check okConnect to obproxy okConnect to observer okobcluster reload
2.3 可进一步在数据库中查询,参数已生效
MySQL [oceanbase]> show parameters like 'datafile_disk_percentage';+-------+----------+---------------+----------+--------------------------+-----------+-------+-------------------------------------------------------------------------------+---------+---------+---------+-------------------+| zone | svr_type | svr_ip | svr_port | name | data_type | value | info | section | scope | source | edit_level |+-------+----------+---------------+----------+--------------------------+-----------+-------+-------------------------------------------------------------------------------+---------+---------+---------+-------------------+| zone1 | observer | 192.168.8.242 | 2882 | datafile_disk_percentage | NULL | 35 | the percentage of disk space used by the data files. Range: [5,99] in integer | SSTABLE | CLUSTER | DEFAULT | DYNAMIC_EFFECTIVE || zone3 | observer | 192.168.8.244 | 2882 | datafile_disk_percentage | NULL | 35 | the percentage of disk space used by the data files. Range: [5,99] in integer | SSTABLE | CLUSTER | DEFAULT | DYNAMIC_EFFECTIVE || zone2 | observer | 192.168.8.243 | 2882 | datafile_disk_percentage | NULL | 35 | the percentage of disk space used by the data files. Range: [5,99] in integer | SSTABLE | CLUSTER | DEFAULT | DYNAMIC_EFFECTIVE |+-------+----------+---------------+----------+--------------------------+-----------+-------+-------------------------------------------------------------------------------+---------+---------+---------+-------------------+3 rows in set (0.004 sec)


3. 调整后信息查询
3.1 系统磁盘空间使用
[admin@ob03 store]$ du -sh *789G clog4.1G ilog145M slog623G sstable #数据存放目录已经由之前的534G增加到623G[admin@ob03 store]$ df -h | grep home/dev/mapper/centos-home 1.8T 1.4T 357G 80% /home
3.2 数据库分配空间-当前空间已经生效
MySQL [oceanbase]> SELECT svr_ip, used_size/1024/1024/1024 used_GB,free_size/1024/1024/1024 free_GB from __all_virtual_disk_stat;+---------------+------------------+------------------+| svr_ip | used_GB | free_GB |+---------------+------------------+------------------+| 192.168.8.244 | 471.089843750000 | 151.736328125000 || 192.168.8.242 | 470.564453125000 | 152.261718750000 || 192.168.8.243 | 471.093750000000 | 151.732421875000 |+---------------+------------------+------------------+3 rows in set (0.005 sec)


4. 小结
生产环境建议将安装目录、数据目录、日志目录等分开,并建议设置数据初始值较小,随着生产数据的增加,再调大datafile_disk_percentage参数。
该参数不能调小,不能调低于目前使用空间,避免数据库损坏。
当前增大了数据文件使用空间,保障了observer数据空间的使用,但系统/home目录整体使用80%,仍存在在空间风险,下期将进行clog调整,降低clog目录空间的使用。


5. 附--查询数据使用率
MySQL [oceanbase]> SELECT svr_ip, used_size/1024/1024/1024 used_GB,free_size/1024/1024/1024 free_GB,used_size*100/total_size "used_percent(%)" from __all_virtual_disk_stat;+---------------+------------------+------------------+-----------------+| svr_ip | used_GB | free_GB | used_percent(%) |+---------------+------------------+------------------+-----------------+| 192.168.8.242 | 474.435546875000 | 148.390625000000 | 76.1746 || 192.168.8.243 | 474.435546875000 | 148.390625000000 | 76.1746 || 192.168.8.244 | 474.433593750000 | 148.392578125000 | 76.1743 |+---------------+------------------+------------------+-----------------+3 rows in set (0.003 sec)
旨在交流,不足之处,还望抛砖。
作者:王坤,微信公众号:rundba,欢迎转载,转载请注明出处。
如需公众号转发,请联系wx: landnow。





