一些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 =“,但均无效...

#1 楼

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

问题的关键部分是:


我的意思是在包含的文件中,例如/etc/mysql/conf.d/myCustomFile.cnf


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

[mysqld]
skip-log-bin


您也可以将skip-作为前缀添加到其他选项,也可以通过这种方式禁用它们。

评论


谢谢。这救了我-我通过系统删除了一些日志文件,而mysql无法启动。我选择了这个选项,然后mysql启动了!

–FlyingZebra1
20/12/23在2:24

#2 楼

在MySQL 8中,必须在my.cnf部分的[mysqld]文件中不带任何参数的情况下提供选项disable_log_bin。

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


评论


这是在MySQL 8.0上为我工作的版本。我要补充一点,它还要求文件中不包含“ log-bin”(“ disable_log_bin”和“ log_bin =“仍启用binlog)。

– Tomas Creemers
20-09-18在7:25

skip-log-bin在mysql 8 / ubuntu 20上也对我有用

–FlyingZebra1
20 Dec 23'2:23

#3 楼

如果不进行复制,则可以通过更改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

#4 楼

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

log_bin


或根本不接受任何参数,因为它是一个布尔参数。

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

日志选项的历史记录并不是太直观,并且对其进行更改格式因版本而异(我在看着你,日志很慢)。

#5 楼

从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。


#6 楼

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

评论


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

–尼古拉斯·佩亚特(Nicolas Payart)
2014年8月1日在8:58

skip-log-bin关闭在其他位置设置的布尔值

–圣地亚哥·亚利桑那
18年3月7日在22:04

#7 楼

我有用的配置
[mysql]
innodb-doublewrite=OFF
innodb-fast-shutdown=0
innodb_flush_method = noflush
innodb_buffer_pool_size = 150GB
skip-log-bin


评论


欢迎使用DBA SE!如果您解释原因,原因和作用方式,那么它会使您的回答更加有用。 Config / script / code复制粘贴不是非常高质量的内容。

–peterh-恢复莫妮卡
20年8月16日在11:12