在 MySQL/8 中为 Windows 禁用二进制日志记录
Disable binary logging in MySQL/8 for Windows
我想禁用二进制日志记录以诊断一些无趣的问题。反正我从来没有使用过复制——启用它只是因为它是 MySQL/8 中的默认设置。 Google 显示了 20 种不同的方法,none 似乎在我的设置中有效。
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=0
或 log-bin=OFF
也会导致 log-bin
声明优先 -将指定的 log-bin
值转换为字符串。
删除 log-bin
声明并在任何地方声明 skip-log-bin
,导致 log_bin
为 OFF
环境变量
环境变量 MYSQLD_OPTS
特定于 systemd
(Linux) 环境。 [sic] [sic]
Windows 似乎没有等效的环境变量。 [sic] 我认为当 运行 MySQL 作为 Windows 服务时不适用。
在我声明 disable_log_bin
并在 my.cnf 中评论 log-bin
后它对我有用。
我想禁用二进制日志记录以诊断一些无趣的问题。反正我从来没有使用过复制——启用它只是因为它是 MySQL/8 中的默认设置。 Google 显示了 20 种不同的方法,none 似乎在我的设置中有效。
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=0
或 log-bin=OFF
也会导致 log-bin
声明优先 -将指定的 log-bin
值转换为字符串。
删除 log-bin
声明并在任何地方声明 skip-log-bin
,导致 log_bin
为 OFF
环境变量
环境变量 MYSQLD_OPTS
特定于 systemd
(Linux) 环境。 [sic] [sic]
Windows 似乎没有等效的环境变量。 [sic] 我认为当 运行 MySQL 作为 Windows 服务时不适用。
在我声明 disable_log_bin
并在 my.cnf 中评论 log-bin
后它对我有用。