使用log_bin变量禁用MySQL二进制日志记录


35

一些debian软件包使用APT安装的默认MySQL配置文件/etc/mysql/my.cnf通常设置log_bin变量,因此启用了binlog:

log_bin = /var/log/mysql/mysql-bin.log

当我想在这种安装上禁用二进制日志记录时,请当然在my.cnf工程中注释掉该行,但是我想知道是否有一种方法可以通过以debian风格将log_bin显式设置为OFF来禁用二进制日志记录,我的意思是包含的文件,例如/etc/mysql/conf.d/myCustomFile.cnf,因此默认的my.cnf不会更改,并且可以根据需要通过apt轻松更新。

我尝试了“ log_bin = 0”,“ log_bin = OFF”或“ log_bin =“,但是均无效...

Answers:


42

这是一个古老的问题,但是当我尝试在内存中搜索正确的选项名称时出现了一个问题,因此,现在我已经弄清楚了,在此处添加了详细信息。

问题的关键部分是:

我的意思是在/etc/mysql/conf.d/myCustomFile.cnf这样的包含文件中

您可以使用option从包含的选项文件中执行此操作skip-log-bin。例如,您可能/etc/mysql/conf.d/disable_binary_log.cnf使用以下内容创建:

[mysqld]
skip-log-bin

您也可以添加skip-前缀作为其他选项来禁用它们。


1
太好了,正是我所期望的。至少在MariaDB 10.0上这很好。非常感谢。
Nicolas Payart 2015年

7

在MySQL 8中,必须提供disable_log_bin选项my.cnf,该[mysqld]部分的文件中没有任何参数。

[mysqld]
disable_log_bin
some-other-option = any-value

5

您可以这样看,log_bin不应该接受参数,您可以输入:

log_bin

或根本没有任何内容,因为它是一个布尔参数。

但是,如果设置了值,则启用日志,并将该值解释为binlog基名。

日志选项的历史不是太直观,而是在版本之间更改其格式(我在看您,日志很慢)。


在MariaDB上不起作用
MechanTOurS 2015年

鉴于我使用的是MariaDB,并且我在配置中也有相同的一行,所以我非常有信心。
jynus

4

如果不进行复制,则可以通过更改my.ini或my.cnf文件来禁用二进制记录。打开您的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


1
我认为OP理解了这一点,这就是为什么他写道:“我的意思是在/etc/mysql/conf.d/myCustomFile.cnf这样的包含文件中,所以默认的my.cnf不会更改”
Peter V.Mørch

1

从MariaDB 手册https://mariadb.com/kb/zh/library/activating-the-binary-log/

如果您不提供名称(可以选择包含绝对路径),则默认名称为datadir / log-basename-bin,datadir / mysql-bin或datadir / mariadb-bin

然而,

具有SUPER特权的客户端可以通过设置sql_log_bin变量来禁用和重新启用当前会话的二进制日志。

SET sql_log_bin = 0;

SET sql_log_bin = 1;

但是,如果您说它是在安装过程中默认启用的,则必须通过从my.cnf文件中删除该行,然后重新启动mysqld来禁用它。您还可以清除二进制数据(https://dev.mysql.com/doc/refman/5.6/en/purge-binary-logs.html

PURGE BINARY LOGS

最后,正如其他发布者的答案所述,在MySQL 8中,有一个选项可以使用配置文件的[mysqld]部分中的--skip-log-bin--disable-log-bin选项从配置文件中明确关闭二进制日志记录。

要禁用二进制日志记录,可以在启动时指定--skip-log-bin--disable-log-bin选项。如果指定了这些选项中的任何一个,并且--log-bin也指定了它们,则以后指定的选项优先。禁用二进制日志记录时,将log_bin系统变量设置为OFF。


0

据我了解,更新软件包后,配置文件应该是旧的,因此更新后,您将拥有相同的配置文件。否则,您可以在路径$ MYSQL_HOME / my.cnf中创建第二个配置文件。这是针对服务器的特定选项,据我所知,它将覆盖全局/etc/my.cnf中的设置


1
是的,Debian默认策略不会覆盖/ etc中的配置文件。但是我的问题恰恰是如何在不注释/etc/mysql/my.cnf中的行的情况下用“空值”覆盖log_bin设置。
Nicolas Payart 2014年

skip-log-bin关闭其他位置设置的布尔值
圣地亚哥·亚利桑那州
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.