一、环境准备
准备好2台虚拟机,并且都需要关闭防火墙
每台虚拟机上都已经安装好mysql8.0.25,安装过程参考本人之前的centos7安装mysql8.0.25
如果准备的另一台虚拟机是克隆过来的,需要修改uuid,如果不是略过下方步骤
# eth33 是网卡名
uuidgen eth33
修改 MySQL Server 的 UUID 方式
vim /var/lib/mysql/auto.cnf
修改完重启mysql服务
systemctl restart mysqld
二、master节点配置文件
修改配置mysql文件
vim /etc/my.cnf
[mysqld]
# 以下是增加的配置
server-id=1 # [必须] 主服务器唯一ID
log-bin=binlog # [必须] 启用二进制日志,指名路径。比如:自己本地的路径/log/mysqlbin
binlog_format=STATEMENT
重启mysql服务
systemctl restart mysqld
三、slave节点配置文件
编辑mysql配置文件
vim /etc/my.cnf
[mysqld]
# 以下是增加的配置
server-id=2 # [必须] 从服务器唯一ID
relay-log=mysql-relay #[可选] 启用中继日志
重启mysql服务
systemctl restart mysqld
四、master节点配置
创建用户并授权
mysql -uroot -p
CREATE USER 'slave'@'%' IDENTIFIED BY '123456';
GRANT REPLICATION SLAVE ON *.* TO 'slave'@'%';
ALTER USER 'slave'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
FLUSH PRIVILEGES;
查看master的状态,并记录File和Position的值
SHOW MASTER STATUS;
注意:执行完此步骤后 不要再操作主服务器上的 MySQL
,防止主服务器的状态值发生变化。
五、slave节点配置
开启复制,值替换为自己的配置
mysql -uroot -p
CHANGE MASTER TO
MASTER_HOST='192.168.85.131',
MASTER_USER='slave',
MASTER_PASSWORD='123456',
MASTER_LOG_FILE='binlog.000003',
MASTER_LOG_POS=1133;
启动slave同步
START SLAVE;
查看同步状态
SHOW SLAVE STATUS\G;
如果失败可执行SLAVE RESET命令重新同步一次
RESET SLAVE; # 删除 SLAVE 数据库的 relay log 日志文件,并重新启用新的 relay log 文件
六、验证
主库新建库、新建表、插入记录,从机复制:
CREATE DATABASE IF NOT EXISTS dbtest CHARACTER SET 'utf8mb4' COLLATE 'utf8mb4_general_ci';
USE dbtest;
CREATE TABLE student(id INT,`name` VARCHAR(16));
INSERT INTO student VALUES(1, '张三');
INSERT INTO student VALUES(2, '李四');
从节点查看
USE dbtest;
SELECT * FROM student;
七、停止主从复制
# 在从机执行
STOP SLAVE;
如果报错,可进行重置操作
# 在从机执行
STOP SLAVE;
# 在从机执行
RESET SLAVE; # 删除 SLAVE 数据库的 relay log 日志文件,并重新启用新的 relay log 文件
# 在主机执行
RESET MASTER; #删除 Master 中所有的 bing log 文件,并将日志索引文件清空,重新开始所有新的日志文件(慎用)