MySQL 学习(八)如何打开binlog日志
目录
- 一、默认状态
- 二、如何检查 binlog 状态
- 三、如何开启 binlog
- 3.1 临时开启(重启后失效)
- 3.2 永久开启(需修改配置文件)
- 3.3 验证是否开启成功
- 3.4 查看 binlog 内容
- 四、高级配置建议
- 五、注意事项
- 六、开启后的日常维护

知识回顾:
binlog
是一个二进制格式的文件,记录了对 MySQL 数据库执行更改的所有 写操作,例如更改数据库表和更改内容的 SQL 语句都会记录到 binlog 里,但是不会记录 SELECT
和 SHOW
这类操作。
一、默认状态
在MySQL 5.7及以上版本中,binlog默认是关闭的,而在MySQL 8.0版本中,binlog默认是开启的。具体表现如下:
MySQL 5.7及以下版本:
- 默认关闭:安装后需要手动配置开启
- 原因:早期版本认为不是所有环境都需要二进制日志功能
MySQL 8.0版本:
- 默认开启:安装后自动启用binlog
- 原因:
- 增强的数据安全考虑
- 为Group Replication等新功能提供基础支持
- 符合现代数据库的运维需求
补充:为什么版本间存在差异?
MySQL 8.0 改为默认开启 binlog 主要基于以下考虑:
- 数据安全:即使没有配置主从复制,binlog也能用于时间点恢复。
- 新功能依赖:Group Replication、InnoDB Cluster 等都需要 binlog。
- 现代硬件性能:现代服务器通常有能力承担 binlog 的额外开销。
二、如何检查 binlog 状态
您可以通过以下命令查看当前 binlog 是否启用:
SHOW VARIABLES LIKE '%log_bin%';
三、如何开启 binlog
3.1 临时开启(重启后失效)
如果只是临时测试,可以通过 MySQL 命令行开启(无需重启服务):
SET GLOBAL log_bin = ON;
SET GLOBAL binlog_format = 'ROW'; -- 推荐使用ROW格式
SET GLOBAL sync_binlog = 1; -- 每次事务提交都刷盘
3.2 永久开启(需修改配置文件)
1)找到 MySQL 配置文件
- Linux:
/etc/my.cnf
或/etc/msql/my.cnf
- Windows:
my.ini
(通常在 MySQL 安装目录)
2)添加以下配置(在 [mysqld] 段)
[mysqld]
# 基础配置
# 启用binlog并设置文件名前缀
# 注意1:确保目录存在,否则会启动失败
# 注意2:指定目录需要用反斜杠/或双反斜杠\\
log_bin = D:/java/mysql-5.7.33-winx64/binlog/mysql-bin
# 服务器唯一标识(主从复制必需),默认值0
server_id=1
# 推荐使用ROW格式
binlog_format = ROW
# 自动清理7天前的日志
expire_logs_days = 7# 增强持久性配置
# 每次事务提交都刷盘(最安全但性能略有影响)
sync_binlog = 1
# 记录完整的行数据
binlog_row_image = FULL
-
log_bin = mysql-bin
- 作用:启用二进制日志(binlog)并设置文件名前缀
- 默认值:
- MySQL 5.7及以下:
OFF
(默认关闭) - MySQL 8.0+:
ON
(默认开启,前缀为binlog
)
- MySQL 5.7及以下:
- 说明:
- 启用后生成文件如
mysql-bin.000001
、mysql-bin.000002
- 生产环境必须开启(主从复制/数据恢复依赖)
- 启用后生成文件如
-
server_id=1
- 作用:服务器唯一标识(主从复制必需)
- 默认值:
0
(未设置,主从复制会失败) - 说明:
- 主从环境中每个实例必须配置唯一ID
- 单机可设为1,集群中需分配不同值(如1,2,3…)
-
binlog_format = ROW
- 作用:指定binlog记录格式
- 默认值:
- MySQL 5.7+:
ROW
- 更早版本:
STATEMENT
- MySQL 5.7+:
- 可选值:
ROW
:记录行数据变更(推荐,最安全)STATEMENT
:记录原始SQL(有主从不一致风险)MIXED
:混合模式
-
expire_logs_days = 7
- 作用:自动清理N天前的binlog
- 默认值:
0
(不自动清理) - 说明:
- 与
binlog_expire_logs_seconds
冲突(8.0+优先用后者) - 生产环境建议设置(避免磁盘占满)
- 与
-
sync_binlog = 1
-
作用:控制binlog刷盘频率
-
默认值:
0
(由系统决定刷盘时机) -
可选值:
0
:依赖系统缓存,性能高但可能丢失事务1
:每次事务提交都刷盘(最安全,性能略低)N
:每N次事务提交刷盘(平衡安全性与性能)
-
-
binlog_row_image = FULL
-
作用:ROW格式下记录的行数据内容
-
默认值:
FULL
(MySQL 5.6+) -
可选值:
FULL
:记录修改前后的完整行数据(推荐)MINIMAL
:仅记录被修改的列+主键NOBLOB
:排除未修改的BLOB/TEXT列
-
3)重启 MySQL 服务
# Linux系统
sudo systemctl restart mysqld# Windows
通过服务管理器重启MySQL服务
3.3 验证是否开启成功
- 方式一:重启后查看指定目录下是否存在binlog
- 方式二:通过命令查看
-- 检查binlog状态
SHOW VARIABLES LIKE '%log_bin%';-- 查看当前binlog文件
SHOW BINARY LOGS;-- 查看binlog格式
SHOW VARIABLES LIKE 'binlog_format';
3.4 查看 binlog 内容
由于 binlog 是一个二进制文件,直接查看是无法阅读的:
我们可以使用 mysqlbinlog
工具(MySQL自带)来进行解析之后查看:
mysqlbinlog mysql-bin.000001 > binlog-0000001.sql
查看解析之后的内容如下:
四、高级配置建议
1)为 binlog 单独分配目录(避免占满系统盘)
log_bin = /var/lib/mysql-binlogs/mysql-bin
2)调整 binlog 大小(默认为1G)
max_binlog_size = 100M # 根据业务调整
3)启用 binlog 加密(MySQL 8.0+)
binlog_encryption = ON
五、注意事项
- 权限要求:操作需要 MySQL 管理员权限。
- 磁盘空间:开启后会增加磁盘写入量,确保有足够空间。
- 性能影响:
sync_binlog=1
会降低写入性能,但保证数据安全。 - 版本差异:
- MySQL 5.7需手动开启
- MySQL 8.0默认已开启,只需确认配置
六、开启后的日常维护
-- 定期清理旧binlog(也可设置expire_logs_days自动清理)
PURGE BINARY LOGS BEFORE '2023-01-01 00:00:00';-- 查看binlog占用空间
SHOW BINARY LOG STATUS;
开启 binlog 后,将获得:
- 数据恢复能力
- 主从复制基础
- 操作审计能力
建议所有生产环境都启用 binlog 功能。
整理完毕,完结撒花~ 🌻
相关文章:

