mysql binlog 浅谈

《童虎学习笔记》10分钟看懂mysql bin log日志 1 阅读详情

如何开启MySQL的binlog日志

在MySQL中,binlog指的是binary log,二进制日志文件。这个文件记录了MySQL所有的DML操作。通过binlog日志,我们可以做数据恢复,做主从复制等等。对于运维或架构人员来说,开启binlog日志功能非常重要。

那么,如何开启MySQL的binlog日志呢?下面将介绍两种方法。

方法一:在my.cnf主配置文件中添加参数

在my.cnf主配置文件中,找到[mysqld]模块,然后添加以下三行参数。

```
log_bin=ON
log_bin_basename=/var/lib/mysql/mysql-bin
log_bin_index=/var/lib/mysql/mysql-bin.index
```

参数解释:

- log_bin:开启binlog日志文件,默认值为OFF。
- log_bin_basename:binlog日志的基本文件名。MySQL会在该文件名后追加标识来表示每一个binlog文件。
- log_bin_index:binlog文件的索引文件,管理所有的binlog文件。

方法二:使用log-bin参数

如果你使用的是MySQL 5.7及以上版本,使用log-bin参数更加方便。在my.cnf配置文件中,找到[mysqld]模块,添加以下一行参数即可。

```
log-bin=/var/lib/mysql/mysql-bin
```

这个参数的作用和上面三个参数的作用是相同的。MySQL会根据这个配置自动开启binlog日志,自动设置log_bin_index文件为你指定的文件名后跟.index。参数log-bin指定了binlog文件的基本文件名。

需要注意的是,如果你使用MySQL 5.7及以上版本,必须添加一个额外的参数server-id=123454(随机指定一个不能重名的字符串),否则重启MySQL服务会报错。

然后,重启MySQL服务即可。

- 在CentOS 6上,使用以下命令重启MySQL服务:

```
service mysqld restart
```

- 在CentOS 7上,使用以下命令重启MySQL服务:

```
systemctl restart mysqld
```

验证是否开启binlog日志

开启binlog日志之后,我们可以登录MySQL终端,执行以下命令,查看是否成功开启binlog日志:

```
show variables like '%log_bin%';
```

如果开启成功,你应该看到类似以下结果:

```
+---------------------------------+----------------------------------------+
| Variable_name | Value |
+---------------------------------+----------------------------------------+
| log_bin | ON |
| log_bin_basename | /var/lib/mysql/mysql-bin |
| log_bin_index | /var/lib/mysql/mysql-bin.index |
+---------------------------------+----------------------------------------+
```

同时,在/var/lib/mysql目录下,你可以看到多个mysql-bin的文件,还有一个mysql-bin.index的文件,这表明binlog日志已经成功启用。

以上就是如何开启MySQL的binlog日志的方法。对于运维或架构人员来说,开启binlog日志功能非常重要。你可以随时访问这些文件来查看有哪些操作被执行了。希望这篇文章对你有所帮助!

二进制日志(binnary log)以事件形式记录了对MySQL数据库执行更改的所有操作。

binlog是记录所有数据库表结构变更(例如CREATE、ALTER TABLE…)以及表数据修改(INSERT、UPDATE、DELETE…)的二进制日志。不会记录SELECT和SHOW这类操作,因为这类操作对数据本身并没有修改,但可以通过查询通用日志来查看MySQL执行过的所有语句。

需要注意的一点是,即便update操作没有造成数据变化,也是会记入binlog。

binlog有两个常用的使用场景:

  • 主从复制:mysql replication在master端开启binlog,master把它的二进制日志传递给slaves来达到master-slave数据一致的目的。

  • 数据恢复:通过mysqlbinlog工具来恢复数据。

2、关键参数

binLog默认是关闭的,可以通过参数log_bin控制:

mysql> show variables like 'log_bin'\G;
*************************** 1. row
Variable_name: log_bin
Value: OFF

参数max_binlog_size指定了单个二进制日志文件的最大值:

mysql> show variables like 'max_binlog_size'\G;
1. row
: max_binlog_size
Value: 1073741824

默认为1G,如果超过该值,会写入新的文件,并记录到.index文件。

InnoDB会将所有未提交的binLog写到一个缓存中,等事务提交后再将缓存刷新到文件。缓存大小有参数binlog_cache_size控制。

mysql> show variables like 'binlog_cache_size'\G;
1. row
: binlog_cache_size
Value: 32768

需要注意的是,该值是基于session的,每个事务都会分配一个大小为binlog_cache_size的缓存。当一个事务的记录大于该值,MySQL会把缓冲中的日志写入一个临时文件。因此,需要根据使用场景合理设置这个参数,过大或者过小都会影响性能。

