【发布时间】:2023-03-20 23:06:01
【问题描述】:
我正在发现基于主从概念的 MySQL 复制可能性。
但我没有找到任何关于线程如何真正工作的详细信息
(甚至在这个网站上:http://dev.mysql.com/doc/refman/5.0/en/replication-implementation-details.html)
我知道有 3 个线程:
从属 SQL 线程:在从属数据库上执行请求
Slave I/O 线程:连接到 Master,读取二进制文件并将其请求写入 Slave
主 Binlog 转储线程:将二进制文件的副本发送到每个连接的 I/O 线程。
我也知道他们正在遵循这个过程:
- 首先 I/O 线程连接到 Master
- Master 创建 Binlog 转储线程
- 从线程向主线程询问以获取二进制日志的最新版本
- 主线程向其发送二进制日志的副本
- 从属线程读取副本,并将其内容写入从属主机(对于可以执行这些新请求的从属 SQL 线程)
没关系,但是 I/O 线程 之后 的行为呢? 它仍然连接在主数据库上,但是如果在主数据库上完成新的写入请求会发生什么?真正的过程是什么?
我发现了不同的可能性,但我不确定它们是否是好的:
-
最新的从站将主要读取最新的事件 仍然缓存在主机上的操作系统缓存中,所以不会有 任何物理磁盘读取主服务器以提供二进制日志 向从站发送的事件
-
当一个新的请求被写入二进制日志文件时,Master 线程将其发送给连接的每个 I/O 线程。
这是我在 StackOverflow 上的第一篇文章,希望我的问题可以理解。
提前谢谢你! :)
【问题讨论】:
标签: mysql multithreading replication master slave