MHA是目前比较成熟的mysql高可用集群方式之一.

一、参考文档:
1.官方文档:【 https://github.com/yoshinorim/mha4mysql-manager/wiki 】
2.个人博客: 好多
3.下载地址:
(1)manager:【 https://github.com/yoshinorim/mha4mysql-manager/releases 】
(2)node: 【 https://github.com/yoshinorim/mha4mysql-node/releases/tag/v0.58 】

二、基础环境
1.操作系统:Centos 7.4
2.mysql版本:percona-mysql 5.7.22
3.MHA版本:0.58
4.服务器信息

三、部署流程
1.安装node
# master,slave-01
(1)下载安装包

mkdir -p /opt/upload/mha_packges
cd opt/upload/mha_packges
wget 'https://github.com/yoshinorim/mha4mysql-node/releases/download/v0.58/mha4mysql-node-0.58-0.el7.centos.noarch.rpm'

(2)安装node

yum -y install perl-DBD-MySQL -y
yum -y localinstall mha4mysql-node-0.58-.el7.centos.noarch.rpm

2.安装manager
#172.18.6.14
(1)下载安装包

mkdir -p /opt/upload/mha_packges
cd /opt/upload/mha_packges
wget 'https://github.com/yoshinorim/mha4mysql-node/releases/download/v0.58/mha4mysql-node-0.58-0.el7.centos.noarch.rpm'
wget 'https://github.com/yoshinorim/mha4mysql-manager/releases/download/v0.58/mha4mysql-manager-0.58-0.el7.centos.noarch.rpm'

(2)安装manager及node

yum -y install perl-DBD-MySQL perl-Config-Tiny perl-Log-Dispatch perl-Parallel-ForkManager
yum -y localinstall mha4mysql-node-0.58-.el7.centos.noarch.rpm
yum -y localinstall mha4mysql-manager-0.58-.el7.centos.noarch.rpm

3.添加hosts
#master-01,slave-01,slave-02操作

cat <<EOF>> /etc/hosts
172.18.6.15 mysql_master-
172.18.6.13 mysql_slave-
172.18.6.14 mysql_slave-
EOF

4.配置免密登陆
(1)配置三台服务器免密登陆
(2)测试命令:masterha_check_ssh --conf=/opt/ mha/conf/default.cnf
5.创建manager工作目录
mkdir -p /opt/mha/{manager_data,remote_data,manager_logs,conf}

6.生成manager配置文件

cat <<EOF> /opt/mha/conf/default.cnf
[server default]
# mha_directory #
manager_workdir=/opt/mha/manager_data
manager_log=/opt/mha/manager_logs/manager.log
remote_workdir=/opt/mha/remote_data # mha_setting #
ping_interval=
shutdown_script=""
master_ip_failover_script="/usr/bin/master_ip_failover"
master_ip_online_change_script="/usr/bin/master_ip_online_change" # DATABASE #
user=mha
password=dingkai123 #最好不要用特殊字符,mha难以识别 # SSH #
ssh_user=root
ssh_port=
repl_user=repl #mysql主从复制账号
repl_password=dingkai. #mysql主从复制账号密码
master_binlog_dir=/opt/mysql/mysql_log #binlog目录 [server1]
hostname= mysql_master-
port=
master_binlog_dir=/opt/mysql/mysql_log
candidate_master=
check_repl_delay= [server2]
hostname=mysql_slave-
port=
master_binlog_dir=/opt/mysql/mysql_log
candidate_master=
check_repl_delay= [server3]
hostname=mysql_slave-
port=
master_binlog_dir=/opt/mysql/mysql_log
no_master= [binlog1]
hostname=mysql_master-
EOF

5.在master创建mha管理账号
grant all privileges on *.* to mha@172.18.6.% identified by 'MFdb@2018!';
6.修改‘master_ip_failover’ ,'master_ip_online_change'脚本(这两个脚本在manager源码中的 mha4mysql-manager-0.58/samples/scripts 下)
(1)修改master_ip_failover
添加

my $vip = '172.18.6.251/32';
my $key = '0';
my $ssh_port = '10022';
my $ssh_start_vip = "/sbin/ifconfig eth0:$key $vip";
my $ssh_stop_vip = "/sbin/ifconfig eth0:$key down";

(2)修改master_ip_online_change
#添加以下内容

my $vip = '172.18.6.251/32';
my $ssh_port = '10022';
my $if = "eth0";


(3)添加脚本到 /usr/bin/下

cp -a master_ip_failover master_ip_online_change /usr/bin/
chmod +x /usr/bin/master_ip_failover
chmod +x /usr/bin/master_ip_online_change

6.配置虚拟网卡
#master实例操作
ifconfig eth0:0 172.18.6.201/32

7.检查复制情况
#slave-02执行
masterha_check_repl --conf=/opt/mha/conf/default.cnf #检查复制状态
masterha_manager --conf=/opt/mha/conf/default.cnf #启动mha
masterha_check_status --conf=/opt/mha/conf/default.cnf #查看mha运行状态

.使用脚本控制
()创建mha控制脚本
cat <<EOF> /usr/bin/mha.sh
#!/usr/bin/bash
#filename: mha.sh
#用途:启动关闭MHA #VARIABLES
config_file="/opt/mha/conf/default.cnf "
base_path="/opt/mha "
log_path="/opt/mha/manager_logs"
masterha_manager="/usr/bin/masterha_manager"
masterha_stop="/usr/bin/masterha_stop"
masterha_check_status="/usr/bin/masterha_check_status"
mha_status=$(masterha_check_status --conf=/opt/mha/conf/default.cnf |grep -w 'pid'|awk -F" " '{print $2}'|awk -F":" '{print $2}'|awk -F")" '{print $1}') #functions
start(){
if [ -z ${mha_status} ]
then
/usr/bin/nohup ${masterha_manager} --conf=${config_file} > ${log_path}/nohup.log >& &
else
echo "MHA is Running!"
fi
} stop(){
if [ ! -z ${mha_status} ]
then
${masterha_stop} --conf=${config_file}
else
echo "MHA is not running!"
fi
}

