Skip to main content

概述

数据完整性前提

binlog_row_image 是 MySQL 中的一个系统变量,它用于控制二进制日志(binlog)中的行数据记录方式。通过配置 binlog_row_image,您可以选择记录完整的行数据,或者只记录被修改的列数据,以减少二进制日志的体积。

在 MySQL 8.0.23 版本引入了 binlog_row_image 这个特性,它可以设置为以下几个选项之一:

  • FULL:记录完整的行数据,包括所有列的值。这是最详细的记录方式,但也可能会导致二进制日志体积较大。

  • MINIMAL:记录受影响的列数据以及所在行的主键信息。这样可以减少日志的大小,但仍然保留了修改信息。

  • NOBLOB:类似于 MINIMAL,但不记录 BLOB、TEXT 等大对象类型的数据,以进一步减小日志体积。

  • NONE:不记录任何行数据。这个选项会将日志压缩到最小,但在从服务器进行复制时可能需要额外的查询来恢复数据。

您可以使用以下步骤来配置 binlog_row_image

  1. 检查版本: 确保您的 MySQL 版本是 8.0.23 或更高版本,因为 binlog_row_image 是从这个版本开始引入的。

  2. 编辑配置文件: 找到 MySQL 的配置文件(通常是 /etc/my.cnf/etc/mysql/my.cnf),在文件中添加或修改以下行:

    binlog_row_image = <选项>

    <选项> 替换为您想要的记录方式,例如 FULLMINIMALNOBLOBNONE

  3. 重启 MySQL 服务: 保存配置文件更改后,重启 MySQL 服务使其生效:

    sudo service mysql restart
  4. 验证设置: 您可以通过连接到 MySQL 并执行以下查询来验证 binlog_row_image 的设置:

    SHOW VARIABLES LIKE 'binlog_row_image';

    查询结果会显示您配置的记录方式。

请注意,选择合适的记录方式取决于您的需求和应用场景。记录完整的行数据可能提供更全面的信息,但会增加日志体积。根据应用的特点,您可以选择最适合的配置。

MySQL的binlog_row_image如果不是为full的话,那么修改的update的old就没有数据