mysql扩展:主从原理及延迟
1.主从复制: (异步单线程)主库-->binlog-->-->relaylog-->从库
Master 上的 一个I/O线程,负责向Slave传输binary log (binlog)
Slave 上2个线程:IO线程和执行sql的线程:
[*] IO线程:将获取的日志信息,追加到relay log上;
[*]
[*] 执行SQL的线程:检测到relay log中内容有更新,则在Slave上执行sql;
执行所有命令 只能在主库上执行,从库只有读的功能,(如果从库有写功能,则主从很容易就中断)
2.主从当出现错误时,主要先检查从库日志:show slave status \G;
3.MySQL 集群,常见方式:主从集群
[*] Master 节点,负责所有的「写请求」
[*] Slave 节点,负责大部分的「读请求」
主从集群能够降低访问压力,降低master的压力,提高系统可用性。
常见的主从架构:
[*] 一主一从:一个 Master,一个 Slave
[*] 一主多从:一个 Master,多个 Slave
主从延迟
如何监控
监控主从延迟的方法有多种:
[*] Slave 使用本机当前时间,跟 Master 上 binlog 的时间戳比较
[*]
[*] pt-heartbeat、mt-heartbeat
本质:同一条 SQL,Master 上执行结束的时间 vs. Slave 上执行结束的时间。
主从延迟的原因:
master上
a.大事务。
b.sql执行速度慢
c.批量DML操作
减弱延迟:
[*] 细化事务:将大事务拆为小事务,不必要的地方移除事务
[*] 提升 SQL 执行速度:优化索
[*] 减少批量操作:批量 DML 的耗时较多,减少不必要的批量 DML
[*] 降低多线程大事务并发的概率:优化业务逻辑
MySQL双主(主主)
可以使用keepalived做两台主做高可用,高可用策略的时候,masterA或masterB均不因宕机恢复后而抢占VIP(非抢占模式)
页:
[1]