全网最详细的MySQL8在centos7下互为主从配置步骤及验证

环境
node1:192.168.8.170
node2:192.168.8.171
mysql版本:8.0.22

一.安装mysql 两台均执行
1.wget https://repo.mysql.com//mysql80-community-release-el7-3.noarch.rpm
下载mysql8 rpm包

2.rpm -ivh mysql80-community-release-el7-3.noarch.rpm
安装下载的rpm

3.yum install -y mysql-community-server
安装mysql-community-server

二.配置my.cnf
1)node1配置
vi /etc/my.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
#末尾添加以下两行
#binlog日志文件名
log-bin=mysql-bin
#唯一id
server-id=1

2)node2配置
vi /etc/my.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
#末尾添加以下两行
#binlog日志文件名
log-bin=mysql-bin
#唯一id
server-id=2

三.重启并配置同步
1)node1配置
1.service mysqld start
若启动报错 需rm /var/lib/mysql 再启动服务

2.grep “password” /var/log/mysqld.log
查询mysql预设的root密码 [email protected]: $密码

3.mysql -uroot -p$密码
4.>ALTER USER ‘root’@‘localhost’ IDENTIFIED WITH mysql_native_password BY ‘[email protected]’;
修改root密码

5.>create user ‘slave’@’%’ identified WITH mysql_native_password by ‘[email protected]’;
创建用于同步的用户 slave

6.>update user set host = ‘%’ where user = ‘root’;
允许远程机器连接 %可指向特定ip

7.>grant replication slave on . to ‘slave’@’%’ ;

8.>grant all on . to ‘slave’@’%’ ;
授权slave用户权限

9.>flush privileges;
刷新权限

此时node1已经配置完成
为了保证数据一致性,首先需要同步数据,简单方式,就直接拷贝整个数据文件夹到node2
通过scp传输 node1的datadir,也就是配置文件中配置的 /var/lib/mysql

10.tar -zcvf data.tar.gz /var/lib/mysql
压缩

11.scp data.tar.gz [email protected]:/home
scp传输到node2的home目录

2)node2配置
1.mkdir /var/lib/mysql.bak
创建数据备份目录

2.mv /var/lib/mysql/* /var/lib/mysql.bak
备份数据

3.cd /home

4.tar -zxvf data.tar.gz
解压数据文件包

5.mv var/lib/mysql/ /var/lib/mysql/
恢复数据

6.vi /var/lib/mysql/auto.cnf
#此时需要修改datadir中auto.cnf中保存的server_uuid server_uuid不能一致,可以只改末尾一个字符

7.service mysqld start

8.mysql -uroot -p$密码(node1密码)

9.>show master status;
重点看 File 、position两列 (后边用)

1)node1配置
1.mysql -uroot [email protected]
2.>change master to MASTER_HOST=‘node2IP’,MASTER_PORT=3306,MASTER_USER=‘slave’,MASTER_PASSWORD=‘[email protected]’,MASTER_LOG_FILE=‘mysql-bin.000001’,MASTER_LOG_POS=156;
master_log_file、master_log_pos 为node2中show master status; 查询到的结果
3.>show master status; 重点看 File 、position两列

2)node2配置

change master to MASTER_HOST=‘node1IP’,MASTER_PORT=3306,MASTER_USER=‘slave’,MASTER_PASSWORD=‘[email protected]’,MASTER_LOG_FILE=‘mysql-bin.000001’,MASTER_LOG_POS=156;
master_log_file、master_log_pos 为node1中show master status; 查询到的结果

四.查看是否配置成功 两台均执行
1.mysql -uroot [email protected]
登录数据库

2.>start slave;
开启同步

3.>show slave status\G;
查看同步状态
全网最详细的MySQL8在centos7下互为主从配置步骤及验证

两项都为Yes则为正常

注:Slave_IO_Running #显示I/O线程是否被启动并成功地连接到主服务器上,成功为Yes,否则为No。
Slave_SQL_Running #显示SQL线程是否被启动,启动为Yes,否则为No。

五.验证
两台均执行
1.mysql -uroot -p密码
2.show databases;
查看数据库

1)添加数据验证
在node1上创建数据库,看node2是否同步,
1.create database aaa;
创建数据库

在node1上建表,看node2是否同步,

2.use aaa;
进入aaa数据库

3.create table test (学号 char(9),姓名 char(10),年龄 smallint) character set = utf8mb4;
创建test表并添加字段

4.insert into test (学号,姓名,年龄) values ( ‘03’ , ‘张三’ ,23);
插入数据

5.select * from test;
查看数据

在node2上查看数据是否同步
1.use aaa;
进入aaa数据库

2.select * from test;
查看test数据表数据是否与node1一至

2)删除数据验证
在node2上删除test数据,看nide1是否同步

1.delete from test;
删除数据

2.select * from test;
查看数据为空

结束