mysql8主从配置

如图,主从同步的流程大致是从服务器有一个IO线程读取主服务的binlog日志,然后写入自己的relaylog,会有一个sql线程解析成sql去执行,先写到relaylog再去解析是利用了生产者消费者模型,达到一个异步的作用。


国际惯例,授之以鱼不如授之以渔,开始之前先告诉大家官方文档怎么去查
地址:https://dev.mysql.com/doc/refman/8.0/en/grant.html#grant-privileges

首先我们准备两个装有mysql8的虚拟机,可以安装好一个然后克隆。
我的是192.168.1.8和192.168.1.9
1.8做主服务器,1.9做从


我们先来做主服务器的工作
配置文件配置如下:



可以对这三个参数做一个解释,看官方文档:
大致意思就是必须在源和副本上设置这个唯一的server-id,范围是 2的32次方 − 1.


log_bin 是binlog日志文件名
log_bin_index就是索引文件

配置好以后重启mysql服务

接下来我们创建一个用户专门用来做读取主服务器二进制文件

  •  mysql -u root -p
     create user replication_user IDENTIFIED BY '[email protected]';
     grant REPLICATION SLAVE on *.* to 'replication_user'@'%';
     alter user 'replication_user'@'%' IDENTIFIED WITH mysql_native_password BY '[email protected]';
     flush privileges;
    

查看一下主服务器状态和二进制文件



接下来是从服务器

打开从服务器relay日志



重启MySQL
systemctl restart mysqld
然后通过命令设置主服务的信息:
分别就是主服务的地址,二进制文件名,用户和密码,都是上面设置好的

  • change master to 
    master_host='192.168.1.8',
    master_port=3306,
    master_user='replication_user', 
    master_password='[email protected]',
    master_log_file='master_bin.000002',
    master_log_pos=0;
    
    start  slave;
    

查看状态,我这里分别有两个错误

  •  show slave  status   \G;
    

第一次是密码加密方式的问题,按上面创建用户的方式做,不会有这个问题


图片.png

第二次是server—uuid和主服务器重复,因为我的从是克隆过来的,所以重复了,


图片.png

需要修改数据目录下的auto.cnf,你的数据目录看配置文件在哪里,我的是

在这个目录下找到auto.cnf


然后我们在查看从的状态:
先stop slave;
再start slave;
看到Waiting for master to send event说明没问题了,再等待主服务的事件


接下来就是测试啦

我们在主服务上创建一个库,创建一个表,看是否能够同步过来
好的,没有问题,大功告成


下一篇文章我会介绍如何通过Spring实现数据源切换,从而实现读写分离!欢迎再来!

你可能感兴趣的:(mysql8主从配置)