模拟生产环境Centos7.4+Mysql-5.7.17+MHA配置高可用集群

Linux版本:Centos7.4

Mysql版本:Mysql-5.7.17

MHA

一、环境准备。IP地址段为172.17.2.0/24,5台Mysql服务器,规划为master-51为主库,master-52为半同步主库,master-53为半同步主库,slave-54为从库,slave-55为从库。mgm-56为MHA管理节点。

二、阶段要求结果,实现1主2从结构,51为主库,52,53为从库,实现异步同步。

1、安装MySQL,修改数据库root密码为123456(为了实验,添加密码策略和长度的参数)

systemctl restart mysqld             #启动MySQL,初始化MySQL

systemctl stop mysqld

vim /etc/my.cnf

模拟生产环境Centos7.4+Mysql-5.7.17+MHA配置高可用集群_第1张图片

systemctl restart mysqld

grep password /var/log/mysqld.log       ##获取MySQL的初始密码

mysql -uroot -p"初始密码"                       ##登录mysql

模拟生产环境Centos7.4+Mysql-5.7.17+MHA配置高可用集群_第2张图片

修改mysql的root用户,密码为123456         52,53从库的mysql,同样操作。

2、为主库51,从库52,53添加server_id,并且主库开启binlog日志。

模拟生产环境Centos7.4+Mysql-5.7.17+MHA配置高可用集群_第3张图片

systemctl restart mysqld

3、主库进入MySQL。

reset master;

grant replication slave,replication client on *.* to slave"%" identified by "111111";  #添加同步用户

为了模拟生产环境库不停用的情况。使用在线热备工具备份主库

innobackup --slave-info --user='root' --password='123456' --no-timestamp /backup

rsync -aSH --delete /backup/ 172.17.2.52:/backup/ -e 'ssh'          ##同步备份文件到从库上去

模拟生产环境Centos7.4+Mysql-5.7.17+MHA配置高可用集群_第4张图片

查询备份文件里面的binlog日志文件名,偏移量

从库52:

cd /var/lib/mysql

rm -rf *                               ##删除从库的MySQL根目录

innobackup --apply-log /backup               ##合并备份文件的日志

innobackup --copy-back /backup             ##恢复备份文件

chown -R mysql.mysql /var/lib/mysql        ##设置MySQL根目录的属主和属组

systemctl restart mysqld

mysql -uroot -p123456

reset slave;

change master to maste_user='slave',master_password='111111',master_host='172.17.2.51',master_log_file='master51.000001',master_log_pos=463;                                                          ##设置主从信息。这里请注意。有时候innobackup备份的偏移量,是不准确的。

start slave;                                               ##开启从同步

show slave status \G                                  ##查看从信息

53从库同步。步骤一样。为了模拟生产环境,备份文件要从新实时备份再传给53

查询一主二从的状态:

mysql>show full processlist;

模拟生产环境Centos7.4+Mysql-5.7.17+MHA配置高可用集群_第5张图片

状态正常

三、阶段要求,新增1台服务器master55,ip是55,作为51主库的半同步服务器。

1、备份51主库,然后同步给master55,恢复备份

innobackupex --shalve-info --user='root' --password='123456' --no-timestamp /backup

rsync -aSH --delete /backup/ 172.17.2.55:/backup/

55机器:

cd /var/lib/mysql

rm -rf *

innobackupex --apply-log /backup/

innobackupex --copy-back /backup/
chown -R mysql.mysql /var/lib/mysql

master55的mysql配置文件开启binlog日志

模拟生产环境Centos7.4+Mysql-5.7.17+MHA配置高可用集群_第6张图片

systemctl restart mysqld

2、51主库,55备用主库,安装半同步插件的master插件和slave插件。

mysql>INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';

mysql>INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';

show variables like "%rpl%";           ##查看半同步变量的状态

模拟生产环境Centos7.4+Mysql-5.7.17+MHA配置高可用集群_第7张图片

模拟生产环境Centos7.4+Mysql-5.7.17+MHA配置高可用集群_第8张图片

启动变量。51主库和master55都要操作。

为了重启数据库后,参数继续生效,我们可以把配置写进配置文件。

模拟生产环境Centos7.4+Mysql-5.7.17+MHA配置高可用集群_第9张图片

3、master55备用主库查看innobackup备份文件,获取binlog文件名和偏移量,指定主从配置