参数sync_binlog表示每写缓冲多少次就同步到磁盘:

mysql> show variables like 'sync_binlog'\G;
1. row
: sync_binlog
Value: 1

  • N=1:表示采用同步写磁盘的方式来写二进制日志,这时写操作不使用操作系统的缓冲来写二进制日志,每次事务提交都会写入文件。

  • N=0:表示MySQL不控制binlog的刷新,由文件系统自己控制它的缓存的刷新。这时候的性能是最好的,但是风险也是最大的。因为一旦系统Crash,在binlog_cache中的所有binlog信息都会被丢失。

但是,即使将sync_binlog设为1,还是会有一种情况会导致问题的发生。当使用InnoDB存储引擎时,在一个事务发出COMMIT动作之前,由于sync_binlog设为1,因此会将二进制日志立即写入磁盘。如果这时已经写入了二进制日志,但是提交还没有发生,并且此时发生了宕机,那么在MySQL数据库下次启动时,因为COMMIT操作并没有发生,所以这个事务会被回滚掉。但是二进制日志已经记录了该事务信息,不能被回滚。这个问题可以通过将参数innodb_support_xa设为1来解决,虽然innodb_support_xa与XA事务有关,但它同时也确保了二进制日志和InnoDB存储引擎数据文件的同步。

binlog_format是一个非常重要的参数,决定了记录二进制日志的格式:

mysql> show variables like 'binlog_format'\G;
1. row
: binlog_format
Value: ROW

可选值有:

  • STATEMENT

    记录SQL语句。日志文件小,节约IO,但是对一些系统函数不能准确复制或不能复制,如now()、uuid()等

  • ROW

    记录表的行更改情况,可以为数据库的恢复、复制带来更好的可靠性,但是二进制文件的大小相较于STATEMENT会有所增加

  • MIXED

    STATEMENT和ROW模式的混合。默认采用STATEMENT格式进行二进制日志文件的记录,但是在一些情况下会使用ROW格式。

业内目前推荐使用的是ROW模式,准确性高,虽然说文件大,但是现在有SSD和万兆光纤网络,这些磁盘IO和网络IO都是可以接受的。

听听京东架构师浅谈,MySQL binlog 主从同步 1,binlog 的概念Server 层的日志系统(归档日志),binlog 中跟踪对其数据库的所有更改操作。是逻辑日志,以追加日志的形式记录。2,binLog 的三种格式1)statement记录 SQL 语句的原文。风险点:如果主/从用到的索引不同,操作语句带 limit 时,处理的可能是不同行的记录数据。2)row仅记录某条记录的数据修改细节,不关系上下文。缺点:占用空间,同时写 binlog 很耗费 I/O 资源,影响执行速度。3)mixed一般语句使用 statement 格式保存,如果使用了一些 阅读详情

相关推荐

【gateway nc adapter虚拟网卡 win11 联想】问题的解决

由于需要登录公司内网,于是启用奇安信VPN。但启动后报出网关未连接的问题,于是我检查了我的网络适配器,并尝试解决,以下给出几种我实践过程中的行动,并附带最后成功的解决方法。

m0_73602417的博客 6553

Mysql的binlog知识整理详解

引言 作为一个java开发,虽然不必像DBA那样整天和binlog打交道,但是不可避免在工作中经常会听到binlog。以前我只知道binlog是保存了mysql的数据操作命令,用户数据恢复。现在很多架构类似与点评的puma,会使用binlog配合kafka进行数据同步。那么这个binlog到底是什么样的文件,如何起到数据恢复和同步的作用呢?本次进行总结。 binlog介绍 定义 定义一:binl...

iverson2010112228的专栏 2080

LSTM模型股价波动率预测(含Python代码)

源代码文件可在gzh’finance褪黑素'回复【24012203】获取。

celiaweiwei的博客 3776

mysql中log_bin_index_"log_bin.indexnotfound"启动报错解决_MySQL

my.cnf 中设置了:log-bin=log_binlog-bin-index=log_bin.index但是启动后,总是报告如下错误:mysqld: File './log_bin.index' not found (Errcode: 13)070428 14:35:59 [ERROR] Aborting070428 14:35:59 [Note] mysqld: Shutdown compl...

weixin_39720865的博客 1737

[Ethernet in CANoe]3--CANoe工程中SOME/IP报文的详细介绍(一)

和上述第一章节的介绍,我们对SOEMIP通信协议有了初步了解,首先我们先暂停Trace窗口,可以看到整个Trace窗口关于SOMEIP的报文有两种颜色,一种是紫色,另一种是绿色。它使用多播地址,允许服务提供者发布其服务,服务消费者订阅这些服务。上述每点开一个SOMEIP报文,左侧的details就能看到该报文中的具体细节,从IP地址到port口,再到具体的serviceID,都能详细的解析。一旦通过服务发现完成了服务的发布和订阅,服务消费者就可以向服务提供者发送请求,或者服务提供者向消费者发送事件通知。

