Binlog 必知

MySQL的Binlog日志记录所有DDL和DML语句,用于数据恢复和主从复制。Binlog包括Statement、Row和Mixed三种模式,其中Row模式提供最详细的记录,Mixed模式结合两者优点。可通过配置参数如`max_binlog_size`和`expire_logs_days`管理Binlog大小和过期删除。检查Binlog状态和格式,理解其工作原理对于数据库管理和维护至关重要。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1,Binlog简介

MySQL 的 Binlog 日志是一种二进制格式的日志,Binlog 记录所有的 DDL 和 DML 语句(除了数据查询语句SELECT、SHOW等),以 Event 的形式记录,同时记录语句执行时间。

Binlog 的主要作用有两个:

  1. 数据恢复

因为 Binlog 详细记录了所有修改数据的 SQL,当某一时刻的数据误操作而导致出问题,或者数据库宕机数据丢失,那么可以根据 Binlog 来回放历史数据。

  1. 主从复制

想要做多机备份的业务,可以去监听当前写库的 Binlog 日志,同步写库的所有更改。

Binlog 包括两类文件:

  • 二进制日志索引文件(.index):记录所有的二进制文件。
  • 二进制日志文件(.00000*):记录所有 DDL 和 DML 语句事件。

Binlog 日志功能默认是开启的,线上情况下 Binlog 日志的增长速度是很快的,在 MySQL 的配置文件 my.cnf 中提供一些参数来对 Binlog 进行设置。

设置此参数表示启用binlog功能,并制定二进制日志的存储目录 
log-bin=/home/mysql/binlog/

#mysql-bin.*日志文件最大字节(单位:字节) 
#设置最大100MB 
max_binlog_size=104857600

#设置了只保留7BINLOG(单位:天) 
expire_logs_days = 7

#binlog日志只记录指定库的更新 
#binlog-do-db=db_name

#binlog日志不记录指定库的更新 
#binlog-ignore-db=db_name

#写缓冲多少次,刷一次磁盘,默认0 
sync_binlog=0

需要注意的是:

max_binlog_size :Binlog 最大和默认值是 1G,该设置并不能严格控制 Binlog 的大小,尤其是 Binlog 比较靠近最大值而又遇到一个比较大事务时,为了保证事务的完整性不可能做切换日志的动作,只能将该事务的所有 SQL 都记录进当前日志直到事务结束。所以真实文件有时候会大于 max_binlog_size 设定值。

expire_logs_days :Binlog 过期删除不是服务定时执行,是需要借助事件触发才执行,事件

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值