Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL复制-从节点上的select查询会干扰复制过程吗?_Mysql_Replication - Fatal编程技术网

MySQL复制-从节点上的select查询会干扰复制过程吗?

MySQL复制-从节点上的select查询会干扰复制过程吗?,mysql,replication,Mysql,Replication,我知道mysql复制在从机上使用两个不同的线程- 从I/O线程从主线程读取binlog并将其写入本地中继日志 从SQL线程执行本地中继日志中的SQL语句。此线程用于执行更新、删除和创建SQL 关于从机上的select查询呢?SELECT查询是否会干扰复制过程?或者是否有其他线程执行SELECT查询 我的意思是,slave上的select查询是否会使复制落后于master?简言之,查询可能会干扰复制。这里重要的不是线程,而是应用的锁定(ACID与线程)。从机上的select查询可以阻止从机上复制到

我知道mysql复制在从机上使用两个不同的线程-

  • 从I/O线程从主线程读取binlog并将其写入本地中继日志
  • 从SQL线程执行本地中继日志中的SQL语句。此线程用于执行更新、删除和创建SQL
  • 关于从机上的select查询呢?SELECT查询是否会干扰复制过程?或者是否有其他线程执行SELECT查询


    我的意思是,slave上的select查询是否会使复制落后于master?

    简言之,查询可能会干扰复制。这里重要的不是线程,而是应用的锁定(ACID与线程)。从机上的select查询可以阻止从机上复制到从机的更新查询。但是,复制子系统将在大多数情况下处理这些查询锁定问题。如果您不介意脏读,那么可以将从属服务器上的事务序列化隔离级别设置为限制性较小的级别,以降低风险。但是,请确保脏读是可以接受的。有关更多信息,请参阅此链接:

    您关心的是滞后,而这并不是您可以在任何复制模式中消除的,因为会有滞后。在主设备和从设备之间几乎总是有一个网络。这将从一开始就引入滞后。例如,大型复制语句可能会使网络带宽饱和,这可能比阻塞复制的查询更频繁。复制从来都不是,也永远不会是即时的。所以你关于滞后的观点可以这样回答,这个滞后是你必须处理的事情,而不是你可以完全消除的事情

    别误会,复制可以很快,但绝不是瞬间的

    要记住的另一件事是,复制可能会失败,您也需要为此制定计划。它将在某个时刻发生,为此做好准备是至关重要的。因此,无论您如何进行复制,基本上都会有延迟,您需要能够处理它。还要准备好复制在某个时刻失败,以及如何从中恢复


    虽然复制在许多地方都很有用,但您需要确保在多个级别上做好准备,例如适当的网络基础架构、如何在灾难恢复(故障切换)期间处理复制、在生产过程中监控复制以及如何在复制中断时使复制恢复联机。

    感谢您的详细回复。是的,复制从来不是瞬间的。我想知道的是,slave上的select查询是否会以任何方式影响复制。您已经提到-从主查询到正在复制到从查询的更新查询可以被select查询阻止。谢谢你的澄清请记住这是可能发生的。通常情况下,这些情况会很快得到解决,您不会注意到它们。主设备的更新也会阻止从设备上的选择。这是数据库的正常操作,所以就像我提到的,这通常不太重要。很难给你一个明确的答案,因为我没有你的要求等等。