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(非抢占模式)
转载于:https://blog.51cto.com/13589255/2118090