当前位置:   article > 正文

mysql ha架构_初探keepalive+mysql-ha架构

mha或者keepalived,这两个的优缺点是什么

一、MHA优缺点

优点:

1、MHA自动化主服务器故障转移,快速将从服务器晋级为主服务器(通常在10-30s),而不影响复制的一致性,不会有性能损耗,容易安装,不必更改现有的部署环境,适用于任何存储引擎。

2、MHA提供在线主服务器切换,改变先正运行的主服务器到另外一台上,这个过程只需0.5-2s的时间,这个时间内数据无法写入。MHA Manager通过ssh连接mysql slave服务器。

3、使用半同步复制,可以大大降低数据丢失的风险。MHA可以与半同步复制结合起来。如果只有一个slave已经收到了最新的二进制日志,MHA可以将最新的二进制日志应用于其他所有的slave服务器上,因此他们彼此保持一致性。

缺点:

1、虽然MHA试图从宕机的主服务器上保存二进制日志,但也会有问题。例如,如果主服务器硬件故障或无法通过ssh访问,MHA没法保存二进制日志,只进行故障转移而丢失最新数据。

2、当主DB故障,切换到另外的服务器上后,即使恢复了原来的主DB,也不能立即加入整套MHA系统中,得重新部署。而且当发生一次切换后,管理节点的监控进程就会自动退出,需要用脚本来自动启动。另外还得删除app1.failover.complete这个文件,否则新的主DB出现问题MHA就不会切换了。

二、简单的架构

MHA最少需要两台服务器组成,也就是M-S架构,并使用从DB作为监控机。

本次整理的方案使用了4台虚拟机,为M-M-S加监控机的组合。

Mysql请求发往VIP:10.1.1.190,当现有的主(10.1.1.191)故障,VIP会指向10.1.1.192,mysql请求也会转过去。

请看简图:

0231047fa06a1252710afcd4abee0a0a.png

一、环境搭建

1、部署MHA

MHA节点包含三个脚本,依赖perl模块。

save_binary_logs:保存和复制当掉的主服务器二进制日志。

apply_diff_relay_logs:识别差异的relay log事件,并应用于其他salve服务器。

purge_relay_logs:清除relay log文件。

需要在所有mysql服务器上安装MHA节点,MHA管理服务器也需要安装。MHA管理节点模块内部依赖MHA节点模块。MHA管理节点通过ssh连接管理mysql服务器和执行MHA节点脚本。MHA节点依赖perl的DBD::mysql模块。

a)安装MHA Node,4台机器都需要安装

yum –y install perl-DBD-MySQL

tar zxf mha4mysql-node-0.54.tar.gz

cd mha4mysql-node-0.54

perl Makefile.PL

make && make install

b)安装MHA manager,只需要安装在监控机(10.1.1.112)

yum –y install perl-Config-Tiny perl-Log-Dispatch perl-Parallel-ForkManager

tar zxf mha4mysql-manager-0.54.tar.gz

cd mha4mysql-manager-0.54

perl Makefile.PL

make && make install

需要注意的是mha-manager和mha-node版本必须一致,另外切记管理机也要安装node包。

2、部署keepalive

2.1在10.1.1.191和10.1.1.192上部署keepalived

tar zxvf keepalived-1.1.17.tar.gz

cd keepalived--1.1.17.tar.gz

./configure --prefix=/usr/local/keepalived

make

make install

cp /usr/local/keepalived/sbin/keepalived /usr/sbin/

cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/

cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/

mkdir /etc/keepalived

MASTER Keepalived的配置:

cat /etc/keepalived/keepalived.conf

#Configuration File for keepalived

global_defs {

notification_email {######定义接受邮件的邮箱

wangjj@hrloo.com

}

notification_email_fromjiankong@staff.tuge.com######定义发送邮件的邮箱

smtp_server mail.tuge.com

smtp_connect_timeout 10

}

vrrp_script check_mysql {######定义监控mysql的脚本

script "/etc/keepalived/check_mysql.sh"

interval 2######监控时间间隔

weight 2######负载参数

}

vrrp_instance vrrptest {######定义vrrptest实例

state MASTER######服务器状态(主为MASTER,从为BACKUP)

interface eth0######使用的接口

virtual_router_id 51######虚拟路由的标志,一组lvs的虚拟路由标识必须相同,这样才能切换

priority 150######服务启动优先级,值越大,优先级越高,BACKUP不能大于MASTER

advert_int 1######服务器之间的存活检查时间

notify /etc/keepalived/alert.sh######keepalive发生切换的报警邮件

authentication {

auth_type PASS######认证类型

auth_pass ufsoft######认证密码,一组lvs服务器的认证密码必须一致

}

track_script {######执行监控mysql进程的脚本

check_mysql

}

virtual_ipaddress {######虚拟IP地址

10.1.1.190

}

}

BACKUP Keepalived的配置

cat /etc/keepalived/keepalived.conf

#Configuration File for keepalived

global_defs {

notification_email {######定义接受邮件的邮箱

wangjj@hrloo.com

}

notification_email_fromjiankong@staff.tuge.com######定义发送邮件的邮箱

smtp_servermail.tuge.com

smtp_connect_timeout 10

}

vrrp_script check_mysql {######定义监控mysql进程的脚本

script "/etc/keepalived/check_mysql.sh"

interval 2######监控时间间隔

weight 2######负载参数

}

vrrp_instance vrrptest {######定义vrrptest实例

state BACKUP######服务器状态(主为MASTER,从为BACKUP)

interface eth0######使用的接口

virtual_router_id 51######虚拟路由的标志,一组lvs的虚拟路由标识必须相同,这样才能切换

priority 100######服务启动优先级,值越大,优先级越高,BACKUP不能大于MASTER

advert_int 1######服务器之间的存活检查时间

notify /etc/keepalived/alert.sh######keepalive发生切换的报警邮件

authentication {

auth_type PASS######认证类型

auth_pass ufsoft######认证密码,一组lvs服务器的认证密码必须一致

}

track_script {######执行监控NGINX进程的脚本

check_mysql

}

virtual_ipaddress {######虚拟IP地址

10.1.1.190

}

}

2.2监控脚本说明:

2.2.1监控mysql

/etc/keepalived/check_mysql.sh

#!/bin/bash

if [ "$(ps -ef | egrep "mysqld|mysqld_safe" | grep -v egrep )" == "" ]

then

/etc/init.d/keepalived stop

fi

功能:判断当mysql进程不存在,则kill掉keepalive,将虚拟IP切换到BACKUP-Keepalive。

2.2.2 监控脚本/etc/keepalived/alert.sh

主要是在keepalive发生切换的时候发邮件报警用的。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/294809
推荐阅读
相关标签
  

闽ICP备14008679号