如何理解binlog的binlog_rows_query_log_events和binlog_row_image参数

什么是binlog

binlog是MySQL用来记录数据库变更日志的一种格式,主要用于主从复制、数据恢复、故障恢复等场景。

binlog_rows_query_log_events参数

binlog_rows_query_log_events是binlog的一种事件类型,用于记录查询语句对应的内容。

当一个查询语句产生了数据变更,MySQL会将该查询语句的具体内容记录在binlog中,该事件类型就是用来记录这个内容的。比如下面的语句:

UPDATE user SET name='张三' WHERE id=1;

如果该语句产生了数据变更,MySQL会将该语句的内容记录在binlog中,当该binlog被应用到从库时,从库就知道该语句是由主库执行的,从而也对应相应地进行数据变更。

binlog_row_image参数

binlog_row_image也是binlog的一种事件类型,用于记录数据变更的具体内容。

和binlog_rows_query_log_events不同的是,binlog_row_image主要用于记录数据变更内容,而不是查询语句的具体内容。因为一个查询语句可能对应多次数据变更,所以这个参数会记录每次数据变更的具体内容,以便于在从库中进行准确的数据同步。

binlog_row_image有两种取值:FULL和MINIMAL。FULL表示记录所有数据变更语句之前的内容(旧值)和之后的内容(新值);MINIMAL表示只记录变更后的内容(新值),用于减小binlog的大小和提高写入性能。

binlog_rows_query_log_events和binlog_row_image的关系

binlog_rows_query_log_events和binlog_row_image的关系非常密切,可以将它们看作是一对姊妹事件类型。

在产生数据变更的查询语句被记录在binlog中时,MySQL会同时记录该变更所对应的具体内容。而binlog_row_image就是用来记录数据变更内容的。

当binlog被应用到从库时,从库会先解析出查询语句的具体内容(使用binlog_rows_query_log_events),然后再根据binlog_row_image中的具体内容进行准确的数据同步。因此,这两个参数的正确使用非常重要,只有在正确使用的情况下才能实现准确的主从同步。

© 版权声明
THE END
喜欢就支持一下吧
点赞6 分享