主页 > 手机  > 

简述mysql主从复制原理及工作过程,配置一主两从并验证

简述mysql主从复制原理及工作过程,配置一主两从并验证

MySQL内建的复制功能是构建大型,高性能应用程序的基础,通过将MySQL的某一台主机(master)的数据复制到其他主机(slaves)上,并重新执行一遍来执行,复制过程中一台服务器充当主服务器,而其他一个或多个其他服务器充当从服务器。

主从复制原理

主要基于MySQL二进制日志,主要包括三个线程(2个I/O线程,1个SQL线程)

1、Master将数据变化记录到二进制日志中; 2、Slave将Master的二进制日志拷贝到Slave的中继日志中; 3、Slave将中继日志中的事件在做一次,将数据变化,反应到自身(Slave)的数据库

详细步骤: 1、从库通过手工执行change master to 语句连接主库,提供了连接的用户一切条件(user 、password、port、ip),并且让从库知道,二进制日志的起点位置(file名 position 号); start slave 2、从库的IO线程和主库的dump线程建立连接。 3、从库根据change master to 语句提供的file名和position号,IO线程向主库发起binlog的请求。 4、主库dump线程根据从库的请求,将本地binlog以events的方式发给从库IO线程。 5、从库IO线程接收binlog events,并存放到本地relay-log中,传送过来的信息,会记录到master.info中 6、从库SQL线程应用relay-log,并且把应用过的记录到relay-log.info中,默认情况下,已经应用过的relay 会自动被清理purge

配置一主两从验证 环境准备

准备三台Linux机器,ip地址分别为192.168.106.11,192.168.106.12,192.168.106.13

其中192.168.106.11设置为master,另外两台设置为slave

三台主机均需安装mysql。

注意:如果是其中一台主机安装了mysql进行克隆,那么三台主机mysql的uuid会重复,会导致后续配置不成功

方式一:基于binlog的主从同步

主库配置:

在配置文件里添加server_id

[root@openEuler-1 ~]# vim /etc/my f

[root@openEuler-1 ~]# systemctl restart mysqld

创建并授权用户访问

mysql> create user rep@'192.168.106.%' identified with mysql_native_password by '123456';

mysql> grant replication slave on *.* to rep@'192.168.106.%';

查看

mysql> show master status; +---------------+----------+--------------+------------------+-------------------+ | File          | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set | +---------------+----------+--------------+------------------+-------------------+ | binlog.000002 |      682 |              |                  |                   | +---------------+----------+--------------+------------------+-------------------+

从库配置:

在配置文件里添加server_id

[root@openEuler-2 ~]# vim /etc/my f

[root@openEuler-2 ~]# systemctl restart mysqld.service  

[root@openEuler-3 ~]# vim /etc/my f

[root@openEuler-3 ~]# systemctl restart mysqld.service  

分别在两台主机配置

mysql> change master to     -> master_host='192.168.106.11',     -> master_user='rep',     -> master_password='123456',     -> master_log_file='binlog.000002',     -> master_log_pos=682; Query OK, 0 rows affected, 8 warnings (0.01 sec)  

启动

mysql> start slave;

查看从库是否配置成功:

Slave_IO_Running: Yes Slave_SQL_Running: Yes

两项均为Yes表示配置成功

方式二:基于gtid的主从同步配置

开启gtid

对三台主机分别进入配置文件添加

server_id=主机号

gtid_mode=ON enforce-gtid-consistency=ON

[root@openEuler-1 ~]# systemctl restart mysqld     #重启服务

主库配置:

创建并授权用户访问

mysql> create user rep@'192.168.106.%' identified with mysql_native_password by '123456';

mysql> grant replication slave on *.* to rep@'192.168.106.%';

#重新加载授权表

mysql> flush privileges;

从库配置:

分别在两台主机配置

mysql> change master to     -> master_host='192.168.106.11',     -> master_user='rep',     -> master_password='123456';  

启动并查看从库状态

均为yes表示成功

验证

在主库创建数据库,在从库上查看是否同步创建成功。

从库同步创建db1成功,主从同步配置完成。

标签:

简述mysql主从复制原理及工作过程,配置一主两从并验证由讯客互联手机栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“简述mysql主从复制原理及工作过程,配置一主两从并验证