2023-10-24 05:15:15
MySQL 主从复制详解
MySQL主从复制是MySQL数据库提供的一种高可用性和高性能解决方案,通过实现负载均衡和读写分离,可以有效提升数据库的处理能力和数据安全性。以下是对MySQL主从复制的详细解析。
一、简介
随着业务的增长,单台数据服务器已经无法满足需求,负载过重可能导致宕机,进而造成数据丢失。MySQL自带的主从复制功能可以帮助我们实现负载均衡和读写分离,主服务器(Master)主要负责写操作,从服务器(Slave)主要负责读操作,从而减轻压力,提高效率。
二、形式
MySQL主从复制有多种形式,包括一主一从、一主多从、多主一从、双主复制和级联复制等。
一主一从:一个主服务器和一个从服务器,结构简单,易于管理。

一主多从:一个主服务器和多个从服务器,可以实现更高的并发能力和更强的数据冗余。

多主一从:多个主服务器和一个从服务器,可以将多个MySQL数据库的数据备份到一台存储性能较好的服务器上。

双主复制:两个主服务器互为主从,任何一方所做的变更都会通过复制应用到另外一方的数据库中。

级联复制:部分从服务器的数据同步不连接主节点,而是连接从节点,以缓解主节点的压力,并对数据一致性没有负面影响。

三、原理
MySQL主从复制是基于主服务器在二进制日志(binlog)中跟踪所有对数据库的更改。要进行复制,必须在主服务器上启用二进制日志。每个从服务器从主服务器接收已经记录到日志的数据,并在主服务器上执行相同的更新。从服务器执行备份不会干扰主服务器,主服务器可以继续处理更新。
四、过程
MySQL的主从复制工作过程大致如下:

五、类型
MySQL主从复制有多种类型,包括异步复制、同步复制、半同步复制和延迟复制等。
异步复制:主库执行完事务后立即返回给客户端,不等待从库接收并处理。这种方式可能导致数据丢失。

同步复制:主库执行完事务后,等待所有从库都复制了该事务并成功执行完才返回成功信息给客户端。这种方式性能较差。
半同步复制:在异步复制的基础上,确保主库上的事务在提交之前至少有一个从库已经收到该事务并日志记录下来。这种方式提高了数据的安全性,但也会造成一定程度的延迟。
延迟复制:在异步复制的基础上,人为设定主库和从库的数据同步延迟时间。
六、方式
MySQL主从复制支持两种不同的日志格式,这两种日志格式也对应了各自的复制方式:语句复制、行数据复制和混合类型的复制。
语句复制:基于语句的复制相当于逻辑复制,即二进制日志中记录了操作的语句。这种方式简单,二进制文件小,但依赖于其他因素,如时间戳等。
行数据复制:基于行的复制相当于物理复制,即二进制日志中记录的实际更新数据的每一行。这种方式比基于语句的复制更精确,但复制压力大,日志占用空间大。
混合类型的复制:默认情况下,采用基于语句的复制,一旦发现基于语句无法精确复制时,就会采用基于行的复制。
七、配置
MySQL主从复制的配置要点包括:
八、问题与解决方法
延迟:当主库的TPS并发较高时,由于主库是多线程写入的,而从库的SQL线程是单线程的,可能导致从库SQL跟不上主库的处理速度。解决方法包括优化网络、提升从库硬件配置、尽量使MySQL操作在内存中完成、使用并行复制等。
数据丢失:当主库宕机后,数据可能丢失。解决方法是使用半同步复制。
九、注意事项
十、作用
MySQL主从复制带来了很多好处,包括:
十一、应用场景
MySQL主从复制集群功能使得MySQL数据库支持大规模高并发读写成为可能,同时有效地保护了物理服务器宕机场景的数据备份。具体应用场景包括: