MySQL主从复制是master push 更新给slave还是 salve pull master 更新

我想知道,当 master 写入之后,是 master 主动把更新(binlog)分发给 slave 。还是让 slave 自己轮询检查 master 的binlog 啊?

我之前看有些博客说是 pull 模式,但是我是用 wireshark 抓包发现,只有 master 给 slave 的 response (但是没有 slave 给 master 的request)。没有看到 slave 给 master 发包。

image.png

阅读 3.9k
2 个回答

MySQL的主从复制时主动推送的,
过程分成三步:

1、master将改变记录到二进制日志(binary log)。

2、slave将master的binary log events拷贝到它的中继日志(relay log);

3、slave重做中继日志中的事件,将改变应用到自己的数据库中。

图片.png

pull 模型

while 1:
  slave 发送一个 dump binlog,然后 msater 回复一个 binlog event

push 模型

slave 发送一个 dump binlog
while 1:
    msater 回复一个 binlog event

image.png

mysql 的主从复制是 master 给 slave 主动发消息,slave 本身不回复任何事情(图中的 ack 是 tcp 的事情,和 mysql 无关)

master 如果三十秒内没有什么实质性的东西可以发给 slave 就会发送一个固定的东西,类似心跳包了。

总结:mysql 的主从复制是 master 主动把数据变更发给 slave

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