您的当前位置:首页正文

MySQL主从复制原理浅析

2024-11-08 来源:个人技术集锦

MySQL主从复制原理浅析

MySQL主从复制是构建高可用MySQL的基础,复制就是让一台服务器的数据和其它服务器保持同步,一台主库可以同步到多台备库上面,备库也可以作为另一台服务器的主库。主库和备库之间可以有多种不同的组合方式。

主从复制

半同步复制

如何解决MySQL主库宕机导致的数据丢失情况?
使用半同步复制。在主库commit之前,需要先将binlog同步到从库,主库可以设置同步binlog的过期时间,在binlog复制到从库之后,从库后续会自行重放中继日志。不过这样也增加了客户端的延迟。另外这个需要安装下MySQL的插件。

复制方式

基于GTID和日志

  • 日志:传统的方式,默认的方式。依赖二进制日志,根据日志的偏移量。事务不断提交,二进制日志的偏移量也会不断的变化。需要从库告诉主库,自己明确复制到了偏移量的什么位置。
  • GTID: 全局事务ID,在一个集群内的一个GTID是唯一的, GTID=source_id:transcation_id,source_id为那一台机器上的,slave增量复制还未同步的GTID即可。
基于日志复制基于GTID
兼容性好与老版本不兼容
支持MMM与MHA架构仅支持MHA架构
准备切换后很难找到新的同步点基于事务ID复制,很方便的找到未完成的事务ID
可以方便的跳过复制操作只能通过置入空事务的方式跳过操作,会更复杂一点

建议优先使用GTID方式,可以更安全的进行故障转移。

主从复制延迟

产生延迟原因?

处理办法:

  1. 大事务:将大事务分为小事务,分批更新数据。
  2. 减少Slave的数量,不要超过5个,减少单次事务的大小。
  3. MySQL 5.7之后,可以使用多线程复制,使用MGR复制架构。

转载自:

显示全文