MHA高可用架构部署实战

柔情痞子 提交于 2020-12-23 08:31:21

MHA高可用架构部署实战
搭建MHA高可用的前提:
注:相关脚本已经上传到服务器上
①已经搭建好1主2从的主从复制关系
②MySQL数据库版本是v5.6之后,支持GTID并已经开启



3.1、安装mha node:
注意:在此之前,记得先删除所有节点的relay-log日志清除命令
#临时关闭
set global relay_log_purge=0;
#永久关闭
vi /etc/my.cnf
relay_log_purge=0 //很重要!!





依赖包perl-DBD-MySQL ,并在三个节点都安装node软件
yum -y install perl-DBD-MySQL
rpm -ivh mha4mysql-node-0.56-0.el6.noarch.rpm

3.2、主库中创建mha管理用户 (由于是主从关系,主库创建好了,从库也会自动创建)
grant all privileges on *.* to mha@'192.168.137.%' identified by 'mha';

3.3、配置软连接
ln -s /application/mysql/bin/mysqlbinlog /usr/bin/mysqlbinlog
ln -s /application/mysql/bin/mysql /usr/bin/mysql

3.4、部署manger节点(建议在从节点db03)
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
yum install -y perl-Config-Tiny epel-release perl-Log-Dispatch perl-Parallel-ForkManager perl-Time-HiRes

3.5、安装 manager软件

rpm -ivh mha4mysql-manager-0.56-0.el6.noarch.rpm

3.6、创建Manager必须目录与配置文件
mkdir -p /etc/mha
mkdir -p /var/log/mha/app1 ----》可以管理多套主从复制
创建配置文件 (不需要的配置不要留着,注释没用,切换后会重写)
vim /etc/mha/app1.cnf -----》serverdefault可以独立
[server default]
manager_log=/var/log/mha/app1/manager
manager_workdir=/var/log/mha/app1
master_binlog_dir=/data/binlog
user=mha
password=mha
ping_interval=2
repl_password=123
repl_user=repl
ssh_user=root













[server1]
hostname=192.168.137.142
port=3306

[server2]
hostname=192.168.137.143
port=3306

[server3]
hostname=192.168.137.144
port=3306

3.7、配置互信(所有节点)

ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa >/dev/null 2>&1

ssh-copy-id -i /root/.ssh/id_dsa.pub root@192.168.137.142
ssh-copy-id -i /root/.ssh/id_dsa.pub root@192.168.137.143
ssh-copy-id -i /root/.ssh/id_dsa.pub root@192.168.137.144

3.8、检测互信(manager结点上)

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

3.9、检测主从
masterha_check_repl --conf=/etc/mha/app1.cnf

3.10、启动MHA manager
nohup masterha_manager --conf=/etc/mha/app1.cnf --remove_dead_master_conf --ignore_last_failover < /dev/null > /var/log/mha/app1/manager.log 2>&1 &
3.11、使用MHA自带脚本实现IP FailOver(vip 漂移,应用透明)
配置步骤
上传准备好的/usr/local/bin/master_ip_failover //脚本必须上传到改目录下,切记!!
chmod +x master_ip_failover
dos2unix /usr/local/bin/master_ip_failover //可以把文件内容中中文符号去掉





vim /etc/mha/app1.cnf
master_ip_failover_script=/usr/local/bin/master_ip_failover //添加此内容

重启mha
masterha_stop --conf=/etc/mha/app1.cnf
nohup masterha_manager --conf=/etc/mha/app1.cnf --remove_dead_master_conf --ignore_last_failover < /dev/null > /var/log/mha/app1/manager.log 2>&1 &

手工在主库上绑定vip,注意一定要和配置文件中的ethN一致,我的是ens33:1(1是key指定的值)
注意:这一步是手动在主库上添加,切记!!
ifconfig ens33:1 192.168.137.145/24

切换测试:
停主库,看vip是否漂移



故障演练:

1、宕掉db01主库
2、tail -f /var/log/mha/app1/manager 观察日志变化
3、恢复主库运行,重新将db01加入到主从复制关系中(该命令在上面的manager日志中看到的)
[root@db01 /]# /etc/init.d/mysqld start
CHANGE MASTER TO MASTER_HOST='192.168.137.143', MASTER_PORT=3306, MASTER_AUTO_POSITION=1, MASTER_USER='repl', MASTER_PASSWORD='123';
#恢复后,故障的结点需要启动slave主从
start slave;
show slave status\G;






4、将配置文件中加入修改的故障节点
cd /etc/mha
vim app1.cnf
[server1]
hostname=192.168.137.142
port=3306




5、启动MHA了manager程序

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

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

nohup masterha_manager --conf=/etc/mha/app1.cnf --remove_dead_master_conf --ignore_last_failover < /dev/null > /var/log/mha/app1/manager.log 2>&1 &

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!