我当时正在研究MySQL半同步复制,我对工作流的理解如下:
rpl_semi_sync_master_timeout
毫秒从至少一个从服务器接收确认我的问题是,在任何时候,这种类型的复制都可以确保事务在从服务器上执行(SQL_TREAD
应用它)。考虑到它将增加每个事务的延迟,并且在主服务器失败的情况下,不能100%地保证从服务器将与主服务器保持一致,使用这种类型的复制有什么好处(S)?
发布于 2013-05-05 15:18:50
Baron写了一篇关于这方面的优秀文章,我认为有一句关键的句子回答了你的问题:
那么半同步复制能保证我什么呢?如果没有错误或超时,那么保证从本质上说,如果主服务器崩溃,每个客户端可能只丢失一个事务。
因此,半同步复制可以最小化(但并不完全消除)出现这个问题的可能性:
IO Thread
开始在其主服务器A之后运行,原因是正如在Baron的文章中所指出的(根据您的措辞,我肯定您知道这一点),它并不是防弹的--如果MySQL停止从复制者那里得到响应,它将回到常规复制--但是无法恢复的数据丢失的可能性较小。
其结果是,它防止了上述情况,它是“开箱即用”,而且它不需要任何第三方或基础设施级别的解决方案(例如Galera/Xtradb集群或DRBD)。成本是否值得,取决于你的情况。
https://dba.stackexchange.com/questions/41541
复制相似问题