mysql数据库主从
1、主从复制
前提是master上必须开启二进制日志
原理:
1)master 将数据更新记录到二进制日志文件中
2)slave 通过 I/O 线程向master请求二进制日志文件(要让 slave 知道请求的是哪个master以及位置)
3)master 接收到 slave 的 I/O 请求之后,就会从相应的位置点开始,给 slave 传日志
4)slave 接收到日志后,会写入本地的中继日志中
5)slave 通过 sql 线程读取中继日志中的内容,在数据库中执行相应的操作,使 slave 和 master 上的数据一致,而后 slave 服务器进入等待状态,等待master的后续更新
总结:两个线程,两个日志
2、主从延迟
-
情况一: 从服务器配置过低导致延迟
这类延迟场景的出现往往是主节点拥有较大规格的配置,而只读节点却购买了一个最小规格的配置。
只读节点的数据为了和主节点保持同步,采用了MySQL binlog复制技术,由一个IO线程和一个SQL线程来完成,IO线程负责将主库的binlog拉取到只读节点,SQL线程负责消费这些binlog日志,这两个线程会消耗掉只读节点的IO资源,所以当只读节点IOPS配置不够的时候,则会导致只读节点的数据出现延迟。
解决办法: 升级从服务器的配置,让只读节点的配置大于或者等于主节点的配置即可 -
情况二: 主库的QPS过高导致只读节点延迟