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. yum update 更新失败

    1.yum安装东西的时候,老是报:There are unfinished transactions remaining. You might consider running yum-complet ...

  2. ettercap局域网DNS切换到恶意网址

    ettercap -i eth0 -Tq -M arp:remote -P dns_spoof /// /// Dns欺骗--Ettercap工具进行Dns欺骗 转载至 https://blog.cs ...

  3. C++中void和void*指针的含义 (指针类型的含义)

    转载自:http://blog.csdn.net/lee_shuai 指针有两个属性:指向变量/对象的地址和长度,但是指针只存储地址,长度则取决于指针的类型:编译器根据指针的类型从指针指向的地址向后寻 ...

  4. (一)C语言的四大数据类型

  5. 关于colab的一些技巧

    1.指定工作文件夹(运行可以相对路径!) # 指定当前的工作文件夹 import os # 此处为google drive中的文件路径,drive为之前指定的工作根目录,要加上 os.chdir(&q ...

  6. java使用解压zip文件,文件名乱码解决方案

    File outFileDir = new File(outDir);if (!outFileDir.exists()) { boolean isMakDir = outFileDir.mkdirs( ...

  7. ccf 201712-4 行车路线(70分)

    ccf 201712-4 行车路线 解题思路: 首先Dijkstra是基于贪心算法的,即每一次作出的选择都具有贪心选择性.此题由于有“如果连续走小道,小明的疲劳值会快速增加,连续走s公里小明会增加s2 ...

  8. a标签的伪类

    a 超链接 伪类:给元素添加特殊的效果 :link 未访问过的链接初始颜色 :visited 访问过后的链接颜色 :hover 鼠标移入(悬停)时的颜色 :active 鼠标按下时链接的颜色 书写时的 ...

  9. 用Intellij idea搭建solr调试环境

    最近在使用solr时,配置会有一些问题,log里面打印出日志了,但是还是不知道发生这样错误的原因.于是想学习一下相关的solr源码,以下是如何搭建solr调试环境步骤. solr调试环境搭建,首先下载 ...

  10. 排查python内存泄露中几个工具的使用

    本文主要介绍3个工具:pdb,objgraph,以及pympler. 1.pdb pdb是专门用于python代码调试,模仿gdb. 使用pdb可以查看堆栈,打印变量等. 这里介绍的是命令行下的pdb ...