6 主从复制和读写分离


主从复制和读写分离

主从复制

主要涉及三个线程:binlog 线程、I/O 线程和 SQL 线程。

  • binlog 线程 :负责将主服务器上的数据更改写入二进制日志(Binary log)中。
  • I/O 线程 :负责从主服务器上读取二进制日志,并写入从服务器的中继日志(Relay log)。
  • SQL 线程 :负责读取中继日志,解析出主服务器已经执行的数据更改并在从服务器中重放(Replay)。

读写分离

主服务器处理写操作以及实时性要求比较高的读操作,而从服务器处理读操作。

读写分离能提高性能的原因在于:

  1. 主从服务器负责各自的读和写,极大程度缓解了锁的争用;
  2. 从服务器可以使用 MyISAM,提升查询性能以及节约系统开销;
  3. 增加冗余,提高可用性。
  • 从服务器只有读操作,不需要执行事务,因此可使用 MyISAM 存储引擎。
  • 为什么说 MyISAM 查询快呢?
    • InnoDB 的表是根据主键进行展开的 B+tree 的聚集索引。
    • MyISAM 则非聚集型索引,MyISAM 存储会有两个文件,一个是索引文件,另外一个是数据文件,其中索引文件中的索引指向数据文件中的表数据。
    • 注意:主(键)索引和辅助索引、聚簇索引和非聚簇索引的区别。
    • MyISAM 不支持事务,也就减少了执行事务带来的锁的占用,也是它查询快的一个原因!

读写分离常用代理方式来实现,代理服务器接收应用层传来的读写请求,然后决定转发到哪个服务器。

补充:正向代理和反向代理


文章作者: Hailong Gao
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Hailong Gao !
评论
  目录