环境:
1.Centos7,yum安装的MySQL8.0
2.准备好两台虚拟机,都关掉firewalld和selinux。
Server1
Server2
3.将两台虚拟机上安装好MySQL8.0,在实验之前确保两个数据库的数据是一致的,最好是两台干净的数据库
实验
一、在Server1和Server2上的相同操作
1.编辑/etc/my.cnf文件,在[mysqld]下面添加下面代码
注意:下面的server-id的值要唯一,两台机器的server-id要不一样!!!
server-id=2
log_bin=mysql-bin
binlog_format=ROW
gtid_mode=ON
enforce_gtid_consistency=ON
log_slave_updates=1
sync_binlog=1
二,分别创建用户
1.登录Server1的数据库创建一个用户并授权
创建用户Tom
CREATE USER 'Tom'@'%' IDENTIFIED BY 'Huge@666';
授权
GRANT REPLICATION SLAVE ON *.* TO 'Tom'@'%';
修改一下认证,8.0比5.7特殊
ALTER USER 'Tom'@'%' IDENTIFIED WITH 'mysql_native_password' BY 'Huge@666';
刷新权限
FLUSH PRIVILEGES;
2.登录Server2的数据库创建一个用户并授权
创建用户Jary
CREATE USER 'Jary'@'%' IDENTIFIED BY 'Huge@666';
授权
GRANT REPLICATION SLAVE ON *.* TO 'Jary'@'%';
修改一下认证
ALTER USER 'Jary'@'%' IDENTIFIED WITH 'mysql_native_password' BY 'Huge@666';
刷新权限
FLUSH PRIVILEGES;
二、继续互为主从的连接
1.在Server1上的MySQL中执行下面SQL语句
CHANGE MASTER TO
MASTER_HOST='填Server2的ip',
MASTER_USER='Jary',
MASTER_PASSWORD='Jary的密码',
MASTER_AUTO_POSITION=1;
START SLAVE;
2.在Server2上的MySQL中执行下面SQL语句
CHANGE MASTER TO
MASTER_HOST='填Server1的ip',
MASTER_USER='Tom',
MASTER_PASSWORD='Tom的密码',
MASTER_AUTO_POSITION=1;
START SLAVE;
三、查看是否成功
分别在两数据库中执行下面SQL,看 Slave_IO_Running: Yes 和 Slave_SQL_Running: Yes,如果都为yes说明成功
show slave status\G;
eg: