基于MHA的Mysq高可用架构搭建
实验环境:
server1 master 172.25.66.1
server2 slave(备master)172.25.66.2
server3 slave 172.25.66.3
server4 MHA 172.25.66.4
注意:在做此实验之前必须保证数据一致,所以清空之前的实验数据,重新初始化,保证三个虚拟机的数据一致,不会影响之后的实验结果
(一)在server1上配置mysql
1.重新在server1编辑mysql服务
[root@server1 ~]# systemctl stop mysqld
[root@server1 ~]# vim /etc/my.cnf
配置文件的内容如下:
server-id=1
gtid_mode=ON
enforce_gtid_consistency=ON
log_bin=binlog
log_slave_updates=ON
2.清空之前的msyql的数据并重新启动mysqld服务
[root@server1 ~]# cd /var/lib/mysql
[root@server1 mysql]# ls
[root@server1 mysql]# rm -rf *
[root@server1 mysql]# systemctl restart mysqld
3.查看mysql密码并修改密码
[root@server1 mysql]# grep password /var/log/mysqld.log
[root@server1 mysql]# mysql -p
Enter password: #输入初始化密码(查看密码时最新的)
mysql> alter user root@localhost identified by 'Bgg+2019';
4.授予用户repl权限
mysql> GRANT REPLICATION SLAVE ON *.* TO repl@'172.25.66.%' IDENTIFIED BY 'Bgg+2019';
mysql> SHOW MASTER STATUS;
(二)在server2上配置mysql
1.重新在server2编辑mysql服务
[root@server2 ~]# systemctl stop mysqld
[root@server2 ~]# vim /etc/my.cnf
配置文件的内容如下:
server-id=2
gtid_mode=ON
enforce_gtid_consistency=ON
log_bin=binlog
log_slave_updates=ON
2.清空之前的msyql的数据并重新启动mysqld服务
[root@server2 ~]# cd /var/lib/mysql
[root@server2 mysql]# ls
[root@server2 mysql]# rm -rf *
[root@server2 mysql]# systemctl restart mysqld
3.查看mysql的初始化密码并修改密码
[root@server2 mysql]# grep password /var/log/mysqld.lo
[root@server2 mysql]# mysql -p
mysql> alter user root@localhost identified by 'Bgg+2019';
4.配置slave(注意master的信息要对)并开启slave
mysql> show databases;
mysql> CHANGE MASTER TO MASTER_HOST='172.25.66.1',MASTER_USER='repl',MASTER_PASSWORD='Bgg+2019',MASTER_AUTO_POSITION=1;
mysql> START SLAVE;
mysql> SHOW SLAVE STATUS\G;
(三)在server3上配置mysql服务
1.首先在server3中配置mysql服务并开启服务
[root@server3 ~]# tar xf mysql-5.7.24-1.el7.x86_64.rpm-bundle.tar
[root@server3 ~]# yum install -y mysql-community-client-5.7.24-1.el7.x86_64.rpm mysql-community-common-5.7.24-1.el7.x86_64.rpm mysql-community-libs-5.7.24-1.el7.x86_64.rpm mysql-community-libs-compat-5.7.24-1.el7.x86_64.rpm mysql-community-server-5.7.24-1.el7.x86_64.rpm
2.查看是否有缓存的数据,发现没有数据,此时开启mysql服务并查看是否有数据
[root@server3 ~]# cd /var/lib/mysql
[root@server3 mysql]# ls
[root@server3 mysql]# systemctl start mysqld
[root@server3 mysql]# ls
3.编辑mysqld配置文件并重启mysqld服务
[root@server3 mysql]# vim /etc/my.cnf
[root@server3 mysql]# systemctl restart mysqld
4.查看mysql的初始化密码并修改密码
[root@server3 mysql]# grep password /var/log/mysqld.log
[root@server3 mysql]# mysql -p
mysql> alter user root@localhost identified by 'Bgg+2019';