19.3.1 Binlog格式

本款的状态:完整但未审查2009-10-21

Binlog被组织为线性序列活动。修改数据库的SQL查询将生成一个或多个事件并将其附加到Binlog。还有辅助事件类型描述了Binlog的结构。

可以通过两种方式登录查询:

  • 以语句格式:SQL查询以文本中的binlog写入。

  • 以行格式:更改的行以二进制格式写入Binlog。每行可能包括一个在图像之前(BI)和/或图像(AI)。BI标识要修改的行,并且AI在更改后描述该行。log_events有三种类型:

  • write_rows_log_event:将新行添加到表中。只有ai。

  • update_rows_log_event:修改表中的现有行。均有BI和AI。

  • delete_rows_log_event:从表中删除现有行。只有bi。

使用@@ session.binlog_Format变量的两个格式中的哪种格式中的哪种格式配置了值语句,行或混合。以下原则应当:

(p-binlog_format-statement)@@ session.binlog_format =语句:

  • 我们不保证正确的日志记录。

  • 客户端可能无法生成行事件。

  • 如果服务器无法确定正确记录语句,则应发出警告或错误:

    • 如果用户(通过应用程序特定的逻辑)可以知道语句被正确记录,则应发出警告。

    • 如果用户本质上不可能确定将正确记录该语句,则应发出错误,并且语句不得执行。

(p-binlog_format-row)@@ sessient.binlog_format =行:

  • 我们保证正确的日志记录。如果无法正确记录语句,则应生成错误,并且语句不得执行。

  • DML更改可能只能以行格式记录,而不是语句格式。如果DML更改无法以行格式记录,则应生成错误,并且该语句不得执行。

(p-binlog_format-mixed)@@ sessient.binlog_format =混合:

  • 我们保证正确的日志记录。如果无法正确记录语句,则应生成错误,并且语句不得执行。

  • 如果通过以语句格式登录可以保证正确的日志记录,则应使用语句格式。否则,应使用行格式。

澄清:如果无法以实际方式确定语句格式导致正确日志记录,则应使用行格式。