模拟生产环境Centos7.4+Mysql-5.7.17+MHA配置高可用集群_第10张图片

master51,查看主从同步的状态

模拟生产环境Centos7.4+Mysql-5.7.17+MHA配置高可用集群_第11张图片

到目前为主,1主,2从(异步同步),1备主(半同步)已经完成。

接下来做MHA高可用的搭建。

四、阶段要求:为MHA集群所有的机器,准备无密码ssh登录。为MHA的提供MySQL账户,包括rpluser@“%”,root@“%”。新增一台服务器,作为mha的管理节点。

因为换了一下地方办公,IP有所更换。所以每台服务器的IP都换了。

1、配置正确的hosts文件,同步到mha的node节点和manager节点

模拟生产环境Centos7.4+Mysql-5.7.17+MHA配置高可用集群_第12张图片

同步给其他主机

模拟生产环境Centos7.4+Mysql-5.7.17+MHA配置高可用集群_第13张图片

15IP的是mha主机,没有安装rsync。再次同步过去就好。

2、设置所有主机ssh免询问yes或者no的选择。

vim /etc/ssh/ssh_config

所有主机都要处理

2、创建秘钥,然后分发给其他主机。实现ssh全部互联互通

模拟生产环境Centos7.4+Mysql-5.7.17+MHA配置高可用集群_第14张图片

分发秘钥

模拟生产环境Centos7.4+Mysql-5.7.17+MHA配置高可用集群_第15张图片

3、所有节点安装perl依赖包,时间有限,用最笨的方法

yum -y install perl-*

模拟生产环境Centos7.4+Mysql-5.7.17+MHA配置高可用集群_第16张图片

4、所有节点安装mha的node节点包。manager节点,安装mha的manager包

模拟生产环境Centos7.4+Mysql-5.7.17+MHA配置高可用集群_第17张图片

新建mha_manager的工作目录

mkdir /etc/mha_manager,把模板配置文件复制过去

模拟生产环境Centos7.4+Mysql-5.7.17+MHA配置高可用集群_第18张图片

5、修改mha的主配置文件。参考网路的配置。

模拟生产环境Centos7.4+Mysql-5.7.17+MHA配置高可用集群_第19张图片

6、测试ssh的连通性

masterha_check_ssh --conf=/etc/mha_manager/app1.cnf

不能出现任何error和warining。如果出现,按照对应的提示解决。

测试repl的状态,如果出现任何error和warining,全部需要解决。

 masterha_check_repl --conf=/etc/mha_manager/app1.cnf

模拟生产环境Centos7.4+Mysql-5.7.17+MHA配置高可用集群_第20张图片

例如我出现这些提示,那么我就要逐个解决

这里要注意,打开自动切换的脚本,修改正确的VIP。然后创建VIP

ifconfig eth0:1 192.168.1.10/24       ##我这里是用10,作为VIP

7、全部解决完以后,我们开始启动mha

/usr/local/bin/masterha_manager --conf=/etc/mha_manager/app1.cnf --ignore_last_failover

这个是完全路径启动脚本,指定配置文件,忽略最后的错误。

8、重新开一个终端。查询mha的状态

masterha_chech_status --conf=/etc/mha_manager/app1.cnf

模拟生产环境Centos7.4+Mysql-5.7.17+MHA配置高可用集群_第21张图片

9、验证mha是否工作。目前查询到是mmaster作为主库。那么我们停止mmaster的mysql。看看会是怎么样的情况

模拟生产环境Centos7.4+Mysql-5.7.17+MHA配置高可用集群_第22张图片

查看mha情况

模拟生产环境Centos7.4+Mysql-5.7.17+MHA配置高可用集群_第23张图片

登录丛库看看,主库是谁

模拟生产环境Centos7.4+Mysql-5.7.17+MHA配置高可用集群_第24张图片

我登录的是slave2.很明显,从库切换到bmaster了。

那么。我们再试试,mmaster启动mysql。是否会自动变成slave。

模拟生产环境Centos7.4+Mysql-5.7.17+MHA配置高可用集群_第25张图片

很明显,不会。

怎么办。按照我现在的情况。很简单。去bmaster,备份,然后mmaster,恢复。然后设置mmaster成为备份主库,即可。

好了。MHA高可用到此结束。

你可能感兴趣的:(Linux学习日记)