mysql高可用之MHA

xiaoxiao2021-02-28  151

环境

系统 redhat 6.5 selinux=disabled iptables=off

管理节点 server1 : 172.25.60.1/24

数据节点 master :(server2)172.25.60.2/24 slave1:(server3)172.25.60.3/24 slave2:(server4)172.25.60.4/24

配置MHA

1.首先配置mysql主从复制

这里我配置了 master:server2 slave:server3 & 4

2.配置ssh互相通信

在所有结点(包括数据结点和管理结点)设置ssh密钥

ssh-keygen

在管理结点上(分发公钥给所有数据结点):

##server1(172.25.60.1): ssh-copy-id -i /root/.ssh/id_rsa.pub root@172.25.60.2 ssh-copy-id -i /root/.ssh/id_rsa.pub root@172.25.60.3 ssh-copy-id -i /root/.ssh/id_rsa.pub root@172.25.60.4

在数据结点上(分发公钥给所有数据结点):

##server2(master): ssh-copy-id -i /root/.ssh/id_rsa.pub root@172.25.60.3 ssh-copy-id -i /root/.ssh/id_rsa.pub root@172.25.60.4 ##server3(slave): ssh-copy-id -i /root/.ssh/id_rsa.pub root@172.25.60.2 ssh-copy-id -i /root/.ssh/id_rsa.pub root@172.25.60.4 ##server4(slave): ssh-copy-id -i /root/.ssh/id_rsa.pub root@172.25.60.2 ssh-copy-id -i /root/.ssh/id_rsa.pub root@172.25.60.3

3.配置数据结点

(1)安装需要的包 mha4mysql-node-0.54-0.el6.noarch.rpm

yum install perl-devel perl-CPAN perl-DBD-MySQL -y rpm -ivh mha4mysql-node-0.54-0.el6.noarch.rpm

(2)mysql配置

##**授权监控用户** shell> mysql -p Enter password: mysql> grant all privileges on *.* to root@'172.25.60.%' identified by 'Westos+101';

4.配置管理结点

(1)需要的包 mha4mysql-manager-0.56-0.el6.noarch.rpm mha4mysql-node-0.56-0.el6.noarch.rpm

(2)安装依赖性包 可以yum下载的:

yum install perl-devel perl-CPAN perl-DBD-MySQL -y

其他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 perl-Config-Tiny-2.12-7.1.el6.noarch.rpm perl-Email-Date-Format-1.002-5.el6.noarch.rpm

(3)安装

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

(4)配置MHA manger mkdir -p /etc/masterha/app1   ##创建MHA目录 vim /etc/masterha/app1/app.cnf  ##编辑配置文件

[server default] manager_workdir=/etc/masterha ##工作目录 manager_log=/etc/masterha/mha.log ##日志 password=Westos+101 ##监控密码 user=root ##监控用户 ping_interval=1 ##设置监控主库,发送ping包的时间间隔,默认是3秒,尝试三次没有回应的时候自动进行railover repl_password=Westos+101 ##主从复制用户密码 repl_user=root ##主从复制用户名 ssh_user=root ##ssh用户名 [server2] hostname=172.25.60.2 port=3306 candidate_master=1 check_repl_delay=0 [server3] hostname=172.25.60.3 port=3306 candidate_master=1 ##设置为候选master,如果设置该参数以后,发生主从切换以后将会将此从库提升为主库,即使这个主库不是集群中事件最新的slave check_repl_delay=0 ##默认情况下如果一个slave落后master 100M的relay logs的话,MHA将不会选择该slave作为一个新的master,因为对于这个slave的恢复需要花费很长时间,通过设置check_repl_delay=0,MHA触发切换在选择一个新的master的时候将会忽略复制延时,这个参数对于设置了candidate_master=1的主机非常有用,因为这个候选主在切换的过程中一定是新的master [server4] hostname=172.25.60.4 port=3306 no_master=1

(4)检测ssh配置

[root@server1 app1]# masterha_check_ssh --conf=/etc/masterha/app1/app.cnf

(5)检查MHA配置

[root@server1 app1]# masterha_check_repl --conf=/etc/masterha/app1/app.cnf

5.MHA Manager 端日常主要操作步骤

(1)启用服务

[root@server1 MHA]# nohup masterha_manager --conf=/etc/masterha/app1/app.cnf > /etc/masterha/app1/mha_manager.log 2>&1 &

当有slave 节点宕掉时,默认是启动不了的,加上 –ignore_fail_on_start 即使有节点宕掉也能启动MHA,如下:

nohup masterha_manager --conf=/etc/masterha/app1/app.cnf --ignore_fail_on_start >/etc/masterha/app1/mha_manager.log 2>&1 &

(2)检查状态 可以使用masterha_check_status –conf=/etc/masterha/app1/app.cnf来查看mha状态

注意: 关闭MHA服务的命令:

masterha_stop --conf=/etc/masterha/app1/app.cnf

(3)检查日志

tail -f /etc/masterha/app1/manager.log

(4)主从切换后续工作 主库切换后,把原主库修复成新从库,然后重新检查状态,检查日志,启用服务。原主库数据文件完整的情况下,可通过以下方式找出最后执行的CHANGE MASTER命令:

grep "CHANGE MASTER TO MASTER" /etc/masterha/app1/manager.log | tail -1

(5)检查是否有下列文件,有则删除 发生主从切换后,MHAmanager服务会自动停掉,且在manager_workdir目录下面生成文件app.failover.complete,若要启动MHA,必须先确保无此文件)

测试

自动failover测试 在原master(server2)上:

/etc/init.d/mysqld stop

在备用master(server3)上查看master信息:

mysql> show master status\G;

在slave(server4)上查看slave信息发现master切换为server3:

mysql> show slave status\G;

最后将server2上的mysql重新启用,并设置为slave

mysql> change master to master_host='172.25.60.3',master_user='slave',master_password='Westos+101',MASTER_AUTO_POSITION=1;

注意: 自动切换成功后,MHA manager服务就自动停止了,所以需要重启

转载请注明原文地址: https://www.6miu.com/read-29918.html

最新回复(0)