mysql 主从同步原理及其工作过程

简述mysql 主从同步原理及其工作过程,配置一主两从并验证。

一、主从同步的原理:

1. Slave数据库会开启两个线程(I/O线程和SQL线程)。

        I/O线程用于接收Master端的二进制日志(binlog),并将这些日志写入本地的relay log(中继日志)中。

        SQL线程则读取本地的relay log,并执行其中的SQL语句,从而在Slave数据库上重放这些操作。

2. 当Master数据库进行了数据更改后,这些更改首先会被记录在binlog日志中。然后,Master数据库的Dump线程(也称为Binlog Dump线程)会将这些binlog日志推送给Slave数据库。

3. 在Slave数据库内,接收到的binlog日志会被写入relay log(中继日志)中。

4. Slave数据库中的SQL线程会读取relay log中的日志,并执行其中的SQL语句,从而在Slave数据库上重放这些操作,实现数据的同步。

二、基于binlog的主从同步

配置之前cat /var/lib/mysql/auto.cnf  (两个机的内容不一样)

(1)主库操作
1.vim  /etc/my.cnf.d /mysql-server.cnf:配置主配置文件,添加一个server_id

可以添加一条:log-bin=mysql-bin:用于手动添加mysql的日志存放信息

2.在数据库中创建用户,以及授权,修改master库的密码加密方式

3.查看主配置状态:show master status;

4.systemctl stip firewalld:关闭防火墙

5.setenforce 0:关闭selinux

(2)从库操作:show slave status \G;

1.vim  /etc/my.cnf.d /mysql-server.cnf:配置主配置文件,添加一个server_id

2.在从mysql上进行部署,连接主库

注释:从库指向主库创建的host,用户名,密码,二进制文件,以及节点

3.start  slave:开启主从

4.systemctl stop firewalld

5.setenforce 0

6.show slave status \G:检测是否成功

(3)测试:

主库创建数据库:create database master;

从库:

三、基于gtid的主从同步

前提:若是使用了binlog,则需要先暂停slave:stop slave

(1)主库操作

1.vi /etc/my.cnf.d/mysql-server.cnf 

2.systemctl  restart mysqld

(2)从库操作

1.vi /etc/my.cnf.d/mysql-server.cnf 

测试是否开启

3.在数据库上进行跟主部署(关闭slave,配置内容,开启slave)

这里master_auto_position为 1 表示使用 GTID 自动定位。

四。如果仅想让主库进行操作数据,而从库仅读取操作:

 vi /etc/my.cnf.d/mysql-server.cnf 进行添加内容

五。mysql的并行复制:

查看slave线程信息:show processlist;

默认情况下slave中使用的是sql单线程回放

在master中多用户读写,如果使用sql单线程回放那么会造成组从延迟严重

开启mysql的多线程回放可以解决以上问题

 vi /etc/my.cnf.d/mysql-server.cnf 进行添加内容

效果展示:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值