主从复制

读写分离

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

 

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

  1. 主从服务器负责各自的读和写,极大程度缓解了锁的争用;
  2. 从服务器可以使用MyISAM,提升查询性能以及节约系统开销;
  3. 增加冗余,提高可用性。

 

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

 

主从复制

主从复制

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

binlog 线程 :负责将主服务器上的数据更改写入二进制日志(Binary log)中。

I/O 线程 :负责从主服务器上读取二进制日志,并写入从服务器的中继日志(Relay log)。

SQL 线程 :负责读取中继日志,解析出主服务器已经执行的数据更改并在从服务器中重放(Replay)。

img

主从复制

 

为什么会有主从延迟

1、从库的机器性能比主库要差

2、从库的压力大

3、大事务的执行

4、主库的DDL(alter、drop、create)

5、锁冲突

6、从库的复制能力

 

减少延迟

  1. 降低多线程大事务并发的概率,优化业务逻辑
  2. 优化SQL,避免慢SQL,减少批量操作,建议写脚本以update-sleep这样的形式完成。
  3. 提高从库机器的配置,减少主库写binlog和从库读binlog的效率差。
  4. 尽量采用短的链路,也就是主库和从库服务器的距离尽量要短,提升端口带宽,减少binlog传输的网络延时。
  5. 实时性要求的业务读强制走主库,从库只做灾备,备份。

上一篇:MySQL事务


下一篇:andorid 修改字体一文搞定