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 上执行的确切查询?的主要内容,如果未能解决你的问题,请参考以下文章