(2)脚本命令
mha.sh start #启动mha
mha.sh stop #停止mha
mha.sh status #查看mha状态

注意:当master宕机后,mha会自动将一个slave节点提升为主,随后mha自动停止运行,在手动恢复数据库之前,mha都是不可用的

MHA简单部署的更多相关文章

  1. XenApp简单部署

    作者:MR.Yangwj 目录 XenApp简单部署... 1 一.         XenApp安装... 1 (一)      服务器配置任务... 9 1)     许可证服务器配置... 9 ...

  2. mongodb 简单部署方案及实例

    mongodb 简单部署方案及实例 转载:http://my.oschina.net/zhuzhu0129/blog/53290 第一节 准备工作 一 安装mongodb  我这里选用rehl 5.6 ...

  3. Glue4Net简单部署基于win服务的Socket程序

    smark 专注于高并发网络和大型网站架规划设计,提供.NET平台下高吞吐的网络通讯应用技术咨询和支持 Glue4Net简单部署基于win服务的Socket程序 在写一些服务应用的时候经常把要它部署到 ...

  4. SQL Server中的变更捕获技术--简单部署

    ------准备------ CREATE DATABASE db_test_cdc ,) ,name )); INSERT INTO t1(name)VALUES('test') ------开始- ...

  5. Tomcat_记一次tomcatwar包应用简单部署过程

    记一次tomcat war包应用简单部署过程 by:授客 QQ:1033553122 1.  实践环境 Linux apache-tomcat-7.0.73 2.  实践步骤 # 解压tomcat压缩 ...

  6. Ceph分布式存储-原理介绍及简单部署

    1)Ceph简单概述Ceph是一个分布式存储系统,诞生于2004年,最早致力于开发下一代高性能分布式文件系统的项目.Ceph源码下载:http://ceph.com/download/.随着云计算的发 ...

  7. WebStorm 简单部署服务器进行测试操作

    WebStorm 简单部署服务器对外发布接口 第一步: 查看webstorm防火墙是否允许链接,控制面板-->防火墙-->高级设置 入站规则-->webstrom是否允许链接 ,双击 ...

  8. nginx之旅:安装及简单部署

    安装之前最好了解一下nginx,参考nginx百度百科吧,下面这一句话基本概括了nginx的基本功能 Nginx ("engine x") 是一个高性能的 HTTP 和 反向代理  ...

  9. jenkins安装和简单部署

    jenkins安装和简单部署 jenkins历史 jenkins是一款非常好用的团队CI(Continuous Integration)工具.它可以使你的构建,集成,发布,开发流程自动化.减轻各个环节 ...

随机推荐

  1. MongoDB——morphia

    禁止保存className:@Entity(noClassnameStored = true) https://stackoverflow.com/questions/17719018/a-field ...

  2. Windows10启用或关闭Windows功能一直显示请稍候

    1.运行service.msc打开服务列表,找到Windows Modules Installer服务进行重启.如果重启失败,可以重启电脑后再次启动该服务. 2.此时运行controller打开控制面 ...

  3. java 项目 文件关系 扫描 注释注入(2)

    https://www.cnblogs.com/daimajun/p/7152970.html(copy) 先提一嘴 @RequestMapping(“url”),这里的 url写的是请求路径的一部分 ...

  4. reactjs 项目使用 iconfont 小图标以及使用带颜色 inconfont 小图标

    在 reactjs 项目中是所有小图标目前主要分为两类使用方式,第一类通过 CSS 引入的方式使用,第二类使用 JS 的方式引入使用. 注册-登录-建立项目-选中图标添加到购物车-添加至项目-下载到本 ...

  5. 认识并安装RabbitMQ(以Windows系统为例)

    一.初识RabbitMQ 百度百科有这么一句话: MQ是消费-生产者模型的一个典型的代表,一端往消息队列中不断写入消息, 而另一端则可以读取或者订阅队列中的消息. MQ和JMS类似,但不同的是JMS是 ...

  6. 筛选前十按a-z顺序排

    需求: 从arr数组中筛选出num最多的前十个,若是最后几个num的值一样,则最后几个按字母a-z的顺序排序,最后取出num最大的前十个: var arr = [{"id":&qu ...

  7. 「CF442C」 Artem and Array

    题目链接 戳我 \(Solution\) 观察发现如果一个数两边都比他大,删掉他可以保证最优,这个应该是显然的.这个东西用单调栈维护一下,最后剩下的就是个单调递减或单调递增的数列,从小到大排个序取前面 ...

  8. Java多线程核心知识(跳槽面试必备)

    多线程相对于其他 Java 知识点来讲,有一定的学习门槛,并且了解起来比较费劲.在平时工作中如若使用不当会出现数据错乱.执行效率低(还不如单线程去运行)或者死锁程序挂掉等等问题,所以掌握了解多线程至关 ...

  9. 安装ubuntu是所需的引导

    title Install Ubuntu root (hd0,0) kernel (hd0,0)/vmlinuz boot=casper iso-scan/filename=/ubuntu-16.04 ...

  10. intellij系列编辑器个性化注释说明(定义个人风格的todo)

    有时候我们需要用于自己个性化的注释,不为装逼,只为能够快速找到自己的注释,自己的代码,不迷路... 废话少说,孩儿们看过来: 1.打开你的编辑器,打开setting,搜索TODO: 设置完点击保存去试 ...