问题:
Mysql数据库由于业务原因,数据量增长迅速,general日志、binlog日志也增加较多,占用大部分磁盘空间。
解决方案:
出于节约空间考虑,可进行删除多余binary日志,并设置定期删除操作。
相关参数如下“expire_logs_days”、“general_log”:
1、binary日志(此变量值为可动态修改)
查看当前binary日志失效、自动删除的状态:
show global variables like '%expire_logs_days%';
或
select @@global.expire_logs_days;
如下:
expire_logs_days=0:表示,所有binary日志永久都不会失效,不会自动删除;
目前需求,只想保留七天日志,其余日志打包、压缩后备份至其他地方:
修改方式:
永久生效(重启后即生效):
修改配置文件my.ini(window系统环境下,若为Linux环境,则修改my.cnf文件)文件:
在[mysqld]标签内增加如下内容
expire_logs_days=7
即时生效(若不修改配置文件,则重启后失效):
set @@global.expire_logs_days=7;
再一次查询验证:
tips:此参数为整数型,默认为0(不删除),且最小值为0,最大值为99。
2、general日志(此变量值为可动态修改)
查看当前general_log状态:
select @@global.general_log;
结果为开启状态:
修改方式:
修改配置文件my.ini()文件:
在my.ini文件的[mysqld]标签中,增加如下内容后,重启:
general-log=0 #0:关闭;1:开启
修改后即时生效(若不修改配置文件,重启数据库后失效)
set @@global.general_log=0; # 0:关闭;1:开启
或
set global gereral_log=0;
再次查看验证:
tips:此参数为布尔型,0:代表关闭;1:代表开启。可动态修改,默认关闭。
若数据库运行过程中,才发现general日志为开启状态,当业务不予许暂停情况下,依旧可以使用动态修改关闭,并且关闭后可对general日志进行物理文件的删除。