我发现基于Master和Slave概念的MySQL的复制可能性。
但我没有找到关于线程如何真正起作用的任何详细信息
(即使在这个网站上:http://dev.mysql.com/doc/refman/5.0/en/replication-implementation-details.html)
我知道有3个主题:
Slave SQL thread:在slave的数据库上执行请求
Slave I / O thread:连接Master,读取二进制文件并在Slave上写入请求
主Binlog转储线程:将二进制文件的副本发送到每个连接的I / O线程。
我也知道他们正在遵循这个过程:
没关系,但那之后的I / O线程的行为怎么样?? 它仍然连接在Master上,但是如果在主数据库上进行了新的写入请求会发生什么?什么是真正的过程?
我发现了不同的可能性,但我不确定它们是不是很好:
最新的奴隶主要是阅读事件 仍然缓存在主服务器上的OS缓存中,所以不会有 任何物理磁盘读取主服务器以提供二进制日志 事件到奴隶
当新请求写入二进制日志文件时,Master 线程将其发送到每个连接的I / O线程。
这是我在StackOverflow上的第一篇文章,我希望我的问题是可以理解的。
提前谢谢! :)
答案 0 :(得分:1)
我认为您需要mysql源代码才能真正了解该过程的工作原理。 据我所知,奴隶等待主人发送一个事件。
我无法给出关于超载的100%答案。但我从未遇到过使用插入,更新和删除分配来复制数据库的任何问题。