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

目录

前言

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

二、分别安装mysql8

三、配置步骤

1. 先配置主服务器

2. 再配置从服务器

四、测试主从复制功能

前言

MySQL主从复制在实际Java应用开发中经常会遇到,记录一下如何快速搭建一主一从实时热备的配置。


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

我这里是用VMware克隆的2台机器。

操作系统:ubuntu 20.04

数据库:mysql 8.0.32

名称

IP
Mysql服务器-master192.168.1.10
Mysql服务器-slave192.168.1.20

二、分别安装mysql8

mysql 8的安装步骤这里就忽略了,大家可以网上找找。我这里是先在一台虚拟机上装好mysql后,再克隆到出另一台虚拟机的,所以启动机器后,需要修改mysql的UUID,否则后面会报错。修改方法:

  • 使用find / -name auto.cnf命令,找到mysql的auto.cnf文件
  • 我这里在/var/lib/mysql目录下
  • vim /var/lib/mysql/auto.cnf
  • 将两台机器的UUID改成不一样就行

然后在两台机器上,分别创建数据库test和表user,两个表的数据字段要一样,最好是在一台机器上创建好后,再sql导出并导入到另一台机器。

三、配置步骤

1. 先配置主服务器

1)在 /etc/mysql/mysql.conf.d/mysqld.cnf的核心配置文件的[mysqld]节点内,移动光标到文件最底端,修改并新增配置:

server-id = 1    #服务器 id,随意,但要唯一
log_bin = /var/log/mysql/mysql-bin.log    #二进制文件存放路径
read-only = 0    #[可选] 0(默认)表示读写(主机),1表示只读(从机)
binlog_expire_logs_seconds = 2592000    #设置日志文件保留的时长,单位是秒
max_binlog_size = 100M    #控制单个二进制日志大小。此参数的最大和默认值是1GB
binlog_do_db = test    #待同步的数据库日志
binlog_ignore_db = mysql,sys    #不同步的数据库日志

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

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

3)重启主库的mysql

service mysqld restart

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

show master status;

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

2. 再配置从服务器

1)在 /etc/mysql/mysql.conf.d/mysqld.cnf的核心配置文件的[mysqld]节点内,移动光标到文件最底端,修改并新增配置:

server-id = 2    #服务器 id,随意,但要唯一
log_bin = /var/log/mysql/mysql-bin.log    #二进制文件存放路径
read-only = 1    #[可选] 0(默认)表示读写(主机),1表示只读(从机)
binlog_expire_logs_seconds = 2592000    #设置日志文件保留的时长,单位是秒
max_binlog_size = 100M    #控制单个二进制日志大小。此参数的最大和默认值是1GB
replicate_do_db = test    #待同步的数据库日志
replicate_ignore_db = mysql,sys    #不同步的数据库日志

2)然后我们重启从库的mysql

service mysqld restart

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

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

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

看到Replica has read all relay log; waiting for more updates基本说明配置成功了,已经开始了主从复制。

四、测试主从复制功能

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


  • 5
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值