据我所知,mysql复制在slave上使用了两个不同的线程 -
对奴隶的选择查询怎么样? SELECT查询是否会干扰复制过程?或者是否有一个执行SELECT查询的不同线程?
我的意思是,可以减慢slave上的select查询,使复制落后于master吗?
答案 0 :(得分:2)
简而言之,查询可能会干扰复制,但这不是线程,而是应用锁定(ACID与线程)。可以通过从站上的选择查询阻止正在复制到从站的主站的更新查询。但是,复制子系统大多数时候都会处理这些查询锁定问题。如果您不介意脏读,则可以将从站上的事务序列化隔离级别设置为较少限制以降低风险。但是,请确保脏读是可接受的,请参阅此链接以获取更多信息:http://dev.mysql.com/doc/refman/5.0/en/set-transaction.html
您担心延迟,并且在任何复制模式中都不能消除延迟。主站和从站之间几乎总是有网络。这将从一开始就引入滞后。例如,大型复制语句可能会使网络带宽饱和,这可能比阻止复制的查询更频繁地发生。复制永远不会,也永远不会是即时的。所以关于滞后的观点可以回答,因为这种滞后是你必须处理的事情,而不是你可以完全消除的事情。
不要误解我的复制可以很快,但绝不是瞬间。
要记住的另一件事是复制可能会失败,您也需要为此进行规划。它会在某个时刻发生,并为此做好准备是至关重要的。因此,无论你如何进行复制,基本上你都会有延迟,你需要能够处理它。还要准备好在某些时候复制失败以及如何从中恢复。
虽然复制在许多地方都很有用,但您需要确保在许多级别上做好准备,例如充足的网络基础架构,如何在灾难恢复(故障转移)期间处理它,在生产期间监控它以及如何获取它在休息时重新上线。