事情背景是这样子,今天有人和我讨论了一下MySQL主从的一些东西,
在这个过程中,对方信誓旦旦,斩钉截铁的告诉我,Master主动向Slave推送binlog,说的自己都开始怀疑是自己理解错了,
毕竟一直理解的是Slave主动向Master请求binlog,Master只是那种,"你要就给你,不要就不理你"的角色
好吧,为了求证一下,跑去翻MySQL的官方文档,找到一段描述,
以博主六级勉强及格的水平,应该没有理解错:master并不会主动去"push"(推送)日志的内容,而是由slave去主动从master去“pull”(拉取)日志
接下来的一段关于Slave I/O thread的文字也印证了一这点,
slave的I/O thread会去向主库要求把binlog的变动发送过来
这么做的原因,看上去是在这一段描述,
在最后做了总结, 大体上的意思:每一个slave都是完全独立的个体,所以slave完全依据自己的节奏去处理同步,和master,其他的slave没有一点关系
我的理解就是,主从虽然把多个不同角色的数据库连接在了一起,但是本身他们的耦合性很低,相互之间互不影响,防止因为某一个节点的down导致其他节点的down,至于主从同步失败,姑且认为没有到达数据库down的这种级别吧....
在这个过程中,对方信誓旦旦,斩钉截铁的告诉我,Master主动向Slave推送binlog,说的自己都开始怀疑是自己理解错了,
毕竟一直理解的是Slave主动向Master请求binlog,Master只是那种,"你要就给你,不要就不理你"的角色
好吧,为了求证一下,跑去翻MySQL的官方文档,找到一段描述,
以博主六级勉强及格的水平,应该没有理解错:master并不会主动去"push"(推送)日志的内容,而是由slave去主动从master去“pull”(拉取)日志
接下来的一段关于Slave I/O thread的文字也印证了一这点,
slave的I/O thread会去向主库要求把binlog的变动发送过来
这么做的原因,看上去是在这一段描述,
在最后做了总结, 大体上的意思:每一个slave都是完全独立的个体,所以slave完全依据自己的节奏去处理同步,和master,其他的slave没有一点关系
我的理解就是,主从虽然把多个不同角色的数据库连接在了一起,但是本身他们的耦合性很低,相互之间互不影响,防止因为某一个节点的down导致其他节点的down,至于主从同步失败,姑且认为没有到达数据库down的这种级别吧....