我们不得不为几天前发生的事件调试我们的 Web 应用程序,而我们所拥有的只是 MySQL 复制二进制日志(语句复制)。我们能否将这些查询视为与我们的 Web 应用程序在 master 上执行的完全相同的 SQL 查询?
我们的应用程序对一个表中的单行进行大量更新,但这些总是像 UPDATE y SET x = x + 1 ...
或 x = x - 这样的查询2
,从来没有UPDATE y SET x = 23 ...
,在binlog中我们发现了很多x = 23
类型的更新。难道那些严格分配的UPDATE查询实际上是由复制机制创建的吗?
最佳答案
实际上,应用程序正在执行那些 SET x=23
类型的更新,但在某些条件下。
所以回答我自己的问题:您将在 binlog 中找到的查询与在 master 数据库上执行的查询相同,但您只会在那里找到插入/更新查询(显然没有选择),并且它们的顺序可能不同(你需要查看 binlog 中评论中的时间戳)。
关于基于 MySQL 语句的复制 : Does binlog contain exact queries executed on master?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29888020/