mysql扩展:主从原理及延迟

1.  主从复制:     (异步单线程)

主库-->binlog-->-->relaylog-->从库

Master 上的 一个I/O线程,负责向Slave传输binary log (binlog)

Slave 上2个线程:IO线程和执行sql的线程:

  • IO线:将获取的日志信息,追加到relay log上;


  • 执行SQL的线程:检测到relay log中内容有更新,则在Slave上执行sql;

clipboard.png

1.png


执行所有命令 只能在主库上执行,从库只有读的功能,(如果从库有写功能,则主从很容易就中断)


2.主从当出现错误时,主要先检查从库日志:show slave status \G;


3.MySQL 集群,常见方式:主从集群

  • Master 节点,负责所有的「写请求」

  • Slave 节点,负责大部分的「读请求」

主从集群能够降低访问压力,降低master的压力,提高系统可用性。


常见的主从架构:

  • 一主一从:一个 Master,一个 Slave

  • 一主多从:一个 Master,多个 Slave


主从延迟

如何监控

监控主从延迟的方法有多种:

  1. Slave 使用本机当前时间,跟 Master 上 binlog 的时间戳比较

  2. pt-heartbeatmt-heartbeat

本质:同一条 SQL,Master执行结束的时间 vs. Slave执行结束的时间。


主从延迟的原因:

master

a.大事务。

b.sql执行速度慢

c.批量DML操作


减弱延迟:

  1. 细化事务:将大事务拆为小事务,不必要的地方移除事务     

    1. 提升 SQL 执行速度:优化索

    2. 减少批量操作:批量 DML 的耗时较多,减少不必要的批量 DML

  2. 降低多线程大事务并发的概率:优化业务逻辑


MySQL双主(主主)

可以使用keepalived做两台主做高可用,高可用策略的时候,masterA或masterB均不因宕机恢复后而抢占VIP(非抢占模式)





猜你喜欢

转载自blog.51cto.com/13589255/2118090