MySQL主从复制

本文探讨了主从复制在数据库中的应用,包括读写分离、不同复制模式(异步、半同步、全同步)及其优缺点,以及如何处理高写压力和数据一致性问题。还介绍了查询主从库状态的方法。
摘要由CSDN通过智能技术生成

一、为什么使用主从复制?

  • 读写分离:写使用主库,读使用从库,减小主库压力
  • 数据备份

一、主从复制的过程

主从复制默认是异步操作,有主库通知从库,如果采用从库轮询那么效率会很低,主库二进制日志有事件产生唤醒dump 线程就能马上通知从库,效率高的多。

image

  • 主库提交事物时会写二进制日志,写完告诉存储引擎可以提交事物了。(涉及二段提交)
  • 从库会启动一个IO线程连接主库,同时主库会启动一个dump线程来读取二进制日志中的事件,该线程不会轮询,当追上主库时会沉睡,当主库二进制日志有新事件产生时,会将其唤醒,从库IO线程会将接收到的事件写入中继日志
  • SQL线程会读取中继日志的事件,并在从库执行,使得从库数据更新

二、异步复制,主库宕机后,数据可能丢失

  • 半同步复制:提交事物时,不会马上响应客户端,必须确保有一个从库接收到了二进制日志并写入中继日志,返回ack后,才会响应客户端。需要注意的是:
    1. 从库不会阻塞主库事物提交,只是客户端通知延迟了。
    2. 从库不需要完成事物后在反馈.
    3. 备库如果一直没有回复已经收到事件,会超时并转化为异步复制模式
  • 全同步复制:提交事物后,不会马上响应客户端,等待所有从库接收二进制日志并提交事物后,返回客户响应。可见十分损耗性能

三、主库写压力大,从库复制很可能出现延迟

写压力大,导致从库的SQL线程来不及消化那么多的写数据。

  • 从库采用并行复制
  • 加入缓存,减轻从库读的压力
  • 主库分库,减轻单个库写入压力,对应的从库压力也减少
  • 增强从库机器配置,SQL线程执行更快。

四、读写分离数据一致性问题

  • 强一致性业务如缴费支付读写都采用主库

五、主从数据库状态查询命令

  • 从库:show slave status \G;
  • 主库:show master status \G;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值