【发布时间】: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 中的时间戳)。
标签: mysql sql replication binlog