MySQL 学习(八)如何打开binlog日志
目录 一、默认状态二、如何检查 binlog 状态三、如何开启 binlog3.1 临时开启(重启后失效)3.2 永久开启(需修改配置文件)3.3 验证是否开启成功3.4 查看 binlog 内容 四、高级配置建议五、注意事项六、开启后的日常维护 知识回顾&a…...
《数据库原理》部分习题解析
《数据库原理》部分习题解析 1. 课本pg196.第1题。 (1)函数依赖 若对关系模式 R(U) 的任何可能的关系 r,对于任意两个元组 t₁ 和 t₂,若 t₁[X] t₂[X],则必须有 t₁[Y] t₂[Y],则称属性集 Y 函数依赖…...

OpenCV进阶操作:光流估计
文章目录 前言一、光流估计1、光流估计是什么?2、光流估计的前提?1)亮度恒定2)小运动3)空间一致 3、OpenCV中的经典光流算法1)Lucas-Kanade方法(稀疏光流)2) Farneback方…...
uniapp+vue3开发项目之引入vuex状态管理工具
前言: 我们在vue2的时候常用的状态管理工具就是vuex,vue3开发以后,又多了一个pinia的选项,相对更轻便,但是vuex也用的非常多的,这里简单说下在uni-app中vuex的使用。 实现步骤: 1、安装&#x…...
SparkSQL 连接 MySQL 并添加新数据:实战指南
SparkSQL 连接 MySQL 并添加新数据:实战指南 在大数据处理中,SparkSQL 作为 Apache Spark 的重要组件,能够方便地与外部数据源进行交互。MySQL 作为广泛使用的关系型数据库,与 SparkSQL 的结合可以充分发挥两者的优势。本文将详细…...
面试题:请解释Java中的设计模式,并举例说明单例模式(Singleton Pattern)的实现方式
Java中的设计模式 设计模式是在软件开发过程中针对特定场景而使用的通用解决方案。设计模式可以帮助开发者编写出更加清晰、灵活和可维护的代码。设计模式分为三大类: 创建型模式:用于对象的创建过程,如单例模式、工厂模式、建造者模式等。…...

