一些使用 APT 的 debian 软件包安装的默认 MySQL 配置文件 /etc/mysql/my.cnf 经常设置 log_bin 变量,因此启用了 binlog:
log_bin = /var/log/mysql/mysql-bin.log
当我想在此类安装中禁用二进制日志记录时,当然注释掉 my.cnf 中的行,但我想知道是否有办法通过将 log_bin 显式设置为 OFF 来禁用二进制日志记录,在 debian 样式中,我的意思是像 /etc/mysql/conf.d/myCustomFile.cnf 这样的包含文件,因此默认 my.cnf 不会更改,如有必要,可以通过 apt 轻松更新。
我尝试了“log_bin = 0”、“log_bin = OFF”或“log_bin =”,但没有一个有效......
这是一个古老的问题,但是当我试图回忆正确的选项名称时,它出现在搜索中,所以现在我已经弄清楚了,我在这里添加了详细信息。
问题的关键部分是:
您可以使用选项从包含的选项文件中执行此操作
skip-log-bin
。例如,您可以/etc/mysql/conf.d/disable_binary_log.cnf
使用以下内容创建:您也可以将
skip-
其作为前缀添加到其他选项以通过这种方式禁用它们。相关问答:要清除当前累积的日志,请参阅此答案。
在 MySQL 8 中,选项disable_log_bin
my.cnf
必须在该部分的文件中不提供任何参数[mysqld]
:从手册条目二进制日志记录选项和变量:
要仅保留特定的最少量数据,您还可以
binlog_expire_logs_seconds
从 MySQL 8 开始使用:来自MariaDB手册( https://mariadb.com/kb/en/library/activating-the-binary-log/ )
然而,
但是,如果您说它在安装期间默认启用,则必须通过从 my.cnf 文件中删除该行来禁用它,然后重新启动 mysqld。您还可以清除二进制数据(https://dev.mysql.com/doc/refman/5.6/en/purge-binary-logs.html)
最后,正如另一位发帖人的回答所提到的,在MySQL 8中,有一个选项可以使用配置文件的 [mysqld] 部分中的
--skip-log-bin
or选项从配置文件中显式关闭二进制日志记录。--disable-log-bin
如果您不进行复制,则可以通过更改 my.ini 或 my.cnf 文件来禁用 binlogging。打开你的 my.ini 或 /etc/my.cnf (/etc/mysql/my.cnf),输入:
# vi /etc/my.cnf
找到一行“log_bin”并删除或注释它,如下所示:
#log_bin = /var/log/mysql/mysql-bin.log
您还需要删除或注释以下行:
#expire_logs_days = 10
#max_binlog_size = 100M
关闭并保存文件。最后重启mysql服务器:
# service mysql restart
你可以这样看,log_bin 不应该接受参数,或者你把:
或者什么都没有,因为它是一个布尔参数。
但是,如果设置了值,则会启用日志并将该值解释为 binlog 基本名称。
日志选项的历史不太直观,并且在版本之间更改其格式(我在看着你,慢日志)。
编辑:在最近的版本中,二进制日志现在默认启用。要禁用它,必须在命令行上指定:
--skip-log-bin
或--disable-log-bin
(或选项文件上的相同参数)。log-bin
继续努力像以前一样显式启用二进制日志。据我所知,更新软件包后,配置文件应该是旧的,所以更新后你有相同的配置文件。否则,您可以在路径 $MYSQL_HOME/my.cnf 中创建第二个配置文件。这是针对服务器特定选项的,据我所知,它将覆盖全局 /etc/my.cnf 中的设置