在 MySQL 8.0 之前,对 JSON 列的更新总是作为完整文档写入二进制日志。在 MySQL 8.0 中,可以记录对 JSON 文档的部分更新(请参阅 JSON 值的部分更新),这样效率更高。日志记录行为取决于所使用的格式,如下所述:
基于语句的复制。
JSON 部分更新始终记录为部分更新。使用基于语句的日志记录时不能禁用此功能。
基于行的复制。
默认情况下,JSON 部分更新不记录,而是记录为完整文档。要启用部分更新的日志记录,请设置
binlog_row_value_options=PARTIAL_JSON
. 如果复制源设置了此变量,则从该源接收的部分更新将由副本处理和应用,而不管副本自己的变量设置如何。
运行 MySQL 8.0.2 或更早版本的服务器无法识别用于 JSON 部分更新的日志事件。因此,当从运行 MySQL 8.0.3 或更高版本的服务器复制到此类服务器时,binlog_row_value_options
必须通过将此变量设置为
''
(空字符串)在源上禁用。有关详细信息,请参阅此变量的说明。