汽车ECU自动化测试 1411

C#连接数据库报Authentication to host ‘127.0.0.1‘ for user ‘root‘ using method ‘caching_sha2_password‘ fail

所以导致的,除了上边的办法,还可以把这个加密规则修改一下,这个的修改方式有很多,具体原因是因为MySQL8.0以前的加密规则是。

weixin_42209881的博客 4128

mysql binlog详解

   mysql binlog也是我们所说的二进制日志,它是用于记录mysql数据库的执行更改的所有操作,那些对数据库没有作出修改的sql,是不会被其记录下来,比如说select,show等  二进制日志主要有两个作用: 1、主从复制 2、数据恢复   1、开启二进制日志 修改log_bin参数  并且该参数只能在my.cnf里面修改之后重启数据库才生效 log_bin=mysql...

azhou46的博客 643

用scons编译STM32F103工程

想用vscode来实现代码的编辑与调试代码,原先这个工程是用STM32CUBEIDE建立的,参照STM32CUBEIDE的编译过程,编写了下面的scons脚本,scons是初次了解,既然是python脚本,那么会什么就怎么写吧。 import os import sys import glob cross_compiler_prefix = 'arm-none-eabi-' CC = cross_compiler_prefix+'gcc' CXX = cross_compiler_prefix+'g+

cylinc的专栏 1623

一、binlog的简介

1、日志类型: Error Log、General Query Log、Binary Log、Slow Query Log。分别是错误日志、一般查询日志、二进制日志、慢查询日志。 错误日志:记录错误日志信息; 一般查询日志:记录前端查询语句,SQL Statement; 二进制日志:记录了数据库的改动,比如新建表、数据记录变更等。两个非常重要的功能:复制、恢复。 慢查询日志:记录了慢SQL Sta...

2222

YOLO26涨点改进 | 独家创新、损失函数改进篇 | TGRS 2025顶刊 | 带来AIoU小目标涨点损失函数,增强了目标检测中对边界框形状和尺寸的敏感度,适合复杂场景和小物体检测中有效涨点

AIoU损失函数通过自适应形状感知和尺寸敏感加权机制,有效解决了YOLO26原生损失函数在小目标检测中的缺陷。实验结果表明,AIoU损失函数在多个数据集上均取得了显著的性能提升,尤其在小目标检测和多任务场景下表现突出。自适应形状感知,对形状差异较大的目标给予更大惩罚,提高边界框拟合精度尺寸敏感加权,对小目标的宽高比例差异给予更大权重,增强模型对小目标特征的学习能力梯度连续性好,即使在IoU=0时仍能提供有效的梯度更新,解决小目标梯度消失问题。

qq_36130719的博客 159

手把手教你学 NPU 驱动开发--第一部分:基础准备 开发环境搭建:Linux 内核编译与 NPU 仿真平台配置

摘要:本文详细介绍了搭建Linux内核编译与NPU仿真平台的完整流程。主要内容包括:1) 准备ARM64交叉编译工具链;2) 编译支持KGDB调试的Linux内核;3) 构建最小根文件系统;4) 使用QEMU模拟自定义NPU设备;5) 配置KGDB调试环境。文章重点讲解了如何通过修改设备树添加虚拟NPU设备,并提供了开源NPUIP Gemmini作为实验对象。最后展示了简单的"Hello NPU"驱动验证方法,为后续NPU驱动开发奠定了基础。文中还附有常用命令速查表,方便开发者快速搭建调

MHD0815的博客 384

浅谈MySQL Binlog

1 什么是binlog? binlog是二进制日志文件,用于记录mysql的数据更新或者潜在更新状况,在mysql主从复制中就是依靠的binlog。可以通过语句“show binlog events in ‘binlogfile’”来查看binlog的具体事件类型。binlog记录的所有操作实际上都有对应的事件类型的,MySQL binlog的三种工作模式: Row level(行记录) 简介: 日志中会记录每一行数据被修改的情况,然后在slave端对相同的数据进行修改。 优点: 所有更改都可以复

做兴趣使然的Hero 588

Openclaw接入大模型API,操作本地windows文件

本文介绍了在WSL2环境下配置OpenClaw使用阿里百炼API的方法。主要内容包括:1)确认WSL2安装完成;2)配置阿里百炼API(需注意Qwen3-Max-Thinking为收费模型);3)提供正确的JSON配置格式示例,强调apiKey必须填写真实值;4)说明配置错误需修改Linux配置文件;5)建议通过询问模型信息验证连接成功。后续将介绍如何切换免费API及本地文件访问功能。

