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. Mysql历史版本下载地址

    Mysql历史版本下载地址:http://downloads.mysql.com/archives/community/

  2. Java 代码的精优化

    一.避免使用BigDecimal(double) BigDecimal(double) 存在精度损失风险,在精确计算或值比较的场景中可能会导致业务逻辑异常. 反例: // BigDecimal 反例 ...

  3. Qbxt AH d4 && day-6

    /* 这两天考试直接呵呵了. 赶脚对qbxt的题目无感. 同时也发现了自己的一些问题. 一些思路题总是自己傻逼的挖个坑跳进去. 这两天场场倒数ORZ. 始终是最弱的.... 然后NOIP光荣三等奖了吧 ...

  4. 消费端ACK和重回队列

    使用场景 消费端ACK和重回队列 消费端ACK使用场景: 1.消费端进行消费的时候,如果由于业务异常我们可以进行日志记录,然后进行补偿. 2.由于服务器宕机等严重问题,那我们就需要手工进行ACK保障消 ...

  5. react富文本编辑器

    首先安装两个插件 yarn add react-draft-wysiwyg draftjs-to-html --save 使用的代码如下 import React from 'react' impor ...

  6. Ansible常用模块之系统类模块

    cron模块 管理远程主机上的计划任务 [root@tiandong ansible]# ansible all -m cron -a "name='cron test' minute=5 ...

  7. PHP-windows下IDEA配置网页地址

  8. python-无联网情况下安装skt-learn

    请从上到下安装 numpy importlib pytz python-dateutil pandas scipy pasty statemodels backports.functools_lru_ ...

  9. 0.4 IDEA报错以及解决方式

    0.4 IDEA报错以及解决方式一.端口被占用 [WARNING] FAILED SelectChannelConnector@0.0.0.0:8080: java.net.BindException ...

  10. Git客户端执行命令报错: fatal: Authentication failed for'xxxxx.git',但是又不弹出窗口重新输入用户名和密码的解决办法

    1.Git版本:Git-2.17.0 2.引起git报错的原因 在变更远程仓库路径的的时候,弹出过一个窗口输入用户名和密码,但是输错了,之后执行任何拉取和更新的命令都会报如下的错: fatal: Au ...