MySQL 基于语句的复制:binlog 是不是包含在 master 上执行的确切查询?

Posted

技术标签:

【中文标题】MySQL 基于语句的复制:binlog 是不是包含在 master 上执行的确切查询?【英文标题】:MySQL statement based replication: Does binlog contain exact queries executed on master?MySQL 基于语句的复制:binlog 是否包含在 master 上执行的确切查询? 【发布时间】:2015-04-27 05:43:00 【问题描述】:

我们必须针对几天前发生的事件调试我们的 Web 应用程序,而我们所拥有的只是 mysql 复制二进制日志(语句复制)。我们能否依赖这些与我们的 Web 应用程序在 master 上执行的 SQL 查询完全相同的查询?

我们的应用程序正在对一张表中的单行进行大量更新,但这些总是像 UPDATE y SET x = x + 1 ...x = x - 2 这样的查询,而不是 UPDATE y SET x = 23 ...,在 binlog 中我们发现了许多 x = 23 之类的更新。难道那些严格赋值的UPDATE查询实际上是由复制机制创建的吗?

【问题讨论】:

这很奇怪。您是否还在 binlog 中看到 x=x+1 更新? 是的,x=x+1 也在那里。实际上应用程序正在执行那些SET x=23 类型的更新,但在某些条件下。所以回答我自己的问题:您在 binlog 中找到的查询与在 master 数据库上执行的查询相同,但您只会在那里找到插入/更新查询(显然没有选择),并且它们的顺序可能不同(您需要查看 binlog 中 cmets 中的时间戳)。 【参考方案1】:

实际上应用程序正在执行那些SET x=23 类型的更新,但在某些条件下。

所以回答我自己的问题:您将在 binlog 中找到的查询与在 master 数据库上执行的查询相同,但您只会在那里找到插入/更新查询(显然没有选择),并且它们的顺序可能不同(您需要在 binlog 中查看 cmets 中的时间戳)。

【讨论】:

以上是关于MySQL 基于语句的复制:binlog 是不是包含在 master 上执行的确切查询?的主要内容,如果未能解决你的问题,请参考以下文章

MySQL 5.7 基于 binlog 的主从复制

MySQL 8 复制

mysql中binlog_format模式与配置详解

mysql的binlog日志的binlog_format模式与配置详解

mysql 试题总结

mysql dba系统学习二进制日志binlog之二