qq_27246521的博客 989

浅谈使用Binlog实现MySQL增量备份

在写文章的时候,我一直在纠结,这个到底能不能算增量备份,因为使用binlog的这种方式,按照官方文档的说话,应该叫做 point-in-time ,而非正经的增量模式,但是也聊胜于无。首...

麒思妙想 573

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

mysql binlog 性能_听听京东架构师浅谈,MySQL binlog 主从同步

一、binlog 的基础知识1,binlog 的概念Server 层的日志系统(归档日志),binlog 中跟踪对其数据库的所有更改操作。是逻辑日志,以追加日志的形式记录。2,binLog 的三种格式Java架构Q社区:7817255211)statement记录 SQL 语句的原文。风险点:如果主/从用到的索引不同,操作语句带 limit 时,处理的可能是不同行的记录数据。2)row仅记录某条记...

weixin_42510600的博客 435

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

mysql binlog event_mysql原理~binlog系列之~event浅谈

一 将具体分析binlog中的常用event二 Row格式事件核心ROW_LOG_EVENT+TABLE_MAP_EVENT+GTID_EVENT三 event生效机制在binlog cache中生效,然后刷新纪录写入binlog中四 具体event 内容0 FORMAT_DESCRIPTION_EVENT1 PREVIOUS_GTIDS_LOG_EVENT2 GTID_LOG_EVENT3 ...

weixin_32703763的博客 420

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

mysql sync_binlog 作用_听听京东架构师浅谈,MySQL binlog 主从同步

一、binlog 的基础知识1,binlog 的概念Server 层的日志系统(归档日志),binlog 中跟踪对其数据库的所有更改操作。是逻辑日志,以追加日志的形式记录。2,binLog 的三种格式1)statement记录 SQL 语句的原文。风险点:如果主/从用到的索引不同,操作语句带 limit 时,处理的可能是不同行的记录数据。2)row仅记录某条记录的数据修改细节,不关系上下文。缺点:...

weixin_39965075的博客 331

MySQL 写日志 redo_浅谈mysql日志:binlog和redolog

1、redo log又叫重做日志,是innodb存储引擎层的日志,属于物理日志。采用循环写入方法,用来记录修改之后的值,不管事务是否提交,都会把事务操作的变化记录下来。如果每次更新都需要一次次写入磁盘成本很高,所以采用先写日志再写磁盘。日志大小是固定的,采用循环写入的方法。2、binlog又叫归档日志,是mysql server层的日志,属于逻辑日志。是以二进制形式进行记录,采用追加写入的方法,用...

weixin_35027170的博客 204

mysql主主同步使用场景_听听京东架构师浅谈,MySQL binlog 主从同步

原标题:听听京东架构师浅谈,MySQL binlog 主从同步 一、binlog 的基础知识1,binlog 的概念Server 层的日志系统(归档日志),binlog 中跟踪对其数据库的所有更改操作。是逻辑日志,以追加日志的形式记录。2,binLog 的三种格式1)statement记录 SQL 语句的原文。风险点:如果主/从用到的索引不同,操作语句带 limit 时,处理的可能是不同行的记录数...

weixin_39636718的博客 255

spring 主从表_听听京东架构师浅谈,MySQL binlog 主从同步

一、binlog 的基础知识1,binlog 的概念Server 层的日志系统(归档日志),binlog 中跟踪对其数据库的所有更改操作。是逻辑日志,以追加日志的形式记录。2,binLog 的三种格式1)statement记录 SQL 语句的原文。风险点:如果主/从用到的索引不同,操作语句带 limit 时,处理的可能是不同行的记录数据。2)row仅记录某条记录的数据修改细节,不关系上下文。缺点:...

weixin_39564527的博客 114

MySQL关于binlog简介

binlog是mysql server层维护的一种二进制日志,其记录了对mysql的更新操作信息,并以事件的形式保存在磁盘中mysqlbinlog是mysql提供的专门处理binlog文件的工具,利用它可以查看binlog,通过指定条件进行恢复等操作。

pyf2533931995的博客 1537

【MySQL】MySQL之Binlog

Binlog格式介绍 MySQL binlog日志有三种格式,分别为: Statement MiXED ROW 查看数据库使用的是什么模式: mysql> show variables like 'binlog_format'; +---------------+-------+ | Variable_name | Value | +---------------+-------+ | binlog_format | ROW | +---------------+-------+ 1 row

morris 1万+

使用binlog2mysql回滚mysql的binlog数据

通过binlog日志回滚mysql数据

qq_41373372的博客 1176
上一篇: dockerfile 例子
下一篇: dockerfile 例子(二)
ajax_beijing_java
博客等级 码龄13年 605粉丝 264原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值