OceanBase 数据库在运行过程中会自动生成日志。运维工程师通过查看和分析日志,可以了解 OceanBase 数据库的启动和运行状态。在之前的一些琐碎的文章里,我也提到了,新安装的数据库,可能由于空间规划不足,采用默认日志策略,导致日志文件将所有的空间都占满,然后导致集群出问题。
今天我们就来看看OceanBase的两个日志管理策略:
- 日志文件切片管理
- 日志文件数量管理
1.日志文件切片管理
日志文件切片管理属于OceanBase本身的一种机制,单个日志文件大小不超过 256 MB,可通过日志文件切片来管理和控制,并且不支持定制大小。
大家如果已经安装并且了解过OceanBase,肯定已经看过它创建的日志文件:observer.log 、election.log 、rootservice.log 、observer.log.wf 、election.log.wf和 rootservice.log.wf,这些文件的大小都遵守 256MB 的限制,一旦超过这个限制,系统会自动生成一个新的文件,源文件就加在结尾加个时间戳做备份。
日志文件形如:
[admin@OceanBase000000000.sqa.ztt /home/admin/oceanbase/log] $ls -alh | egrep ‘[0-9]{14}’ | grep observer | grep -v wf -rw-r–r-- 1 admin admin 256M Jul 7 05:34 observer.log.20160707053424 -rw-r–r-- 1 admin admin 256M Jul 7 05:38 observer.log.20160707053821
2.日志文件数量管理
如果要解决磁盘不被很快占满的问题,其实有两种方案:
- 调高日志级别,只打印WARN或ERROR日志,这样的话,可以延缓日志文件增长的速度,缺点是解决不彻底,并且日志变少不利于排错,所以不建议;
- 控制日志文件的数量,这种方法的话,可以有效的控制日志文件的数量,不出现磁盘占满的情况,缺点是日志增长过快有可能无法获取一些想要的历史数据,但是仍然推荐这种方式,毕竟是程序安全的。
下面我们来看一下,如何控制日志文件的数量:
大家要明确,我们需要控制系统参数 max_syslog_file_count 来达到控制日志文件数量的目的。
- 首先我们可以通过如下命令在数据库中查看该参数的值:
show parameters like ‘%max_syslog_file_count%’;
该值如果为0,说明对文件保存数量没有限制,如果设置为某个固定值,那文件增长到该值后,旧的数据文件就会自动进行删除。
- 该参数的修改方式如下:
我们可以通过在observer启动后进入数据库修改,也可以通过指定observer启动项目的-o参数在启动时进行配置,两种配置方式演示如下:
在客户端中,设置 max_syslog_file_count 的值。
obclient > ALTER SYSTEM SET max_syslog_file_count=20;
启动 OBServer 时,在 -o 参数中指定 max_syslog_file_count 的值。
[admin@hostname oceanbase]$ /home/admin/oceanbase/bin/observer -i eth0 -P XXXX -p YYYY -z zone1 -d /home/admin/oceanbase/store/obdemo -r ‘xxx.xxx.xxx.xxx:xxxx:xxx.xxx.xxx.xxx:xxxx xxx.xxx.xxx.xxx:xxxx:yyyy’ -c 20190716 -n obdemo -o “max_syslog_file_count=20,memory_limit_percentage=90,memstore_limit_percentage=60,datafile_disk_percentage=80,config_additional_dir=/data/1/obdemo/etc3;/data/log1/obdemo/etc2”
3.总结
好了,有关OceanBase日志数量控制的方法就介绍到这里,大家在日常使用过程中,一定要多关注磁盘空间使用情况,做好日志的管理,否则因为控制不当导致服务异常就得不偿失了。