> 文章列表 > MySQL运维27-MySQL复制的评估方法和注意事项

MySQL运维27-MySQL复制的评估方法和注意事项

MySQL运维27-MySQL复制的评估方法和注意事项

文章目录

  • 1、概述
  • 2、MySQL复制的意义
  • 3、MySQL复制实施前的评估方法
    • 3.1、必要性的评估
    • 3.2、基础设施的评估
    • 3.3、对主库影响的评估
  • 4、MySQL复制实施时的注意事项
  • 5、总结

1、概述

2、MySQL复制的意义

  1. 扩展读能力:从库的最重要意义在于扩展读能力,但不能扩展写能力,因此从库复制对于读多写少的系统好处最大。
  2. 隔离不同类型的读:从库可以将不同类型的读进行物理隔离,例如以简单连接、单条读为主的生产库和以复杂连接、统计分析为主的分析库。
  3. 减少主库读,变相提升主库写能力:虽然复制不能直接提升主库写能力,但由于从库将主库的读的压力分担了,减少了系统负载,因而也能变相增加主库的写能力。
  4. 数据备份:通过对主库的延时复制,也可以达到对主库数据进行备份的目的,但除非特殊情况,不推荐这样做。

3、MySQL复制实施前的评估方法

3.1、必要性的评估

系统的读写比例是多少,是否读多写少,读能力是否存在瓶颈需要扩展,比如生产库、历史库和分析库的分离,是否有建立从库进行复制的必要?

3.2、基础设施的评估

网络带宽可满足多少从库的复制需求?

3.3、对主库影响的评估

一般情况下从库复制对主库影响不大,但有以下几种特殊情况:

  • 从库太多:如果部署了很多从库,就需要考虑从库对主库的影响了,网络带宽或I/O可能都会存在瓶颈。可以解决的方案是再配置一个从库,专门用来传递日志给其他从库。
  • 复制旧日志:如果只是传送最新的二进制日志到从库,那么从库一般不会对主库有冲击,但如果由于某种原因,需要读取高并发主库上旧的日志,那就可能会带来严重的性能问题,因为主库要读取大量的旧日志,而这些日志没有被操作系统缓存,导致主库I/O瓶颈。

4、MySQL复制实施时的注意事项

  1. 尽量将从库配置为只读:因为应用程序可能会配置错误,对从库进行写操作,将会导致数据的不一致性,甚至丢失数据。
  2. 在主从集群里,同一时刻只往一个数据库写数据:单向复制是健壮性最强的复制架构,但在实际中,可能会为了方便切换,往往是互为主从的环境。在这种情况下,一定要保证同一时刻只写一个数据库,以防止数据库同时写入相同的键值,导致主键冲突,复制失败。

5、总结

  1. MySQL复制的最大意义还在于扩展读能力、隔离不同类型的读,顺带也有变相增加主库写能力和数据备份的作用。