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. Error from server (NotFound): the server could not find the requested resource (get services http:heapster:)

    kubectl top pod --all-namespaces Error from server (NotFound): the server could not find the request ...

  2. Laravel dingo,HTTP的请求头(accept)无法携带版本号的解决方法

    Laravel dingo,HTTP的请求头(accept)无法携带版本号的解决方法  2017年9月6日  原创分享  zencodex  使用 Laravel dingo 做api开发时,涉及 A ...

  3. Binary Stirling Numbers

    http://poj.org/problem?id=1430 题目: 求 第二类 斯特林数 的 奇偶性  即 求 s2 ( n , m ) % 2 : 题解: https://blog.csdn.ne ...

  4. 使用Python操作Excel文档(一)

    Python | 使用Python操作Excel文档(一) 0 前言 在阅读本文之前,请确保您已满足或可能满足以下条件: 请确保您具备基本的Python编程能力. 请确保您会使用Excel. 请确保您 ...

  5. MySQL_(Java)提取工具类JDBCUtils

    MySQL_(Java)使用JDBC向数据库发起查询请求 传送门 MySQL_(Java)使用JDBC创建用户名和密码校验查询方法 传送门 MySQL_(Java)使用preparestatement ...

  6. 「CSA Round #41」BFS-DFS

    题目链接 戳我 \(Description\) 给出一个图的\(bfs\)序和\(dfs\)序,构造出一个满足条件的图,边的扫描顺序为读入顺序 \(Solution\) 这个题还是很简单的. 先来看看 ...

  7. CentOS7——卡在在启动界面

    系统在启动时,卡在启动界面比如: 解决方法一 这个时候其实系统已经启动了,如果这台机器之前正确配置好了网络连接的话,此时我们可以使用另外一台机器通过SSH来登录这台机器进行修改. 这个时候将系统出问题 ...

  8. java8 lamda 表达式

  9. LC 470. Implement Rand10() Using Rand7()

    Given a function rand7 which generates a uniform random integer in the range 1 to 7, write a functio ...

  10. vue 登录页面填坑

    上边的导航头,会显示在登陆页面上,暂时的解决办法实: <template> <div style="position: fixed; top:0px; left:0px;h ...