k8s集群使用helm方式安装mariadb数据库。
检查存储节点硬盘使用率偏高,检查发现数据库bin_log日志较多,占用大量硬盘。需求清理过量日志(手段),释放硬盘空间(效果),保障生产安全(目的)。
清理过量日志,配置定期清理bin_log日志。
df -hl cd / du --max-depth=1 -h|grep G
kubectl -n <namespace> get configmaps kebectl -n <namespace> edit confgimaps XXX-mariadb-primary kebectl -n <namespace> edit confgimaps XXX-mariadb-secondary
添加如下配置内容:
expire_logs_days=7 #保留7天内得bin_log日志 sync_binlog=1 #每次写入同步存到硬盘中,保证安全性,降低性能
kubectl -n <namespace> rollout restart sts XXX-mariadb-primary kubectl -n <namespace> rollout restart sts XXX-mariadb-secondary
这时检查硬盘使用率如果已经下降,说明配置生效了。
一般从库的[mysql-relay-bin.000000]日志会自动清理,实际生产中遇到从库relay日志大量蓄积,不能自动清理,占用过量的硬盘资源。
可登入数据库进行清理:
stop slave; reset slave; start slave;
注释:亲测此方法可清理relay日志,但不确定是否有副作用,建议谨慎使用。安全生产第一,操作前至少备份一下数据库。
SHOW VARIABLES LIKE 'event_scheduler'; #查看定时器开关 show variables like 'long_query_time'; #查看慢查询时间设定 show variables like 'slow_query_log'; #查看慢查询开关 show VARIABLES like 'slow_query_log_file'; #查看慢查询日志存储位置 show VARIABLES like 'expire_logs_days'; #查看bin_log保留期限 show VARIABLES like 'max_binlog_size'; #查看bin_log最大单文件限制