mysql binlog文件格式详解

binlog格式分为statement,row以及mixed三种,mysql5.5默认的还是statement模式,当然我们在主从同步中一般是不建议用statement模式的,因为会有些语句不支持,比如语句中包含UUID函数,以及LOAD DATA IN FILE语句等,一般推荐的是mixed格式。暂且不管这三种格式的区别,看看binlog的存储格式是什么样的。binlog是一个二进制文件集合,当然除了我们看到的mysql-bin.xxxxxx这些binlog文件外,还有个binlog索引文件mysql-bin.index。如官方文档中所写,binlog格式如下:

  • binlog文件以一个值为0Xfe62696e的魔数开头,这个魔数对应0xfe 'b''i''n'。
  • binlog由一系列的binlog event构成。每个binlog event包含header和data两部分。
    • header部分提供的是event的公共的类型信息,包括event的创建时间,服务器等等。
    • data部分提供的是针对该event的具体信息,如具体数据的修改。
  • 从mysql5.0版本开始,binlog采用的是v4版本,第一个event都是format_desc event 用于描述binlog文件的格式版本,这个格式就是event写入binlog文件的格式。关于之前版本的binlog格式,可以参见http://dev.mysql.com/doc/internals/en/binary-log-versions.html
  • 接下来的event就是按照上面的格式版本写入的event。
  • 最后一个rotate event用于说明下一个binlog文件。
  • binlog索引文件是一个文本文件,其中内容为当前的binlog文件列表。比如下面就是一个mysql-bin.index文件的内容。

来源:https://www.jianshu.com/p/c16686b35807

MySQL的二进制日志binlog)文件记录了数据库的所有更改,包括数据的插入、更新和删除操作。binlog文件记录了MySQL数据库的每个事务的所有操作,并且是MySQL数据库的复制和恢复过程的重要组成部分。 MySQLbinlog文件格式主要分为两种:statement格式和row格式。 1. statement格式 statement格式是指MySQL将每个SQL语句的文本记录到二进制日志文件中。这种格式的优点是日志文件比较小,因为只需要记录SQL语句的文本。但是,由于不同的MySQL版本和配置可能会导致SQL语句的执行结果不同,因此在进行数据复制和恢复时,可能会出现数据不一致的情况。 2. row格式 row格式是指MySQL将每个更改行的数据记录到二进制日志文件中。这种格式的优点是更加准确,因为记录了每个更改行的数据,而不是SQL语句的文本。但是,由于需要记录每个更改行的数据,因此日志文件较大。 在使用row格式时,需要注意以下几点: - 日志文件会变得很大,因此需要定期清理日志文件。 - 由于记录了每个更改行的数据,因此在进行数据复制和恢复时,需要考虑数据的一致性。 - 由于记录了每个更改行的数据,因此在进行大量更新、删除等操作时,可能会导致性能问题。 总之,MySQLbinlog文件格式是非常重要的,对于数据复制和恢复过程至关重要。在选择binlog文件格式时,需要根据实际情况来选择合适的格式
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值