mysql高可用架构MHA

mysql高可用MHA的原理
  • 该软件由两部分组成:MHA Manager(管理节点)和MHA Node(数据节点),MHA Manager作为管理节点,可以单独部署在一台独立的机器上或其中一个slave节点上,MHA Node运行在每台MySQL服务器上,MHA Manager会定时探测集群中的master节点,当master出现故障时,它可以自动将最新数据的slave提升为新的master,然后将所有其他的slave重新指向新的master

  • MHA工作原理:从故障master保存二进制日志事件,识别含有最新的slave,应用差异中继日志到其他slave,应用从master保存的二进制日志,将其中一个slave提升为master,其他的slave指向最新的master

mysql高可用MHA配置
  • 高可用架构设计:一主三从,mha的Manager运行在slave(192.168.57.100)
Master                        192.168.67.200                     
Candicate master              192.168.57.121                  
Slave                  192.168.57.100             
  • 配置互信(过程略)

  • 搭建mysql主从复制(过程略),且在所有mysql数据库下创建用于监控的用户mha

  • 所有节点安装mha4mysql-node

安装node依赖的包
yum install perl-ExtUtils-CBuilder perl-ExtUtils-MakeMaker cpan  perl-DBD-MySQL -y
安装node
/usr/local/bin
tar -xvf mha4mysql-node-0.56.tar
cd mha4mysql-manager-0.56
perl Makefile.PL
make && make install

安装完成后在/usr/local/bin下回生产如下文件
-r-xr-xr-x 1 root root 15498 Apr 20 10:05 apply_diff_relay_logs
-r-xr-xr-x 1 root root  4807 Apr 20 10:05 filter_mysqlbinlog
-r-xr-xr-x 1 root root  7401 Apr 20 10:05 purge_relay_logs
-r-xr-xr-x 1 root root  7263 Apr 20 10:05 save_binary_logs
  • 192.168.57.100服务器上安装mha4mysql-manager
安装mha4mysql-manager依赖的包
-rw-r--r--. 1 root root  16308 Jul  3  2011 perl-Email-Date-Format-1.002-5.el6.noarch.rpm
-rw-r--r--. 1 root root 103432 Jul  3  2011 perl-MailTools-2.04-4.el6.noarch.rpm
-rw-r--r--. 1 root root  83864 Jul  3  2011 perl-MIME-Lite-3.027-2.el6.noarch.rpm
-rw-r--r--. 1 root root  33048 Jul  3  2011 perl-MIME-Types-1.28-2.el6.noarch.rpm
-rw-r--r--. 1 root root  76728 Jul  3  2011 perl-Params-Validate-0.92-3.el6.x86_64.rpm
-rw-r--r--. 1 root root  38264 Oct 18  2014 perl-TimeDate-1.16-13.el6.noarch.rpm
-rw-r--r--. 1 root root  21740 Jul 12  2016 perl-Parallel-ForkManager-0.7.9-1.el6.noarch.rpm
-rw-r--r--. 1 root root  25756 Jul 12  2016 perl-MIME-Lite-HTML-1.23-2.el6.noarch.rpm
-rw-r--r--. 1 root root  28448 Jul 12  2016 perl-Mail-Sendmail-0.79-12.el6.noarch.rpm
-rw-r--r--. 1 root root  55224 Jul 12  2016 perl-Mail-Sender-0.8.16-3.el6.noarch.rpm
-rw-r--r--. 1 root root  72328 Jul 12  2016 perl-Log-Dispatch-2.27-1.el6.noarch.rpm
-rw-r--r--. 1 root root  23416 Jul 12  2016 perl-Config-Tiny-2.12-7.1.el6.noarch.rpm

yum install *

安装mha4mysql-manager

cd mha4mysql-manager-0.56
perl Makefile.PL
make && make install
  • 配置MHA
    创建MHA的工作目录,并且创建相关配置文件,如下为配置文件app1.cnf

[server default]
#mha manager工作目录
manager_workdir = /var/log/masterha/app1
manager_log = /var/log/masterha/app1/app1.log
remote_workdir = /var/log/masterha/app1

[server1]
hostname=192.168.57.200
port=3306
master_binlog_dir = /u01/mysql/mylog/MYORCL/binlog
candidate_master = 1
check_repl_delay = 0     #用防止master故障时,切换时slave有延迟,卡在那里切不过来。

[server2]
hostname=192.168.57.121
port=3306
master_binlog_dir = /u01/mysql/mylog/MYORCL/binlog
candidate_master = 1
check_repl_delay = 0

[server3]
hostname=192.168.57.100
port=3306
master_binlog_dir = /u01/mysql/mylog/MYORCL/binlog
candidate_master = 1
check_repl_delay = 0

#[server4]
#hostname=192.168.57.120
#port = 3307
#master_binlog_dir = /home/mysql/mysql3307/mylog/MYORCL/binlog
#no_master=1

配置文件masterha_default.conf


[server default]
#MySQL的用户和密码
user=mha
password=mha123456

#系统ssh用户
ssh_user=root

#复制用户
repl_user=repbak
repl_password=zhxg1234

#监控
ping_interval=1
#shutdown_script=""

#切换调用的脚本
master_ip_failover_script= /etc/masterha/master_ip_failover
master_ip_online_change_script= /etc/masterha/master_ip_online_change

检查主从复制是否正常

