目录
前言
一、准备两台虚拟机服务器
二、分别安装mysql8
三、配置步骤
1. 先配置主服务器
2. 再配置从服务器
四、测试主从复制功能
前言
MySQL主从复制在实际Java应用开发中经常会遇到,记录一下如何快速搭建一主一从实时热备的配置。
一、准备两台虚拟机服务器
我这里是用VMware克隆的2台机器。
操作系统:ubuntu 20.04
数据库:mysql 8.0.32
名称 | IP |
Mysql服务器-master | 192.168.1.10 |
Mysql服务器-slave | 192.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基本说明配置成功了,已经开始了主从复制。
四、测试主从复制功能
测试就非常简单了,在主服务器的表中新增一条数据,然后打开从服务器的对应表,发现也有了一样的记录数据,说明就复制成功了。