文章目录
- 1、概述
- 2、MySQL复制的意义
- 3、MySQL复制实施前的评估方法
- 3.1、必要性的评估
- 3.2、基础设施的评估
- 3.3、对主库影响的评估
- 4、MySQL复制实施时的注意事项
- 5、总结
1、概述
2、MySQL复制的意义
- 扩展读能力:从库的最重要意义在于扩展读能力,但不能扩展写能力,因此从库复制对于读多写少的系统好处最大。
- 隔离不同类型的读:从库可以将不同类型的读进行物理隔离,例如以简单连接、单条读为主的生产库和以复杂连接、统计分析为主的分析库。
- 减少主库读,变相提升主库写能力:虽然复制不能直接提升主库写能力,但由于从库将主库的读的压力分担了,减少了系统负载,因而也能变相增加主库的写能力。
- 数据备份:通过对主库的延时复制,也可以达到对主库数据进行备份的目的,但除非特殊情况,不推荐这样做。
3、MySQL复制实施前的评估方法
3.1、必要性的评估
系统的读写比例是多少,是否读多写少,读能力是否存在瓶颈需要扩展,比如生产库、历史库和分析库的分离,是否有建立从库进行复制的必要?
3.2、基础设施的评估
网络带宽可满足多少从库的复制需求?
3.3、对主库影响的评估
一般情况下从库复制对主库影响不大,但有以下几种特殊情况:
- 从库太多:如果部署了很多从库,就需要考虑从库对主库的影响了,网络带宽或I/O可能都会存在瓶颈。可以解决的方案是再配置一个从库,专门用来传递日志给其他从库。
- 复制旧日志:如果只是传送最新的二进制日志到从库,那么从库一般不会对主库有冲击,但如果由于某种原因,需要读取高并发主库上旧的日志,那就可能会带来严重的性能问题,因为主库要读取大量的旧日志,而这些日志没有被操作系统缓存,导致主库I/O瓶颈。
4、MySQL复制实施时的注意事项
- 尽量将从库配置为只读:因为应用程序可能会配置错误,对从库进行写操作,将会导致数据的不一致性,甚至丢失数据。
- 在主从集群里,同一时刻只往一个数据库写数据:单向复制是健壮性最强的复制架构,但在实际中,可能会为了方便切换,往往是互为主从的环境。在这种情况下,一定要保证同一时刻只写一个数据库,以防止数据库同时写入相同的键值,导致主键冲突,复制失败。
5、总结
- MySQL复制的最大意义还在于扩展读能力、隔离不同类型的读,顺带也有变相增加主库写能力和数据备份的作用。