masterha_check_repl --global_conf=/etc/masterha/masterha_default.conf --conf=/etc/masterha/app1.conf


报错:
Can't locate Log/Dispatch.pm in @INC (@INC contains: /usr/local/lib64/perl5 /usr/local/share/perl5 /usr
/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at /usr/local/share/perl5/MHA/MasterMonitor.pm line 28.BEGIN failed--compilation aborted at /usr/local/share/perl5/MHA/MasterMonitor.pm line 28.
Compilation failed in require at /usr/local/bin/masterha_check_repl line 25.
BEGIN failed--compilation aborted at /usr/local/bin/masterha_check_repl line 25.

解决:
yum install perl-Mail-Sender
yum install perl-Log-Dispatch

正常

terha/app1.confWed Apr 29 03:32:16 2020 - [info] Reading default configuration from /etc/masterha/masterha_default.con
f..Wed Apr 29 03:32:16 2020 - [info] Reading application default configuration from /etc/masterha/app1.con
f..Wed Apr 29 03:32:16 2020 - [info] Reading server configuration from /etc/masterha/app1.conf..
Wed Apr 29 03:32:16 2020 - [info] Setting max_ping_errors to 4, ping_interval to 1.
Wed Apr 29 03:32:16 2020 - [info] MHA::MasterMonitor version 0.56.
Wed Apr 29 03:32:16 2020 - [error][/usr/local/share/perl5/MHA/ServerManager.pm, ln301] Got MySQL error 
when connecting 192.168.57.121(192.168.57.121:3306) :1045:Access denied for user 'mha'@'192.168.57.100' (using password: YES), but this is not a MySQL crash. Check MySQL server settings. at /usr/local/share/perl5/MHA/ServerManager.pm line 297
Wed Apr 29 03:32:17 2020 - [error][/usr/local/share/perl5/MHA/ServerManager.pm, ln301] Got MySQL error 
when connecting 192.168.57.200(192.168.57.200:3306) :1045:Access denied for user 'mha'@'192.168.57.100' (using password: YES), but this is not a MySQL crash. Check MySQL server settings. at /usr/local/share/perl5/MHA/ServerManager.pm line 297
Wed Apr 29 03:32:17 2020 - [error][/usr/local/share/perl5/MHA/ServerManager.pm, ln309] Got fatal error,
 stopping operationsWed Apr 29 03:32:17 2020 - [error][/usr/local/share/perl5/MHA/MasterMonitor.pm, ln425] Error happened o
n checking configurations.  at /usr/local/share/perl5/MHA/MasterMonitor.pm line 327Wed Apr 29 03:32:17 2020 - [error][/usr/local/share/perl5/MHA/MasterMonitor.pm, ln524] Error happened o
n monitoring servers.Wed Apr 29 03:32:17 2020 - [info] Got exit code 1 (Not master dead).

MySQL Replication Health is NOT OK!

masterha_check_ssh检查ssh互信是否正常

[root@mycat masterha]# masterha_check_ssh  --global_conf=/etc/masterha/masterha_default.conf --conf=/et
c/masterha/app1.confWed Apr 29 04:42:49 2020 - [info] Reading default configuration from /etc/masterha/masterha_default.con
f..Wed Apr 29 04:42:49 2020 - [info] Reading application default configuration from /etc/masterha/app1.con
f..Wed Apr 29 04:42:49 2020 - [info] Reading server configuration from /etc/masterha/app1.conf..
Wed Apr 29 04:42:49 2020 - [info] Setting max_ping_errors to 4, ping_interval to 1.
Wed Apr 29 04:42:49 2020 - [info] Starting SSH connection tests..
Wed Apr 29 04:42:50 2020 - [debug] 
Wed Apr 29 04:42:49 2020 - [debug]  Connecting via SSH from root@192.168.57.200(192.168.57.200:22) to r
oot@192.168.57.121(192.168.57.121:22)..Wed Apr 29 04:42:50 2020 - [debug]   ok.
Wed Apr 29 04:42:50 2020 - [debug] 
Wed Apr 29 04:42:49 2020 - [debug]  Connecting via SSH from root@192.168.57.121(192.168.57.121:22) to r
oot@192.168.57.200(192.168.57.200:22)..Wed Apr 29 04:42:50 2020 - [debug]   ok.
Wed Apr 29 04:42:50 2020 - [info] All SSH connection tests passed successfully.

mha启动masterha_manager

masterha_manager --global_conf=/etc/masterha/masterha_default.conf --conf=/etc/masterha/app1.conf > /var/log/masterha/app1/mha_manager.log 2>&1 & 

启动报错


Wed Apr 29 03:52:08 2020 - [error][/usr/local/share/perl5/MHA/SSHCheck.pm, ln111] SSH connection from r
oot@192.168.57.100(192.168.57.100:22) to root@192.168.57.200(192.168.57.200:22) failed!

解决
#[server3]
#hostname=192.168.57.100
#port=3306
#master_binlog_dir = /data/mysql/data
#candidate_master = 1
#check_repl_delay = 0

检查进程是否存在

ps aux|grep masterha_manager

检查masterha的状态

masterha_check_status --global_conf=/etc/masterha/masterha_default.conf --conf=/etc/masterha/app1.conf

app1 (pid:4507) is running(0:PING_OK), master:192.168.57.200

停止masterha运行

masterha_stop --global_conf=/etc/masterha/masterha_default.conf --conf=/etc/masterha/app1.conf

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值