4. 文字效果/2D-3D转换 - 3D翻转卡片
4. 文字效果/2D-3D转换 - 3D翻转卡片 案例:3D产品展示卡片 <!DOCTYPE html> <html><head><meta charset"utf-8"><title></title></head><style type"text/css">.scene {width: 300px;height…...
嵌入式学习笔记 - 关于单片机的位数
通常我们经常说一个单片机是8位的,16位的,32位的,那么怎么判断一款单片机的位数是多少位呢,判断的依据是什么呢, 一 单片机的位数 单片机的位数是指单片机数据总线的宽度,也就是一次能处理的数据的位数&a…...

【AI News | 20250513】每日AI进展
AI Repos 1、iap-diffusion-labs 从零开始带我们构建完整的扩散模型。通过三个精心设计的实验练习,循序渐进地引导我们实现流匹配和扩散模型,从基础 SDE 到条件图像生成,每一步都有详尽指导和完整代码,让复杂理论简单易懂。主要内…...

mybatisplus 集成逻辑删除
一开始,没去查资料,后面要被AI气死了,先看它的的话 一开始,看ai的描述,我还以为,不需要改数据库,mybatis-puls自动拦截集成就可以实现逻辑删除,c,最后还是要给数据库加一…...
typedef unsigned short uint16_t; typedef unsigned int uint32_t;
你提到的这两行是 C/C 中的类型别名定义: typedef unsigned short uint16_t; typedef unsigned int uint32_t;它们的目的是让代码更具可读性和可移植性,尤其在处理精确位数的整数时非常有用。 ✅ 含义解释 typedef unsigned short uint16_t;…...

SimScape物理建模实例2--带控制的单质量弹簧阻尼系统
模型下载: 基于simscape,单质量系统带位置控制资源-CSDN文库 在实例1中,我们搭建了不带控制的单质量弹簧阻尼系统,该系统没有外界力量介入,只有弹簧的初始弹力,带着弹簧使劲弹来弹去。 SimScape物理建模实…...

PyGame游戏开发(含源码+演示视频+开结题报告+设计文档)
前言: 大二小学期python课上基于pygame做的一个游戏小demo,当时老师花了一天讲解了下python基础语法后(也是整个大学四年唯一学习python的时间),便让我们自学网课一周然后交项目,所以做的非常仓促ÿ…...

拒绝flash插件打劫!如何在vscode上玩4399小游戏
现在电脑上玩4399都需要flash插件了 这也导致了很多人无法玩到小时候的游戏 今天介绍一款插件 功能强大 即安即玩 首先打开vscode 点开小方框(拓展)搜索4399 认准4399 on vscode点击安装 安装完毕后 按下 Ctrl Shift P , 输入 4399 on VSCode 或…...
五大静态博客框架对比:Hugo、Hexo、VuePress、MkDocs、Jekyll
目录 1. Hugo概述优点缺点适用场景使用体验 2. Hexo概述优点缺点适用场景使用体验 3. VuePress概述优点缺点适用场景使用体验 4. MkDocs概述优点缺点适用场景使用体验 5. Jekyll概述优点缺点适用场景使用体验 框架对比总结如何选择?结语 静态博客框架通过将内容&…...

learning ray之ray核心设计和架构
我们每天都在处理海量、多样且高速生成的数据,这对计算能力提出了前所未有的挑战。传统的单机计算模式在面对日益复杂的机器学习模型和大规模数据集时,往往显得力不从心。更重要的是,数据科学家们本应专注于模型训练、特征工程、超参数调优这…...

C语言while循环的用法(非常详细,附带实例)
while 是 C 语言中的一种循环控制结构,用于在特定条件为真时重复执行一段代码。 while 循环的语法如下: while (条件表达式) { // 循环体:条件为真时执行的代码 } 条件表达式:返回真(非 0)或假&#x…...

JavaScript进阶(九)
第三部分:JavaScript进阶 目录 第三部分:JavaScript进阶 一、作用域 1.1 局部作用域 1. 作用域 2. 局部作用域 函数作用域 块作用域 1.2 全局作用域 1.3 作用域链 1.4 JS垃圾回收机制 1. 什么是垃圾回收机制 2. 内存的声明周期 3. 垃圾回收的算法说明 引用计数…...

数据结构与算法分析实验11 实现顺序查找表
实现顺序查找表 1.上机名称2.上机要求3.上机环境4.程序清单(写明运行结果及结果分析)4.1 程序清单4.1.1 头文件4.1.2 实现文件4.1.3 源文件 4.2 实现展效果示 上机体会 1.上机名称 实现顺序查找表 顺序查找表的基本概念 顺序查找表是一种线性数据结构,通常用于存储…...

获取高德地图JS API的安全密钥和Key的方法
要使用高德地图JavaScript API,您需要获取API Key和安全密钥(securityJsCode)。以下是获取步骤: 1. 注册高德开放平台账号 首先访问高德开放平台,如果没有账号需要先注册。 2. 创建应用获取Key 登录后进入"控制台" 点击"应…...
Excel表的导入与导出
Excel表的导入与导出 根据excel表来建立所需的数据库表格 <dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>4.0.3</version></dependency>导入easyexcel依赖项 阿里巴巴的 EasyExcel …...

JAVA研发+前后端分离,ZKmall开源商城B2C商城如何保障系统性能?
在电商行业竞争白热化的当下,B2C 商城系统的性能表现成为决定用户留存与商业成败的关键因素。ZKmall 开源商城凭借 Java 研发与前后端分离架构的深度融合,构建起一套高效、稳定且具备强大扩展性的系统架构,从底层技术到上层应用全方位保障性能…...

嵌入式自学第二十天(5.13)
(1)线性表顺序存储的优缺点: 优点:无需为表中逻辑关系添加额外存储空间; 可以快速随机访问元素,时间复杂度O(1)。 缺点:插入删除需要移动元素O(n); 无法动态存储。 …...
Java 中的序列化与反序列化安全的理解?如何防止反序列化漏洞
序列化:将对象转换为字节流(通常用于网络传输、磁盘存储等)。 反序列化:将字节流还原为对象 常见攻击方式 利用类中重写的 readObject() / readResolve() / 构造方法执行任意代码 依赖漏洞类(如 CommonsCollections…...

快速上手Linux nfs网络文件系统
一、nfs服务的安装与部属 1.安装软件 设置火墙 测试:在客户端上安装nfs-utils后 showmount 服务端IP 2.共享资源 测试: 参数(参数写在共享策略文件的括号里) 二、nfs客户端动态挂载机制 当客户端和服务器之间没有数据交互时&am…...
Ubuntu 18.04.6下OpenSSL与OpenSSH版本升级
文章目录 升级背景下载必要软件包安装 zlib创建目录解压文件安装前置依赖离线安装依赖编译安装 zlib 安装 OpenSSL检查当前版本创建安装目录下载并解压 OpenSSL配置与安装验证安装解决动态库依赖问题永久更新环境变量安装OpenSSL常见错误 离线安装 Telnet 服务端指南1. 在联网机…...
kafka----初步安装与配置
目录标题 ⭐kafka 与 zookeeper间的关系一.集群部署二.修改配置文件三.分发安装包四.启动与关闭 kafka 与 zookeeper 相同,是以集群的形式使用 ⭐kafka 与 zookeeper间的关系 kafka 的使用 要在 zookeeper 集群配置好的基础上 使用要想启动kafka 要先启动 zookeep…...

26考研——中央处理器_异常和中断机制(5)
408答疑 文章目录 五、异常和中断机制异常和中断的基本概念异常和中断的分类异常的分类故障 (Fault)自陷 (Trap)终止 (Abort) 中断的分类可屏蔽中断不可屏蔽中断 异常和中断响应过程关中断保存断点和程序状态识别异常和中断并转到相应的处理程序 八、参考资料鲍鱼科技课件26王道…...

数据库实验报告 SQL SERVER 2008的基本操作 1
实验报告(第 1 次) 实验名称 SQL SERVER 2008的基本操作 实验时间 9月14日1-2节 一、实验内容 数据库的基本操作:包括创建、修改、附加、分离和删除数据库等。 二、源程序及主要算法说明 本次实验不涉及程序和算法。 三、测…...

Nature图形复现—两种快速绘制热图的方法
相信大家在科研过程中,会遇到热图,有时候会觉得热图理解起来比较困难,或者觉得绘制热图也比较困难。本期教程我们来深入了解热图、绘制热图。 热图是一种通过颜色深浅或色阶变化来直观展示数据分布、密度或数值大小的可视化工具。它在多个领域…...