如何关闭 MySQL 的 binlog(Binary Log)日志

打印 上一主题 下一主题

主题 1624|帖子 1624|积分 4872

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
如何关闭 MySQL 的 binlog(Binary Log)日志

1. 什么是 MySQL binlog?

MySQL 的 binlog(Binary Log,二进制日志) 是记载数据库更改的日志文件,重要用于:


  • 数据恢复:通过 mysqlbinlog 工具恢复数据。
  • 主从复制:主库通过 binlog 传输数据变更到从库。
  • 审计:记载数据库的写入操作。
但在某些情况下(如单机数据库、测试情况、磁盘空间有限时),可以关闭 binlog 以减少磁盘占用和 I/O 负担。

2. 查抄 binlog 是否开启

在 MySQL 终端或下令行中实行:
  1. SHOW VARIABLES LIKE 'log_bin';
复制代码
如果返回 ON,说明 binlog 已启用;如果返回 OFF,说明 binlog 已关闭。
查抄 binlog 文件:
  1. SHOW BINARY LOGS;
复制代码
如果 binlog 已开启,会列出日志文件。

3. 关闭 MySQL binlog 方法

留意:关闭 binlog 后,MySQL 将不再记载数据变更,主从复制会受到影响。
3.1 临时关闭 binlog(仅对当前会话生效)

  1. SET SQL_LOG_BIN=0;
复制代码
  ⚠️ 该方法仅对当前会话有效,MySQL 重启后 binlog 仍会生效。
  3.2 永久关闭 binlog(修改配置文件)

要永久关闭 binlog,需要修改 MySQL 配置文件 my.cnf(Linux/macOS)或 my.ini(Windows)。
步调 1:编辑 MySQL 配置文件



  • Linux/macOS:
    1. sudo nano /etc/my.cnf
    复制代码
  • Windows:
    找到 my.ini(通常在 C:\ProgramData\MySQL\MySQL Server X.Y\my.ini)。
步调 2:解释或删除 binlog 相关配置

找到 [mysqld] 部分,并解释或删除以下行:
  1. #log-bin=mysql-bin  # 注释或删除此行
  2. #server-id=1        # 如果是主从复制,需修改 server-id
复制代码
如果有 binlog_format,也可以删除或解释掉。
步调 3:重启 MySQL

修改完配置文件后,重启 MySQL 使其生效:
  1. sudo systemctl restart mysql  # Linux(使用 systemd)
  2. service mysql restart         # Linux(使用 SysVinit)
  3. net stop mysql && net start mysql  # Windows
复制代码
步调 4:验证 binlog 是否关闭

  1. SHOW VARIABLES LIKE 'log_bin';
复制代码
返回 OFF 说明已成功关闭。

4. 清算已有 binlog 文件(可选)

如果 binlog 关闭后仍旧占用大量磁盘空间,可以手动删除:
方法 1:手动清算 binlog

  1. RESET MASTER;
复制代码

  1. PURGE BINARY LOGS TO 'mysql-bin.000010';
复制代码
方法 2:删除 binlog 文件(需审慎)

如果 binlog 目录存储大量 .00000X 文件,可以手动删除:
  1. rm -rf /var/lib/mysql/mysql-bin.*
复制代码
⚠️ 留意:此操作不可逆,请审慎实行!

5. 结论



  • Binlog 重要用于数据恢复、审计和主从复制。
  • 在单机情况、测试情况或无主从需求时,可以关闭 binlog 以进步性能。
  • 关闭 binlog 需修改 MySQL 配置文件并重启 MySQL。
  • 关闭后可手动清算已有的 binlog 文件以开释磁盘空间。
盼望这篇文章能资助你更好地管理 MySQL binlog!
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

慢吞云雾缓吐愁

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表