一、准备环境
准备好三台centos虚拟机,并搭建好mysql,开放好3306端口
1)centos搭建MySQL
2)开放3306端口命令:
#开放3306
firewall-cmd --zone=public --add-port=3306/tcp --permanent
#配置立即生效
firewall-cmd --reload
3)三台虚拟机
192.168.129.128 master节点
192.168.129.129 slave1节点
192.168.129.131 slave2节点
安装好以后可以利用navicat进行连接测试结果
二、开始配置
1)编辑master节点my.cnf文件
1、分别master节点和slave节点服务器执行:vim /etc/my.cnf
将下面的内容放到[mysqld]中
master节点内容:
#主从集群-主
server_id=1
gtid_mode=ON
enforce_gtid_consistency=ON
log_slave_updates=ON
log_bin=binlog
salve1节点内容
#主从集群-从1
server_id=2
gtid_mode=ON
enforce_gtid_consistency=ON
log_slave_updates=ON
log_bin=binlog
slave2节点内容
#主从集群-从2
server_id=3
gtid_mode=ON
enforce_gtid_consistency=ON
log_slave_updates=ON
log_bin=binlog
2、安全初始化
进行保存了以后,将三个sever都进行安全初始化,三个服务器都执行
cat /var/log/mysqld.log | grep password
mysql_secure_installation
注意点:在执行mysql_secure_installation修改密码的时候它有一个密码等级要求,要有英文数字和特殊符号要求,比如我这里的是Abc123!@#
修改了密码以后你还需要修改host内容,如果不修改,navicat会进不去,正常操作没问题
#进入mysql数据库
mysql -uroot -p
#执行sql
use mysql;
#查询结果,你查询出来的会是localhost
select host from user where user = 'root';
#进行更新
update user set host = '%' where user = 'root';
#刷新权限
flush privileges
3、配置master节点
比如这里的master节点为192.168.139.128,那么就进入到这个服务器执行下面代码
#进入服务器
mysql -uroot -p
#修改成master节点
#注意点:192.168.139要结合你自己的ip情况 Abc123!@#是密码
grant replication slave on *.* to root@'192.168.139.%' identified by 'Abc123!@#';
#查看master状态
show master status
4、配置slave1节点
#进入服务器
mysql -uroot -pAbc123!@#
#指定master
change master to master_host = '192.168.139.128', master_user = 'root',master_password = 'Abc123!@#',master_auto_position = 1;
#启动slave
start slave;
#查看状态
show slave status\G;
注意点:
如果你的服务器是虚拟机,并且是克隆的,可能会发生UUID错误,比如这种的
这个时候你需要去修改三个服务器的UUID
1)查看三台服务器(虚拟机)uuid是否一致
#进入mysql服务
mysql -uroot -p
#查看服务uuid
show variables like '%server_uuid%';
2) 找到auto.cnf文件,修改里面内容
#寻找文件
find / -name auto.cnf
#编辑文件
vim /var/lib/mysql/auto.cnf
5、配置slave2节点
和配置slave节点一样,执行相同代码就可以
三、准备测试
1、进入master节点创建数据库
#创建数据库
create database test;
use test;
#建表
create table userTest(username varchar(25) not null,password varchar(25) not null);
#插入数据
insert into userlist values ('user1','111');
insert into userlist values ('user2','222');
2、运行结果
你可以在master和slave进行查询,如果结果一致,就说明已经同步了