mysql ——MHA

一、实验环境:

  • rhel6.5 selinux关闭,防火墙关闭
  • server1:172.25.54.4 mha-manager
  • server2:172.25.54.1 master mysql-5.7.17 mha-node
  • server3:172.25.54.2 master slave mysql-5.7.17 mha-node
  • server4:172.25.54.3 master slave mysql-5.7.17 mha-node

若以前做过数据库实验,需要清理数据库数据

//清理以前数据库的数据
 /etc/init.d/mysqld start
 rm -rf /var/lib/mysql/*
 > /var/log/mysqld.log
 /etc/init.d/mysqld restart

在配置MHA之前,我们需要实现基于GTID的主从复制

Server1为主库,server2、3为从库

修改配置文件 /etc/my.cnf
vim /etc/my.cnf
这里写图片描述

启动mysql流程:
[root@server2 ~]# /etc/init.d/mysqld restart
[root@server2 ~]# cat /var/log/mysqld.log | grep password
2018-08-08T08:51:19.321424Z 1 [Note] A temporary password is generated for root@localhost: u/Klif/g3sFi
[root@server2 ~]# mysql_secure_installation //初始化设置

二、Master配置:

[root@server2 ~]# mysql -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 8
//授予slaves replication权限
mysql> grant replication slave on *.* to 'tutu'@'172.25.54.%' identified by '5820hhXM!@#';

三、Slave配置

[root@server3 ~]# mysql -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 12

mysql> change master to master_host='172.25.54.1',master_user='tutu',master_password='5820hhXM!@#', MASTER_AUTO_POSITION=1;

mysql> start slave;

mysql> show slave status\G;
             Slave_IO_Running: Yes     ##表示mysql连接成功
            Slave_SQL_Running: Yes

若出现Slave_SQL_Running为No的情况(即master与slave的数据不同步)
这里写图片描述
这里写图片描述
解决如下
这里写图片描述
这里写图片描述

三、MHA manager配置

需要的安装包:

mha4mysql-manager-0.56-0.el6.noarch.rpm
mha4mysql-node-0.56-0.el6.noarch.rpm
perl-Config-Tiny-2.12-7.1.el6.noarch.rpm
perl-Email-Date-Format-1.002-5.el6.noarch.rpm
perl-Log-Dispatch-2.27-1.el6.noarch.rpm
perl-Mail-Sender-0.8.16-3.el6.noarch.rpm
perl-Mail-Sendmail-0.79-12.el6.noarch.rpm
perl-MIME-Lite-3.027-2.el6.noarch.rpm
perl-MIME-Types-1.28-2.el6.noarch.rpm
perl-Parallel-ForkManager-0.7.9-1.el6.noarch.rpm

[root@server4 ~]# yum install *.rpm -y
mha高可用文件配置
[root@server4 ~]# mkdir /etc/masterha
[root@server4 ~]#vim /etc/masterha/mah.conf  
------------------------------------------------
[server default]
manager_workdir=/etc/masterha  //设置manager的工作目录
manager_log=/etc/masterha/mha.log  //设置manager的日志
master_binlog_dir=/var/lib/mysql  
//设置master 保存binlog的位置,以便MHA可以找到master的日志
user=root        //监控用户
password="5820Hh!@#"
//设置mysql中root用户的密码,这个密码是前文中创建监控用户的那个密码
ping_interval=1
//设置监控主库,发送ping包的时间间隔,默认是3秒,尝试三次没有回应的时候自动进行railover
remote_workdir=/tmp   //设置远端mysql在发生切换时binlog的保存位置
repl_user=tutu    //设置复制环境中的复制用户名
repl_password="5820Hh!@#"    //设置复制用户的密码
ssh_user=root   //设置ssh的登录用户名

[server1]
hostname=172.25.54.1
port=3306

[server2]
hostname=172.25.54.2
port=3306
candidate_master=1    //设置为候选master
check_repl_delay=0
//默认情况下如果一个slave落后master 100M的relay logs的话,MHA将不会选择该slave作为一个新的master

[server3]
hostname=172.25.54.3
port=3306
#no_master=1  
配置ssh免密连接

各个节点都是基于SSH互信通信; 把MHA管理节点上生成的私钥文件分别复制到其它三个节点上,确保可无需验证登录。

[root@server4 ~]# ssh-keygen -t rsa

这里写图片描述

[root@server4 ~]# ssh-copy-id server4
[root@server4 ~]# ssh-copy-id 172.25.54.4
[root@server4 ~]# ssh-copy-id 172.25.54.3
[root@server4 ~]# ssh-copy-id 172.25.54.2
[root@server4 ~]# ssh-copy-id 172.25.54.1
[root@server1 ~]# scp ~/.ssh/* server1:~/.ssh/
[root@server1 ~]# scp ~/.ssh/*  server1:~/.ssh/
[root@server1 ~]# scp ~/.ssh/*  server3:~/.ssh/
主节点授权:
mysql> grant all on *.* to root@'172.25.18.%' identified by '5820hhXM!@#';
//监控用户授权

四、测试:

//检测各节点间 ssh 互信通信
[root@server4 ~]# masterha_check_ssh --conf=/etc/masterha/mah.conf 
...
All SSH connection tests passed successfully.
//表示ssh配置成功

//检查管理MySQL复制集群的连接
[root@server4 ~]# masterha_check_repl --conf=/etc/masterha/mah.conf 
...
MySQL Replication Health is OK.
//表示正常通过检测
高可用检测:
MHA manager
//启动 MHA
[root@server4 ~]# nohup masterha_manager --conf=/etc/masterha/mah.conf --ignore_last_failover 2>&1 

中止主节点server1上mysql服务前,各slave的状态:
server2和server3状态一样:
这里写图片描述

中止主节点server1上mysql服务
[root@server2 ~]# /etc/init.d/mysqld stop

server2作为备份节点,主节点故障后会迅速替代其进行工作。

server2:
mysql> show slave status\G;
Empty set (0.00 sec)

server3:

mysql> show slave status\G;
                  Master_Host: 172.25.54.2

这里写图片描述

手动完成在线主从节点切换:
[root@server1 ~]# masterha_master_switch --conf=/etc/master/mah.conf--master_state=alive --new_master_host=172.25.54.2 --new_master_port=3306 --orig_master_is_new_slave --running_updates_limit=1000
故障切换:
[root@server1 ~]#masterha_master_switch --conf=/etc/master/mah.conf--master_state=dead --dead_master_host=172.25.54.1 --dead_master_port=3306 --new_master_host=172.25.54.2 --new_master_port=3306 --ignore_last_failover
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值