AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / dba / 问题 / 226269
Accepted
IGGt
IGGt
Asked: 2019-01-04 08:49:50 +0800 CST2019-01-04 08:49:50 +0800 CST 2019-01-04 08:49:50 +0800 CST

在 MySQL 8.0 中禁用二进制日志

  • 772

如何在 MySQL 8.0 上禁用二进制日志记录?

我需要导入一个大的 MySQLDump 文件,并且不想用许多 GB 的数据填充二进制日志。过去我会设置log_bin=0并my.cnf重新启动数据库。

但是对于 MySQL 8.0,我尝试了各种设置,但每次我登录数据库并运行:

SELECT @@global.log_bin;

它不断返回1

我努力了:

log_bin = 0
log_bin = OFF
#log_bin = 1

是否可以禁用二进制日志?

mysql log
  • 6 6 个回答
  • 11415 Views

6 个回答

  • Voted
  1. Old Scratch
    2019-11-15T11:55:10+08:002019-11-15T11:55:10+08:00

    除了指定相应的命令行参数外,您还可以添加一个选项my.cnf:

    1. 编辑my.cnf和添加部分skip-log-bin。[mysqld]

    2. 重新开始mysqld

    3. 享受你缺乏二进制日志

    请注意,这将一直有效,直到您从配置文件中删除该选项。

    • 10
  2. Jacob Nikom
    2019-10-23T11:31:45+08:002019-10-23T11:31:45+08:00

    使用设置环境命令:

    systemctl set-environment MYSQLD_OPTS="--skip-log-bin=1"
    

    接下来,使用以下命令重新加载配置文件并重新启动服务器:

    systemctl daemon-reload
    systemctl restart mysqld
    

    接下来检查 log_bin 全局变量的值:

    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)
    
    • 3
  3. Best Answer
    user171794
    2019-02-06T09:44:11+08:002019-02-06T09:44:11+08:00

    来自MySQL 8.0 参考手册,第 5.4.4 节:

    以下讨论描述了一些影响二进制日志记录操作的服务器选项和变量。有关完整列表,请参阅第 17.1.6.4 节,“二进制日志记录选项和变量”。

    默认情况下启用二进制日志记录(log_bin 系统变量设置为 ON)。例外情况是,如果您使用 mysqld 通过使用 --initialize 或 --initialize-insecure 选项手动初始化数据目录,则默认情况下禁用二进制日志记录,但可以通过指定 --log-bin 选项启用.

    要禁用二进制日志记录,您可以在启动时指定 --skip-log-bin 或 --disable-log-bin 选项。如果指定了这些选项中的任何一个并且还指定了 --log-bin,则后面指定的选项优先。

    • 2
  4. Jesse Nickles
    2021-02-02T12:11:59+08:002021-02-02T12:11:59+08:00

    周围有一些相互矛盾的信息。显然,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 让事情变得如此复杂,但回答这超出了我的薪酬等级,我敢于猜测,他们只是想尽可能地混淆我们;)

    • 2
  5. CodeMonkey
    2022-01-21T01:15:40+08:002022-01-21T01:15:40+08:00

    一些可能对 Windows 用户特别有帮助的附加信息。

    TLDR 摘要 -检查您是否拥有正确的配置文件,添加禁用/跳过选项之一,并注释掉/删除对设置 bin 日志文件名的任何引用。

    在我的情况下,服务条目指定了一个非标准默认文件

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

    我跑的时候没有出现在选项的迷雾中mysql.exe --help

    默认选项按给定顺序从以下文件中读取: C:\Windows\my.ini C:\Windows\my.cnf C:\my.ini C:\my.cnf C:\Program Files\MySQL\MySQL服务器 8.0\my.ini C:\Program Files\MySQL\MySQL 服务器 8.0\my.cnf

    我尝试了所有这些

    • 禁用日志箱
    • 跳过日志箱
    • disable_log_bin
    • skip_log_bin

    没有任何工作,我知道我正在重新启动正确的服务,因为如果我停止它,我将无法连接。原来我指定了一个文件名

    log-bin="hostname-bin"
    

    将其注释掉意味着像disable-log-bin现在这样的配置选项可以工作。

    • 1
  6. Ali Raza
    2022-07-22T04:03:31+08:002022-07-22T04:03:31+08:00

    打开文件并在 [mysqld] 之后/etc/mysql/mysql.conf.d/mysqld.cnf添加 1 行skip-log-bin = true

    IE。

    [mysqld]
    skip-log-bin = true 
    

    保存文件

    重新启动 mysql 服务sudo service mysql restart。

    来确认它。mysql -u <user> -p<passowrd>使用并运行此命令登录到 mysqlSELECT * FROM performance_schema.global_variables WHERE VARIABLE_NAME IN ('log_bin');

    +---------------+----------------+
    | VARIABLE_NAME | VARIABLE_VALUE |
    +---------------+----------------+
    | log_bin       | OFF            |
    +---------------+----------------+
    

    希望这有帮助

    • -1

相关问题

  • 是否有任何 MySQL 基准测试工具?[关闭]

  • 我在哪里可以找到mysql慢日志?

  • 如何优化大型数据库的 mysqldump?

  • 什么时候是使用 MariaDB 而不是 MySQL 的合适时机,为什么?

  • 组如何跟踪数据库架构更改?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目

    • 12 个回答
  • Marko Smith

    如何让sqlplus的输出出现在一行中?

    • 3 个回答
  • Marko Smith

    选择具有最大日期或最晚日期的日期

    • 3 个回答
  • Marko Smith

    如何列出 PostgreSQL 中的所有模式?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Jin 连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane 如何列出 PostgreSQL 中的所有模式? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve