1. 主从复制: (异步单线程)web
主库-->binlog-->-->relaylog-->从库sql
Master 上的 一个I/O线程,负责向Slave传输binary log (binlog)多线程
Slave 上2个线程:IO线程和执行sql的线程:架构
IO线程:将获取的日志信息,追加到relay log上;并发
执行SQL的线程:检测到relay log中内容有更新,则在Slave上执行sql;异步
执行全部命令 只能在主库上执行,从库只有读的功能,(若是从库有写功能,则主从很容易就中断)ide
2.主从当出现错误时,主要先检查从库日志:show slave status \G;优化
3.MySQL 集群,常见方式:主从集群spa
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(非抢占模式)