MySQL主从复制原理及其工作过程
- 电脑硬件
- 2025-08-27 14:00:02

一、MySQL主从复制原理
MySQL 主从复制是一种将数据从一个 MySQL 数据库服务器(主服务器,Master)复制到一个或多个 MySQL 数据库服务器(从服务器,Slave)的技术。以下简述其原理,主要包含三个核心组件和三个主要步骤:
核心组件二进制日志(Binary Log):位于主服务器上,主服务器会将所有对数据库进行更改的操作(如 INSERT、UPDATE、DELETE 等)以二进制的形式记录到二进制日志文件中。这些日志记录了数据修改的具体内容和执行顺序,是主从复制的基础数据来源。
中继日志(Relay Log):存在于从服务器上,从服务器通过 I/O 线程从主服务器的二进制日志中读取更新事件,并将这些事件写入到本地的中继日志文件中。中继日志起到了缓存和中转的作用,确保从服务器能够按顺序处理主服务器的更新。
SQL 线程:从服务器上的 SQL 线程负责读取中继日志中的事件,并将这些事件在从服务器上重新执行一遍,从而实现主从数据的同步。
工作步骤1. 主服务器记录二进制日志
当主服务器上发生数据更改操作(如插入、更新、删除数据)时,MySQL 会将这些更改操作记录到二进制日志中。二进制日志以事件(Event)的形式存储,每个事件对应一个具体的数据库更改操作。例如,当执行一条 INSERT 语句向表中插入数据时,主服务器会将该 INSERT 操作作为一个事件记录到二进制日志中。2. 从服务器读取主服务器二进制日志
从服务器上有一个 I/O 线程,它会与主服务器建立连接,并请求主服务器发送其二进制日志。主服务器接收到请求后,会将二进制日志中的更新事件发送给从服务器的 I/O 线程。从服务器的 I/O 线程将接收到的更新事件写入到本地的中继日志中。3. 从服务器执行中继日志中的事件
从服务器上的 SQL 线程会不断地监控中继日志,当发现中继日志中有新的事件时,会按照事件的顺序依次读取并执行这些事件。例如,如果中继日志中记录了一个 INSERT 事件,SQL 线程会在从服务器的相应表中执行相同的 INSERT 操作,从而保证从服务器的数据与主服务器的数据一致。 二、MySQL主从复制步骤注意:firewall-cmd和getenforce处于关闭状态
1、基于binlog的主从同步Master配置
[root@openEuler-1 ~]# yum install -y mysql-server #配置文件(主机克隆),注意://三台主从库的id必须不同 #查看命令 vim /var/lib/mysql/auto f [root@openEuler-1 ~]# vim /etc/my f.d/mysql-server f server_id=1 [root@openEuler-1 ~]# systemctl restart mysqld #授权用户 mysql> create user rep@'192.168.159.%' identified with mysql_native_password by 'MySQL@123'; mysql> grant replication slave on *.* to rep@'192.168.159.%'; mysql> show master status; //查看主服务器状态,日志用于从服务器同步,position是当前定位 Slave配置 #配置文件 [root@openEuler-2 ~]# vim /etc/my f.d/mysql-server f [root@openEuler-2 ~]# systemctl restart mysqld [root@openEuler-3 ~]# vim /etc/my f.d/mysql-server f [root@openEuler-3 ~]# systemctl restart mysqld [root@openEuler-3 ~]# #设置复制参数,两个Slave一样的配置 mysql> change master to -> master_host='192.168.159.133', -> master_user='rep', -> master_password='MySQL@123', -> master_log_file='binlog.000004', -> master_log_pos=1565; Query OK, 0 rows affected, 9 warnings (0.03 sec) #启动复制进程,两个Slave都启动 mysql> start slave; Query OK, 0 rows affected, 1 warning (0.02 sec) 检查从库状态 mysql> show slave status \G 2、 基于gtid的主从同步配置准备工作,停止从库的复制
stop slave Master配置 #修改配置文件 [root@Master ~]# vim /etc/my f.d/mysql-server f #在最后添加 gtid_mode=ON enforce-gtid-consistency=ON #重启MySQL服务 [root@Master ~]# systemctl restart mysqld.service #重置二进制日志和GTID mysql> reset master; #创建用户授予权限 mysql> create user rep@'192.168.159.%' identified with mysql_native_password by 'MySQL@123'; mysql> grant replication slave on *.* to rep@'192.168.159.%'; #重新加载授权表 mysql> flush privileges; Slave配置 #修改配置文件 [root@Slave1 ~]# vim /etc/my f.d/mysql-server f gtid_mode=ON enforce-gtid-consistency=ON #重启服务 [root@Slave1 ~]# systemctl restart mysqld.service #配置连接到主库 mysql> change replication source to -> source_host='192.168.159.133', -> source_port=3306, -> source_user='rep', -> source_password='MySQL@123', -> source_auto_position=1; mysql> start replica; 检查从库状态 mysql> show slave status \GMySQL主从复制原理及其工作过程由讯客互联电脑硬件栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“MySQL主从复制原理及其工作过程”
上一篇
ROS2--动作通信