MySQL的binlog的格式及优缺点分别是什么呢

MySQL的binlog格式

MySQL的binlog有三种格式: STATEMENT、ROW、MIXED。

STATEMENT格式

在STATEMENT格式中,每个修改数据库的语句都会被记录下来。这个格式优点是binlog日志文件比较小,缺点是在在一些情况下,这种格式记录的信息可能无法重现。比如:

1. 函数或存储过程中使用了动态SQL
2. 更新时使用了 UDF(User-defined Function) 函数
3. 在同一个SQL语句中,执行了多个更新操作,可能出现主从数据不一致。

ROW格式

ROW格式记录的是更新前后行的变化情况。它的优点是这种方式记录的修改信息可以精确地重现,但产生的binlog日志比较大。

以下情况建议使用ROW格式:
1. 对于主键修改的场景时,使用 ROW 格式会更保险。
2. 表结构变化比较频繁,这样使用 ROW 格式的话可以尽量避免与主从之间数据不一致的情况。

MIXED格式

Mysql的MIXED格式采用两种binlog记录的混合模式,可以根据实际情况自动选择使用 STATEMENT 方式记录还是 ROW 方式记录。使得binlog的更新精度和记录量都得到了较好的控制和优化,更加具有实际使用价值。它的优点是根据具体的情况而自动选择 STATEMENT 或 ROW 格式 。

使用好的范围:
1. 数据库性质和表的特点非常难以抉择使用 STATEMENT 还是 ROW 格式,因此可以使用 MIXED 格式进行折中实现。
2. 系统中存在频繁地表结构变更,
3. 对于数据一致性要求严格的情况下,需要使用 ROW 格式来保证数据的一致性。
© 版权声明
THE END
喜欢就支持一下吧
点赞6 分享