mysql> SELECT * FROM performance_schema.global_variables WHERE VARIABLE_NAME IN ('log_bin');
+---------------+----------------+
| VARIABLE_NAME | VARIABLE_VALUE |
+---------------+----------------+
| log_bin | OFF |
+---------------+----------------+
1 row in set (0.00 sec)
除了指定相应的命令行参数外,您还可以添加一个选项
my.cnf
:编辑
my.cnf
和添加部分skip-log-bin
。[mysqld]
重新开始
mysqld
享受你缺乏二进制日志
请注意,这将一直有效,直到您从配置文件中删除该选项。
使用设置环境命令:
接下来,使用以下命令重新加载配置文件并重新启动服务器:
接下来检查 log_bin 全局变量的值:
来自MySQL 8.0 参考手册,第 5.4.4 节:
周围有一些相互矛盾的信息。显然,MySQL 8.0+ 默认启用二进制日志,所以很多服务器管理员在半夜发现这个问题,因为服务器崩溃了!
一般来说,MySQL 使用破折号
-
作为内联命令标志,并使用下划线_
作为永久配置选项名称……实际上,这对于许多应用程序来说很常见。然而,无论出于何种原因,这变得不那么真实了,现在可以接受各种格式(更多如下)......如果您只想为当前会话禁用二进制日志,请使用:
--disable-log-bin
--skip-log-bin
但是,如果您想要一个永久的解决方案,请编辑您的
my.cnf
配置文件并添加:disable-log-bin
skip-log-bin
disable_log_bin
skip_log_bin
我已经在我们的SlickStack 样板中成功地测试了所有这些变体。(无论您选择哪个都可以,但请确保不要包含多个版本。)
请注意,OP 共享的语法不起作用:
log_bin = OFF
您可能想知道为什么 MySQL 让事情变得如此复杂,但回答这超出了我的薪酬等级,我敢于猜测,他们只是想尽可能地混淆我们;)
一些可能对 Windows 用户特别有帮助的附加信息。
TLDR 摘要 -检查您是否拥有正确的配置文件,添加禁用/跳过选项之一,并注释掉/删除对设置 bin 日志文件名的任何引用。
在我的情况下,服务条目指定了一个非标准默认文件
我跑的时候没有出现在选项的迷雾中
mysql.exe --help
我尝试了所有这些
没有任何工作,我知道我正在重新启动正确的服务,因为如果我停止它,我将无法连接。原来我指定了一个文件名
将其注释掉意味着像
disable-log-bin
现在这样的配置选项可以工作。打开文件并在 [mysqld] 之后
/etc/mysql/mysql.conf.d/mysqld.cnf
添加 1 行skip-log-bin = true
IE。
保存文件
重新启动 mysql 服务
sudo service mysql restart
。来确认它。
mysql -u <user> -p<passowrd>
使用并运行此命令登录到 mysqlSELECT * FROM performance_schema.global_variables WHERE VARIABLE_NAME IN ('log_bin');
希望这有帮助