在 MySQL 中,master 什么时候向 slaves 发送查询?
这是我试图理解的一个特定场景。
我看到可能发生的四种情况:
^C给从站。^C给从站,并将查询传递给从站。其中哪一项是实际发生的?
这是 MySQL 复制架构中的一个局部现象。以下是当您中断主服务器上的查询时有时会出现的示例消息
查询在主服务器上部分完成(主服务器上的错误:1053)并被中止。此时您的主人可能会不一致。如果您确定主服务器正常,请在从服务器上手动运行此查询,然后使用 SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1 重新启动从服务器;启动从机;。查询:(INSERT vhc (v_id, vc_id) SELECT 7421594, vc_id FROM vc WHERE label='st' AND value='re')
错误 1053 是服务器关闭。显然,其目的不是关闭 mysql 也不告诉连接的从站。在 Master 上按 Ctrl-C 会终止数据库连接。然而,这种断开连接被简单地解释为关闭。在我的旧帖子中MySQL 支持复制所有数据库吗?,我描述了MySQL如何从Master复制到Slave:
回顾我描述的错误消息,从站在其中继日志中检测到来自主站的 binlog 事件。它预期另一个事件,实际的 SQL 表明 Master 上一切顺利。相反,出现了错误 1053(由 Ctrl-C 引起的幻像关机)。这将使您有机会说“哦,主人,该查询已中断”。我会查看数据,看看它们是否匹配。
当谈到你的实际问题时,我会选择#1
从站上没有发生任何事情,因为主站会等到查询执行完毕后才将查询发送到从站。
但有一个警告
由于在Master上执行了Ctrl-C,Master将SQL连同错误1053一起记录在binlog中。Slave拦截了这一场景。