我不确定您的my.cnf发生了什么,但是要解决更大的问题,看来您有几种选择:
我有一对用于主从复制的MySQL数据库。奴隶做得很好。
另一方面,尽管我尽了最大努力(自动),但主服务器仍在ho积二进制日志。
我正在尝试在MySQL的my.cnf文件中设置'expire_logs_days'变量,但是由于某些原因,它似乎被忽略了。我的my.cnf文件看起来像:
[mysqld]
...
log-bin=/var/log/mysql/mysql-bin.log
server-id=1
expire_logs_days=3
log_bin_trust_function_creators=TRUE
sync_binlog=1
[mysqld_safe]
...
但是当我在MySQL中运行SHOW VARIABLES WHERE Variable_Name='expire_logs_days'
时,它返回的值为0
我尝试过:
expire_logs_days='3'
mysqld --help --verbose | grep cnf
/etc/mysql/my.cnf /etc/my.cnf ~/.my.cnf order of preference
my.cnf
文件位于/etc/my.cnf
SET GLOBAL expire_logs_days=3
可以在MySQL中使用,但本身并不能真正解决我的问题这就是我能想到的全部。我已经运行了手动PURGE命令,该命令很好用,但是我还是希望(尽管如果无法解决,我还是会这样做)不要使用cron运行PURGE命令。
有人有什么想法吗?我正要轻按。
谢谢。
由于您可以使用PURGE BINARY LOGS;
擦除二进制日志,所以有两个地方让您看起来没有提到过]]
mysql-bin.index
此文件包含所有二进制日志的位置。设置expire_logs_days时,mysqld将打开该文本文件,检查每个文件中的日期时间戳,直到遇到时间戳小于NOW() - INTERVAL expire_logs_days DAY)
的二进制日志。
预计mysql-bin.index中的二进制日志在数值上是连续的。如果二进制日志不是数字连续的,则禁用日志轮换。
/var/log/mysql
文件夹根据您的my.cnf
,此文件夹包含所有二进制日志。
这里有2个问题:
/var/log/mysql
中是否存在不连续的二进制日志?/var/log/mysql
中是否有任何NOT IN mysql-bin.index
的二进制日志?有时,人们会在操作系统中删除二进制日志。由于mysqld使用mysql-bin.index
内部跟踪二进制日志的存在,因此这可能会导致mysqld退出。如mysqld所知,只需使用rm -f
删除逻辑上破坏日志循环机制的二进制日志即可。
如果是这两种情况中的一种或两种,都可以按照以下步骤进行清理:
mysql -ANe"RESET MASTER" service mysql stop cd /var/log/mysql rm -f mysql-bin.* cd service mysql start
此后,您应该拥有一个崭新的二进制日志设置程序。
尝试一下!
我不确定您的my.cnf发生了什么,但是要解决更大的问题,看来您有几种选择:
max_binlog_size
。根据文档:可能会在启动时以及刷新二进制日志时发生。
和
此外,当二进制日志的大小达到系统变量max_binlog_size的值时,将刷新该日志。
听起来像#3在执行冲洗/吹扫时将执行
expire_logs_days
。
更改该配置文件中的任何其他选项是否有效?我们需要肯定的是,我们要找到正确的配置文件。更改server-id的值可能是一个不错的选择。
如果没有效果,让我们通过运行找到正确的文件:
ps aux | grep mysqld
并查看--defaults-file或--defaults-extra-file的值
并且如果您仍然感到困惑,请确保未在某处设置--init-file将该值设置为0。
Mysql(社区)版本8.0.17-1.sles12-OpenSUSE风滚草2019.10.02
mysql> SET GLOBAL expire_logs_days = 4;
ERROR 3683 (HY000): The option expire_logs_days and binlog_expire_logs_seconds
cannot be used together. Please use binlog_expire_logs_seconds to set the expire
time (expire_logs_days is deprecated)
..
我不确定您的my.cnf发生了什么,但是要解决更大的问题,看来您有几种选择:
更改该配置文件中的任何其他选项是否有效?我们需要肯定的是,我们要找到正确的配置文件。更改server-id的值可能是一个不错的选择。
Mysql(社区)版本8.0.17-1.sles12-OpenSUSE风滚草2019.10.02