MySQL8主从复制(一主一从)配置搭建详解
MySQL主从复制在实际Java应用开发中经常会遇到,在实操搭建一主一从的配置之前,我们需要做好一定的前期准备。今天潘老师带大家一起学习下MySQL8如何快速搭建一主一从实时热备的配置详解。
前言
建议同学最好先去了解下mysql主从复制的原理,对我们的实验也会更有帮助。下面我们进入搭建步骤。
一、准备两台虚拟机服务器
这里潘老师是用VMware安装的CentOS7系统两台虚拟机。然后分别设置两台虚机的静态ip,我这里如下:
名称 | IP |
服务器A-主库 | 192.168.100.111 |
服务器B-从库 | 192.168.100.112 |
二、分别安装mysql
这个想必大家都已经装好了数据库,就不再赘述了。
三、配置步骤
我们重点来看下,MySQL8主从复制的配置步骤:
1、先配置主库
1)在 /etc/my.cnf
mysql核心配置文件的[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.cnf
mysql核心配置文件的[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主从复制(一主一从)配置搭建详解,是不是非常的简单,但是有很多配置项还是值得深入去了解和学习的,继续加油吧!