MySQL主从复制在实际Java应用开发中经常会遇到,在实操搭建一主一从的配置之前,我们需要做好一定的前期准备。今天潘老师带大家一起学习下MySQL8如何快速搭建一主一从实时热备的配置详解。

前言

建议同学最好先去了解下mysql主从复制的原理,对我们的实验也会更有帮助。下面我们进入搭建步骤。

一、准备两台虚拟机服务器

这里潘老师是用VMware安装的CentOS7系统两台虚拟机。然后分别设置两台虚机的静态ip,我这里如下:

名称IP
服务器A-主库192.168.100.111
服务器B-从库192.168.100.112

二、分别安装mysql

这个想必大家都已经装好了数据库,就不再赘述了。

三、配置步骤

我们重点来看下,MySQL8主从复制的配置步骤:

1、先配置主库

1)在 /etc/my.cnfmysql核心配置文件的[mysqld]节点内,新增如下配置:

 server-id=1 #服务器 id,随意,但要唯一 log-bin=mysql-bin #二进制文件存放路径 binlog-do-db=scada #待同步的数据库日志 binlog-ignore-db=mysql #不同步的数据库日志 

ps:在主从库中分别建一个你需要同步的测试库,比如我这里创建的库叫scada,然后在这两个库中分别建一个测试表,都是空表即可。

2)创建专门用于主从复制用户账号。因此使用root账户登录mysql,并执行一些指令:

 #登录 mysql -u root -p密码 #创建用户 我这里用户名为copyuser,注意这里的ip是从库服务器的ip CREATE USER 'copyuser'@'192.168.100.112' IDENTIFIED WITH mysql_native_password BY '123456'; #给主从复制账号授权 grant replication slave on *.* to 'copyuser'@'192.168.100.112'; 

3)重启主库的mysql

 service mysqld restart 

4)再次登录mysql,使用如下指令查看master的状态:

 show master status; 

结果类似如下:我们需要关注File和Position的信息,后面要用到。

2、再配置从库

1)同样的,我们在 /etc/my.cnfmysql核心配置文件的[mysqld]节点内,新增如下配置:

 server-id=2 #服务器 id,随意,但要唯一 log-bin=mysql-bin #二进制文件存放路径 replicate-do-db=scada #待同步的数据库 replicate-ignore-db=mysql,information_schema,performance_schema #不同步的数据库 

以上面主库配置相比,就是除了server-id不一样,这里还需要配置replicate-do-db和replicate-ignore-db,注意不是日志。
2)然后我们重启从库的mysql

 service mysqld restart 

3)最后实现主从同步,在从库具体配置如下:

 #1,先登录mysql,然后执行后续代码 mysql -u root -p密码 #2,关闭从库 stop slave; #3,设置同步,注意这里是主库ip,日志名称和位置是我们之前上图中看到的名称和位置 change master to master_host='192.168.100.111',master_user='copyuser',master_password='123456',master_log_file='mysql-bin.000002',master_log_pos=157; #4,开启从库 start slave; # 5,检查服务器状态 show slave status G; 

检测服务器状态正常情况下

看到Replica has read all relay log; waiting for more updates基本说明配置成功了,已经开始了主从复制。如果的你的有问题,请看最后的一些常见问题解答。

四、测试主从MySQL8复制功能

测试就非常简单了,在主库的表中新增一条数据,然后打开从库的对应表,发现也有了一样的记录数据,说明就复制成功了。

五、可能出现的错误问题解答

有可能出现在检测服务器状态时的错误如下:

这个原因就是因为你在创建主从MySQL数据库时可能为了图省事直接将虚拟机复制过去的,导致主从库的UUID一致,具体可以通过登录mysql,然后执行如下指令查看:

 show variables like '%server_uuid%'; 

你会发现两个库的UUID是一样的,我们只要打开主库MySQL安装的data目录下的auto.cnf文件,修改下server-uuid的值,然后重启下主库,然后到从库根据重启后的主库的当前日志file和position重新执行下change master的流程就行了。

总结

好了,以上就是MySQL8主从复制(一主一从)配置搭建详解,是不是非常的简单,但是有很多配置项还是值得深入去了解和学习的,继续加油吧!