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