MySQL8主从复制(一主一从)配置搭建详解

Java技术 潘老师 2年前 (2022-02-17) 2852 ℃ (0) 扫码查看

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

前言

建议同学最好先去了解下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主从复制(一主一从)配置搭建详解,是不是非常的简单,但是有很多配置项还是值得深入去了解和学习的,继续加油吧!


版权声明:本站文章,如无说明,均为本站原创,转载请注明文章来源。如有侵权,请联系博主删除。
本文链接:https://www.panziye.com/java/4408.html
喜欢 (0)
请潘老师喝杯Coffee吧!】
分享 (0)
用户头像
发表我的评论
取消评论
表情 贴图 签到 代码

Hi,您需要填写昵称和邮箱!

  • 昵称【必填】
  • 邮箱【必填】
  • 网址【可选】