在 MySQL/8 中为 Windows 禁用二进制日志记录

Disable binary logging in MySQL/8 for Windows

我想禁用二进制日志记录以诊断一些无趣的问题。反正我从来没有使用过复制——启用它只是因为它是 MySQL/8 中的默认设置。 Google 显示了 20 种不同的方法,none 似乎在我的设置中有效。

official manual 说:

To disable binary logging, you can specify the --skip-log-bin or --disable-log-bin option at startup.

它作为 Windows 服务运行,与官方 MySQL 安装程序一起安装,所以我使用了 regedit (HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MySQL80\ImagePath),但要么在任何位置标记,要么独立,要么使用 =1,阻止服务启动但日志文件不包含任何错误消息。

我还了解到您可以在默认文件中包含此内容:

[mysqld]
skip-log-bin

服务器启动,错误二进制日志记录保持启用。

使用 --skip-log-bin=1 设置 MYSQLD_OPTS 环境变量会被忽略(也许它是某些 Linux 发行版独有的)。

如何在 Windows 上禁用 MySQL/8 中的二进制日志记录?


HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MySQL80\ImagePath

"C:\Program Files\MySQL\MySQL Server 8.0\bin\mysqld.exe" --defaults-file="C:\ProgramData\MySQL\MySQL Server 8.0\my.ini" MySQL80

C:\ProgramData\MySQL\MySQL 服务器 8.0\my.ini:

[client]
port=3306

[mysql]
no-beep

[mysqld]
port=3306
datadir=C:/ProgramData/MySQL/MySQL Server 8.0/Data
default_authentication_plugin=mysql_native_password
default-storage-engine=INNODB
sql-mode="STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION"
log-output=FILE
general-log=0
general_log_file="FOO.log"
slow-query-log=1
slow_query_log_file="FOO-slow.log"
long_query_time=10
# One of my failed attempts:
skip-log-bin

看来问题与操作顺序有关。

If the --skip-log-bin or --disable-log-bin option is specified at startup, binary logging is disabled, with the log_bin system variable set to OFF. If either of these options is specified and --log-bin is also specified, the option specified later takes precedence. [sic]

配置选项

默认情况下 MySQL 设置配置值 log-bin="FOO.bin",您需要确保 skip-log-bin 声明为 BELOW 或 AFTER log-bin 配置选项。

C:\ProgramData\MySQL\MySQL 服务器 8.0\my.ini

[mysqld]

#...

log-bin="FOO.bin"
skip-log-bin

保存配置文件后,重启MySQL服务。

SELECT @@GLOBAL.log_bin, @@GLOBAL.version, @@GLOBAL.version_comment, @@GLOBAL.version_compile_os;

结果

+------------------+------------------+------------------------------+-----------------------------+
| @@GLOBAL.log_bin | @@GLOBAL.version | @@GLOBAL.version_comment     | @@GLOBAL.version_compile_os |
+------------------+------------------+------------------------------+-----------------------------+
|                0 | 8.0.21           | MySQL Community Server - GPL | Win64                       |
+------------------+------------------+------------------------------+-----------------------------+
1 row in set (0.00 sec)

log-bin 之前或之上声明 skip-log-bin 进行测试,即使使用 log-bin=0log-bin=OFF 也会导致 log-bin 声明优先 -将指定的 log-bin 值转换为字符串。
删除 log-bin 声明并在任何地方声明 skip-log-bin,导致 log_binOFF


环境变量

环境变量 MYSQLD_OPTS 特定于 systemd (Linux) 环境。 [sic] [sic]

Windows 似乎没有等效的环境变量。 [sic] 我认为当 运行 MySQL 作为 Windows 服务时不适用。

在我声明 disable_log_bin 并在 my.cnf 中评论 log-bin 后它对我有用。