概述
数据完整性前提
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
:
检查版本: 确保您的 MySQL 版本是 8.0.23 或更高版本,因为
binlog_row_image
是从这个版本开始引入的。编辑配置文件: 找到 MySQL 的配置文件(通常是
/etc/my.cnf
或/etc/mysql/my.cnf
),在文件中添加或修改以下行:binlog_row_image = <选项>
将
<选项>
替换为您想要的记录方式,例如FULL
、MINIMAL
、NOBLOB
或NONE
。重启 MySQL 服务: 保存配置文件更改后,重启 MySQL 服务使其生效:
sudo service mysql restart
验证设置: 您可以通过连接到 MySQL 并执行以下查询来验证
binlog_row_image
的设置:SHOW VARIABLES LIKE 'binlog_row_image';
查询结果会显示您配置的记录方式。
请注意,选择合适的记录方式取决于您的需求和应用场景。记录完整的行数据可能提供更全面的信息,但会增加日志体积。根据应用的特点,您可以选择最适合的配置。
MySQL的binlog_row_image如果不是为full的话,那么修改的update的old就没有数据