主备库所在机器的性能差别特别大

一般情况下觉得备库没有请求,所以可以用差一点儿的机器来做备库。但实际上,更新过程中也会触发大量的读操作。当备库主机上的多个备库都在争抢资源的时候,就可能会导致主备延迟了。

当然,这种部署现在比较少了。因为主备可能发生切换,备库随时可能变成主库,所以主备库选用相同规格的机器,并且做对称部署,是现在比较常见的情况。

备库压力过大

主库既然提供了写能力,那么备库可以提供一些读能力。很多人会选择在备库上数据分析、大量数据处理,导致备库上的查询耗费了大量的 CPU 资源,影响了同步速度,造成主备延迟。

这种情况,我们一般可以这么处理:

  1. 一主多从。除了备库外,可以多接几个从库,让这些从库来分担读的压力。
  2. 通过 binlog 输出到外部系统,让外部系统提供统计类查询的能力。

大事务问题

如果一个主库上的语句执行 10 分钟,那这个事务很可能就会导致从库延迟 10 分钟。比如:一次性地用 delete 100万行数据。

主备服务不在同一网络范围内

主备服务不在同一局域网内,或者跨区域问题。