Nic*_*art 52 mysql logs binlog debian
某些使用 APT 的 debian 包安装的默认 MySQL 配置文件 /etc/mysql/my.cnf 经常设置 log_bin 变量,因此启用了 binlog:
log_bin = /var/log/mysql/mysql-bin.log
Run Code Online (Sandbox Code Playgroud)
当我想在这样的安装上禁用二进制日志记录时,当然注释掉 my.cnf 中的行,但我想知道是否有办法通过将 log_bin 显式设置为 OFF 来禁用二进制日志记录,在 debian 风格中,我的意思是在一个包含文件,如 /etc/mysql/conf.d/myCustomFile.cnf,因此默认 my.cnf 不会更改,如有必要,可以通过 apt 轻松更新。
我试过“log_bin = 0”、“log_bin = OFF”或“log_bin =”,但没有一个有效......
小智 64
这是一个老问题,但它是在我试图回忆正确选项名称时的搜索中出现的,所以现在我已经弄清楚了,我在这里添加了详细信息。
问题的关键部分是:
我的意思是在像 /etc/mysql/conf.d/myCustomFile.cnf 这样的包含文件中
您可以使用选项从包含的选项文件中执行此操作skip-log-bin。例如,您可以/etc/mysql/conf.d/disable_binary_log.cnf使用以下内容创建:
[mysqld]
skip-log-bin
Run Code Online (Sandbox Code Playgroud)
您也可以将其skip-作为前缀添加到其他选项以通过这种方式禁用它们。
相关问答:要清除当前累积的日志,请参阅此答案。
Pet*_*RGA 25
在 MySQL 8 中,选项disable_log_bin必须my.cnf在以下[mysqld]部分的文件中不带任何参数提供:
[mysqld]
disable_log_bin
some-other-option = any-value
Run Code Online (Sandbox Code Playgroud)
从手册条目Binary Logging Options and Variables:
要禁用二进制日志记录,您可以在启动时指定
--skip-log-binor--disable-log-bin选项。如果指定并且--log-bin也指定了这些选项中的任何一个,则后面指定的选项优先。禁用二进制日志记录时,log_bin系统变量设置为 OFF。
要仅保留特定的最小数据量,您还可以binlog_expire_logs_seconds从 MySQL 8使用:
以秒为单位设置二进制日志过期时间。到期后,二进制日志文件可以自动删除。可能的删除发生在启动和刷新二进制日志时。
你可以这样看,log_bin 不应该接受参数,要么你把:
log_bin
Run Code Online (Sandbox Code Playgroud)
或者什么都没有,因为它是一个布尔参数。
但是,如果设置了值,则启用日志并将该值解释为二进制日志基本名称。
日志选项有一个不太直观的历史,并且在不同版本之间更改其格式(我在看着你,慢日志)。
编辑:在最近的版本中,二进制日志现在默认启用。要禁用它,必须指定:--skip-log-bin或--disable-log-bin在命令行上(或选项文件上的相同参数)。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
小智 5
来自MariaDB手册( https://mariadb.com/kb/en/library/activation-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;
Run Code Online (Sandbox Code Playgroud)
但是,如果您说它在安装期间默认启用,则必须通过从 my.cnf 文件中删除该行来禁用,然后重新启动 mysqld。您还可以清除二进制数据(https://dev.mysql.com/doc/refman/5.6/en/purge-binary-logs.html)
PURGE BINARY LOGS
Run Code Online (Sandbox Code Playgroud)
最后,正如其他发布者的回答所提到的,在MySQL 8 中,有一个选项可以使用配置文件的 [mysqld] 部分中的--skip-log-binor--disable-log-bin选项从配置文件中明确关闭二进制日志记录。
要禁用二进制日志记录,您可以在启动时指定
--skip-log-binor--disable-log-bin选项。如果指定并且--log-bin也指定了这些选项中的任何一个,则后面指定的选项优先。禁用二进制日志记录时,log_bin 系统变量设置为 OFF。