本文中使用的mysql是在VM虚拟机上搭建的三台机器的集群,其中一台机器作为主机器,另外两台作为从机器,ip分别为:
主机器:192.168.159.136 从机: 192.168.159.135、192.168.159.137
首先我们需要在互联网上下载mysql的安装包(mysql从5.7开始已经开始支持集群的配置):
wget http://repo.mysql.com/mysql57-community-release-el7-8.noarch.rpm
rpm -ivh mysql57-community-release-el7-8.noarch.rpm
yum install mysql-server
systemctl stop firewalld.service
systemctl start mysqld
安装了 mysql5.7之后因为5.7处于安全策略考虑会有将原始密码进行加密的操作,这里需要我们将mysql的密码获取得到
grep "password" /var/log/mysqld.log
如果使用上述方法获取不到密码,则可以进行下面的操作。
https://blog.csdn.net/t1anyuan/article/details/70216235
然后使用 mysql -uroot -p
输入获取到的密码,然后进入mysql,进入mysql之后还需要对mysql的密码进行重置。
因为5.7对安全策略的要求比较高,需要设置一个密码同时包含大写、小写、特殊字符、必须超过8位
先执行下面的语句:
alter user 'root'@'localhost' identified by 'Zxcvbnmasdf$';
然后可以修改5.7的安全策略
set global validate_password_length=1;
set global validate_password_policy=0;
然后再重新设置密码:
alter user 'root'@'localhost' identified by 'root';
mysql5.7当中三个经常使用到的文件默认存放位置:
mysql的数据文件和二进制文件: /var/lib/mysql/
mysql的配置文件: /etc/my.cnf
mysql的日志文件: /var/log/mysql.log
配置一下my.cnf文件,把当前这台机器(192.168.159.136)加入下面的配置:
[mysqld] 这个标签下的配置:
log-bin=mysql-bin
server-id=136
其中log-bin指的是 集群之后用来做数据交互的文件的前缀,server-id指的是 当前机器ip的最后一个段
然后重启mysql
systemctl restart mysqld
进入mysql
mysql -uroot -p
密码回车
查看mysql主节点的信息
show master status
然后把这个File和 Position这两个值记录下来,后来会用到。
在主机器上配置一个共享数据的用户:repl,并且把这个共享用户作为 其他 slave 通信的用户
create user repl identified by 'repl';
grant replication slave on *.* to 'repl'@'%' identified by 'repl';
然后到其他机器上进行配置:
来到192.168.159.135机器上
vi /etc/my.cnf
[mysqld]这个标签内增加下面的配置:
#下面这种情况是配置从机的情况
server-id=135
#配置中继日志,该中继日志存储master上面的所有的信息的。
relay-log=slave-relay-bin
relay-log-index=slave-relay-bin.index
read_only=1
另外一台机器也是这样配置 server-id不一样外.
然后启动两台机器上的 mysql库:
在库内执行下面的代码:
change master to
master_host='192.168.159.136',
master_port=3306,
master_user='repl',
master_password='repl',
master_log_file='mysql-bin.000017',
master_log_pos=154;
这句代码的意思是把这台mysql的从机设置主机信息,master_log_file 这个文件的配置要和上面主机中执行 show master status中显示的值一样.
配置完成之后执行下面的代码:
show slave status;
出现下面的信息则说明集群配置成功。
然后我们在通过 windows中的 navicat环境测试三台机器集群的情况:
在136这台机器上新建一个数据库表并且向其中加入数据:
然后可以看到过没多久其他另外两台机器上出现相同的表和相同的数据:
135当中
137当中:
可以查看binlog信息:
show binlog events in 'mysql-bin.000017';
show variables like '%log%';