MYSQL主从同步

一、原理

MySQL主从复制是基于事件的复制机制,核心是将主服务器上的数据更改(如插入、更新、删除等)复制到从服务器上。这一过程主要依赖于二进制日志(Binary Log)。

  • 二进制日志(Binary Log):主服务器记录所有对数据库的更改(如INSERT、UPDATE、DELETE操作)到二进制日志中。该日志是基于事件的,记录了对数据库的所有修改操作。

二、工作过程

主从复制是一个异步的过程,其中涉及三个关键的线程:主服务器的IO线程、从服务器的IO线程和从服务器的SQL线程。具体的工作流程如下:

  1. 主服务器记录日志:所有对数据库的数据更改都会记录到主服务器的二进制日志中。
  2. 从服务器请求日志:从服务器的IO线程定期向主服务器请求二进制日志的更新。
  3. 主服务器发送日志:主服务器收到从服务器IO线程的日志请求后,其IO线程会将二进制日志内容以及位置(position)返回给从服务器IO线程。
  4. 从服务器写入中继日志:从服务器收到二进制日志内容后,将其写入本地的中继日志(Relay Log)中,并创建一个文件记录主服务器的信息,包括IP地址、用户名、密码、二进制日志名称和位置。
  5. 从服务器执行日志:从服务器的SQL线程实时监控中继日志的内容是否有更新,解析文件内容生成SQL语句,并在从服务器的数据库中执行这些操作,从而实现数据同步。

在这个过程中,主服务器负责处理所有的写操作和事务,而从服务器则通过读取主服务器的二进制日志来获取数据更改信息,并将这些更改应用到自身的数据库中。

        前置条件:mysql服务存在并且建议版本相同

在这里我准备了三台设备,IP分别为192.168.75.141/142/143

其中将141作为主,142和143作为从

三、基于binlog的主从同步

主库配置:

1、配置server_id

vim /etc/my.cnf

2、启动mysql服务

systemctl enable --now mysqld

3、创建一个授权用户

create user rep@'192.168.75.%' identified with mysql_native_password by '123456';

用户授权 

grant replication slave on *.* to rep@'192.168.75.%';

4、查看当前 binlog日志名和 position 

由于当前环境下没有自主创建的数据库,则不需要备份。以上就是主库的配置

从库配置:

1、前两步与从库相同,在/etc/my.cnf 下写入server_id 注意id不能相同

2、在从库上配置

3、开启主从

4、查看状态,有两个yes则为成功

至此主从配置完成

验证方法 :在主库中创建一个数据库,查看从库中是否存在

主库:

从库:

 

由此可见主从同步创建成功

四、基于gtid的主从同步配置

1、与binlog相似,在/etc/my.cnf 下写入:

gtid_mode=ON
enforce-gtid-consistency=ON

重启数据库

systemctl restart mysqld

 2、从库操作与主库相同 写入并重启mysql服务

3、检查gtid是否生效

4、在主库中查看binlog日志名和position

5、从库配置:(两个从库配置相同,如果是在第一个方法的基础上做此方法,需要事先停止主从服务)

stop slave;

检查配置是否成功 

验证:主库创建名为gt1的数据库

 

检查从库是否存在

 从库存在则证明配置成功。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值