MySQL的主从复制
MySQL的主从复制是一种数据库复制技术,用于实现数据在多个MySQL服务器之间的同步。
- 在主从复制中,有一个主数据库(称为主服务器,或主库,master)和一个或多个从数据库(称为从服务器,或从库,slave)。主库负责接收和处理所有的写操作(如插入、更新、删除),而从库则复制主服务器上的数据,并将其应用到自己的数据库中。
- 底层是基于MySQL数据库自带的二进制日志功能。
就是从库对主库进行日志的复制然后再解析日志并应用到自身,最终实现从库的数据和主库的数据保持一致。 - MySQL主从复制是MySQL数据库自带功能,无需借助第三方工具
- 注意主从复制是异步的,意味着主库和从库之间可能存在着延迟,
MySQL复制过程分成三步:
- master将变更记录到二进制日志(binary log)
- slave将master的binary log拷贝到它的中继日志(relay log)
- slave重做(replay)中继日志中的事件,将改变应用到本库中
主库把增删改查操作记录到本库日志中,从库把主库日志写入到relay log日志中,最后从库执行relay log中的操作,将更新的内容写入到从库的数据库。
主从复制的特点
主从复制的优点
-
高性能方面:主库负责处理事务性的写操作,从库负责处理查操作,能够有效的避免由数据更新导致的行锁,使得整个系统的查询性能得到极大的改善
-
安全性方面:从库可以用作主库的备份,以防止数据丢失或损坏。在主库发生故障时,可以将从库提升为新的主库,从而实现快速的恢复
-
可靠性方面:主从在对外提供服务的时候,若是主库挂了,会有通过主从切换,选择其中的一台Slave作为Master;若是Slave挂了,还有其它的Slave提供读服务,提高了系统的可靠性和稳定性
主从复制的问题
- 主库发生宕机时,从库得到数据可能丢失
- 在主库并发运行查询时,从库只能串行化执行,因为从库只有一个SQL线程重做中继日志中的事件,导致性能变差。