mha 环境搭建

测试环境:

系统:CentOS 6.5 64bits

DB: mysql 5.6.25

monotor  192.168.1.96   manager

node01   192.168.1.95   master

node02   192.168.1.94   master_candidate

node03   192.168.1.93   slave

前期准备工作:

(1).修改计算机名称

cat /etc/sysconfig/network

NETWORKING=yes

HOSTNAME=localhost.localdomain

(2).添加域名解析

/etc/hosts

mha的安转:

1.在所有的节点上安装

yum install perl-DBD-MySQL -y

2.下载mha软件

谷歌镜像: https://173.255.143.197/

mha 下载地址:

https://code.google.com/p/mysql-master-ha

mha4mysql-manager-0.56.tar.gz

mha4mysql-node-0.56.tar.gz

3.在所有的节点上安装mha-node(包括管理节点) | mha4mysql-node-0.56.tar.gz

tar -zxvf  mha4mysql-node-0.56.tar.gz

cd mha4mysql-node-0.56

perl Makefile.PL

make && make install

安装node报错:

Can‘t locate ExtUtils/MakeMaker.pm in @INC

yum -y install perl-devel  perl-CPAN

安装完node后会生成以下几个脚本。

[[email protected] ~]# cd /usr/local/bin

[[email protected] bin]# ll

total 44

-r-xr-xr-x 1 root root 16367 Jun  9 14:12 apply_diff_relay_logs

-r-xr-xr-x 1 root root  4807 Jun  9 14:12 filter_mysqlbinlog

-r-xr-xr-x 1 root root  8261 Jun  9 14:12 purge_relay_logs

-r-xr-xr-x 1 root root  7525 Jun  9 14:12 save_binary_logs

save_binary_logs               //保存和复制master的二进制日志

apply_diff_relay_logs          //识别差异的中继日志事件并将其差异的事件应用于其他的slave

filter_mysqlbinlog             //去除不必要的ROLLBACK事件(MHA已不再使用这个工具)

purge_relay_logs               //清除中继日志(不会阻塞SQL线程)

4.在管理节点上(manager)上安装  | mha4mysql-manager-0.56.tar.gz

安装依赖包:

yum install perl-DBD-MySQL perl-Config-Tiny perl-Log-Dispatch perl-Parallel-ForkManager perl-Time-HiRes -y

tar -zxvf mha4mysql-manager-0.56.tar.gz

cd  mha4mysql-manager-0.56

perl Makefile.PL

make && make install

安装完manager之后会生成以下脚本

[[email protected] mha4mysql-manager-0.56]# cd  /usr/local/bin

[[email protected] bin]# ll

total 84

-r-xr-xr-x 1 root root 16367 Jun  9 14:19 apply_diff_relay_logs

-r-xr-xr-x 1 root root  4807 Jun  9 14:19 filter_mysqlbinlog

-r-xr-xr-x 1 root root  1995 Jun  9 14:23 masterha_check_repl

-r-xr-xr-x 1 root root  1779 Jun  9 14:23 masterha_check_ssh

-r-xr-xr-x 1 root root  1865 Jun  9 14:23 masterha_check_status

-r-xr-xr-x 1 root root  3201 Jun  9 14:23 masterha_conf_host

-r-xr-xr-x 1 root root  2517 Jun  9 14:23 masterha_manager

-r-xr-xr-x 1 root root  2165 Jun  9 14:23 masterha_master_monitor

-r-xr-xr-x 1 root root  2373 Jun  9 14:23 masterha_master_switch

-r-xr-xr-x 1 root root  5171 Jun  9 14:23 masterha_secondary_check

-r-xr-xr-x 1 root root  1739 Jun  9 14:23 masterha_stop

-r-xr-xr-x 1 root root  8261 Jun  9 14:19 purge_relay_logs

-r-xr-xr-x 1 root root  7525 Jun  9 14:19 save_binary_logs

master_ip_failover  //自动切换时vip管理的脚本,不是必须,如果我们使用keepalived的,我们可以自己编写脚本完成对vip的管理,

比如监控mysql,如果mysql异常,我们停止keepalived就行,这样vip就会自动漂移

master_ip_online_change  //在线切换时vip的管理,不是必须,同样可以可以自行编写简单的shell完成

power_manager   //故障发生后关闭主机的脚本,不是必须

send_report    //因故障切换后发送报警的脚本,不是必须,可自行编写简单的shell完成

5.配置SSH登录无密码验证

将manager主机的秘钥cp 到其他节点(node)

ssh-keygen -t rsa

ssh-copy-id -i /root/.ssh/id_rsa.pub [email protected]

ssh-copy-id -i /root/.ssh/id_rsa.pub [email protected]

ssh-copy-id -i /root/.ssh/id_rsa.pub [email protected]

node 操作。

ssh-keygen -t rsa

ssh-copy-id -i /root/.ssh/id_rsa.pub [email protected]

ssh-copy-id -i /root/.ssh/id_rsa.pub [email protected]

note:

monitor需要登录其他所有节点主机,其他各个节点主机需要相互登录,不需要登录monitor。

6.搭建复制环境。

在所有的非主库上执行添加以下两个参数:

read_only = 1  (在所有的非候选master上添加这个参数,保证数据的安全)--动态变量

relay_log_purge = 0 (不能让mysql自动清除中级日志,在所有的slave上添加) --动态变量

在所有的节点上创建以下复制账号

grant replication slave on *.* to ‘repl‘@‘192.168.1.%‘ identified by ‘123456‘;  #  复制账号

创建监控账号:

grant all privileges on *.* to ‘root‘@‘192.168.1.%‘ identified by ‘123456‘;

7.在管理节点(manager)上配置配置文件。

vi /etc/masterha/app1.cnf

[server default]

manager_log=/var/log/masterha/app1/manager.log   # 日志文件

manager_workdir=/var/log/masterha/app1           # 工作目录,包括日志文件,差异二进制日志文件

master_binlog_dir=/var/lib/mysql/                # 节点binlog的位置

master_ip_failover_script=/usr/local/bin/master_ip_failover    # 自动故障转移脚本

password=123456                                                # 监控账号的密码(mysql)

ping_interval=1                                                 # 健康巡检频率

remote_workdir=/tmp             # 远程主机临时binlog目录  如果不存在,系统自动创建此目录

repl_password=123456            # 复制账号密码

repl_user=repl                  # 复制账号

report_script=/usr/local/bin/send_report            # 警报脚本

secondary_check_script=masterha_secondary_check -s node03 -s node02

shutdown_script=""    # 关机脚本,防止脑裂(这个似乎有点问题,我是在master_ip_failover_script脚本中关闭mysql的)

ssh_user=root           # ssh 账号

user=root                 #  监控账号(mysql)

[server1]

candidate_master=1                        # 是否为候选master

check_repl_delay=0                        # 是否忽略候选主机的延迟

hostname=192.168.1.93

[server2]

candidate_master=1

check_repl_delay=0

hostname=192.168.1.94

7.mha的参数研究(secondary_check_script)

/usr/local/bin/masterha_secondary_check   -s 10.45.20.59  -s 10.47.89.236   --user=root --master_host=db-group2-master --master_ip=10.47.90.163 --master_port=3306

说明: 首先检查monitor 到 10.45.20.59 的ssh是否是通的   ,再检查从 10.45.20.59 到master的 指定的端口号是否是通的,

如果第一步骤失败了 ,就不会再检查后面的机器了 ;

如果第一步成功了,第二步骤失败了,就会检查后面的机器

如果第一步和第二步都成功了  ,就不会再检查下面的机器了

前提条件:monitor到指定机器的ssh是通。

8.监测mah是否正常,如果正常就开启mha服务:

masterha_check_ssh  --conf=/etc/masterha/app1.cnf (检查ssh连接状态)

masterha_check_repl --conf=/etc/masterha/app1.cnf (检查整个复制环境状态)

9.开启mha管理服务并且后台运行

nohup masterha_manager --conf=/etc/masterha/app1.cnf --remove_dead_master_conf --ignore_last_failover < /dev/null > /var/log/masterha/app1/manager.log 2>&1 &

参数解释:

remove_dead_master_conf:当发生主从切换的时候,老主库ip将会从配置文件中移除。ignore_last_failover:在缺省情况下,如果MHA检测到连续发生宕机,且两次宕机间隔不足8小时的话,则不会进行Failover,之所以这样限制是为了避免ping-pong效应。该参数代表忽略上次MHA触发切换产生的文件,默认情况下,MHA发生切换后会在日志目录,也就是上面我设置的/data产生app1.failover.complete文件,下次再次切换的时候如果发现该目录下存在该文件将不允许触发切换,

除非在第一次切换后收到删除该文件,为了方便,这里设置为--ignore_last_failover。

10.监测监控服务是否开启。

masterha_check_status --conf=/etc/masterha/app1.cnf(检查manager的状态)

11.mha 常用命令:

masterha_stop  --conf=/etc/masterha/app1.cnf(关闭manager服务)

masterha_manager : 开启manager服务 。

masterha_master_switch : 切换脚本

# mha 手动切换,在进行手动切换的时候必须确保master已死掉

masterha_master_switch --conf=/etc/masterha/app1.cnf --master_state=dead --dead_master_host=192.168.1.95 --dead_master_port=3306 --new_master_host=192.168.1.94 --new_master_port=3306 --ignore_last_failover

# mha在线切换

masterha_master_switch --conf=/etc/masterha/app1.cnf --master_state=alive --new_master_host=192.168.2.129 --new_master_port=3306 --orig_master_is_new_slave --running_updates_limit=10000  --ignore_last_failover

参数解释:

running_updates_limit:候选master延迟在设定时间内允许切换。

ignore_last_failover:防止mha在短时间内多次切换

自动切换失败之后,可以手动强制切换:

masterha_master_switch --conf=/etc/masterha/app1.cnf --master_state=dead --dead_master_host=192.168.1.93 --dead_master_port=3306 --new_master_host=192.168.1.94 --new_master_port=3306 --ignore_last_failover

开启mha服务

nohup masterha_manager --conf=/etc/masterha/app1.cnf --remove_dead_master_conf --ignore_last_failover < /dev/null > /var/log/masterha/app1/manager.log 2>&1 &

mha的日常维护:

http://www.csdn123.com/html/itweb/20131024/184394.htm

mha参考链接:

http://www.cnblogs.com/xuanzhi201111/p/4231412.html

http://www.2cto.com/database/201407/319748.html

http://os.51cto.com/art/201307/401702_all.htm

当个mhamanager节点监控管理多个master-slave复制集群

http://www.linuxidc.com/Linux/2015-04/116168.htm

时间: 2024-08-25 02:55:49

mha 环境搭建的相关文章

MHA环境搭建【3】node相关依赖的解决

mha的node软件包依赖于perl-DBD-Mysql 这个包,我之前有遇到过用yum安装perl-DBD-MySQL,安装完成后不能正常使用的情况,所以这里选择源码编译安装: perl5.10.1这个版本的Socket 模块由于没有导出gethostinfo,getipinfo这两个函数,所以mha在这个版本的perl解释器上执行会出错,所以要升级一下Socket模块. [1]安装依赖的依赖.由于要用到编译安装.所以先要把gcc编译器安装上. yum -y install gcc gcc-c

MySQL MHA高可用环境搭建

一.安装MHA基本环境 1. 安装MHA node (1) 基本环境说明,本文参考互联网文章学习,搭建MHA与测试如下. 参考文档:http://www.cnblogs.com/xuanzhi201111/p/4231412.html 角色                IP地址            主机名    =============================================    Master              192.168.1.121     node

MySQL高可用之MHA的搭建

MySQL MHA架构介绍: MHA(Master High Availability)目前在MySQL高可用方面是一个相对成熟解决方案,它由日本DeNA公司youshimaton(现就职于Facebook公司)开发,是一套优秀的作为MySQL高可用性环境下故障切换和主从提升的高可用软件.在MySQL故障切换过程中,MHA能做到在0~30秒之内自动完成数据库故障切换操作,并且在进行故障切换的过程中,MHA能在最大程度上保证数据的一致性,以达到真正的高可用. 该软件由两部分组成:MHA Manag

MySQL高可用架构-MHA环境部署记录

一.MHA介绍 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 MHA(Master High Availability)目前在MySQL高可用方面是一个相对成熟的解决方案,它由日本DeNA公司youshimaton(现就职于Facebook公司)开发,是日本的一位 MySQL专家采用Perl语言编写的一个脚本管理工具,该工具仅适用于MySQLReplication(二层)环境,目的在于维持Master主库的高可用性.是一套优秀的作为MySQL高可用性 环境下故障切

一、环境搭建

1 更新到最新版本的pip(这是安装python扩展包的一个插件)命令如下: python -m pip install --upgrade pip 2 使用pip安装virtualenv,命令 pip install virtualenv  如果要指定版本号,pip install virtualenv==15.0.1(安装虚拟环境) 3 创建django虚拟环境,命令 virtualenv django_basic_venv 4 使用虚拟环境 需要进入到安装目录的Scripts文件夹下,运行

Ionic2环境搭建及文件目录介绍

[注]引用自:http://blog.csdn.net/jasonzds/article/details/53821184 1环境搭建 一年前研究混合框架,初步确定了四种方案给公司选择,ionic,hbuilder,wex5,react-native这四个框架各有优缺点,ionic和react-native是国外框架,相对好一点,文档更新很快,就不一一说了,大概的思路都是一样的,js逻辑实现,同时调用原生功能,h5,css3 UI实现,其实他们都有自己的ui框架,当时选择了国内的hbuiler,

Selenium+Java+Eclipse 自动化测试环境搭建

一.下载Java windows java下载链接 https://www.java.com/zh_CN/download/win10.jsp 二.安装Java 安装好后检查一下需不需要配置环境变量,现在java 8已经不用配置环境变量了,直接在命令行输入:java -version 三.下载和安装Eclipse windows Eclipse下载链接 https://www.eclipse.org/downloads/ 你也可以下载绿色版 四.下载selenium,然后解压 selenium

Qt在Mac OS X下的编程环境搭建(配置Qt库和编译器,有图,很清楚)

尊重作者,支持原创,如需转载,请附上原地址:http://blog.csdn.net/libaineu2004/article/details/46234079 在Mac OS X下使用Qt开发,需要配置Qt库和编译器.编译器只能使用苹果公司自主研发的Clang.1.分别下载并安装XCode和Command Line Tools(必须安装),安装完毕后,Clang就有了. https://developer.apple.com/downloads/ 2.下载Qt并默认安装 http://down

基于 Eclipse 的 MapReduce 开发环境搭建

文 / vincentzh 原文连接:http://www.cnblogs.com/vincentzh/p/6055850.html 上周末本来要写这篇的,结果没想到上周末自己环境都没有搭起来,运行起来有问题的呢,拖到周一才将问题解决掉.刚好这周也将之前看的内容复习了下,边复习边码代码理解,印象倒是很深刻,对看过的东西理解也更深入了. 目录 1.概述 2.环境准备 3.插件配置 4.配置文件系统连接 5.测试连接 6.代码编写与执行 7.问题梳理 7.1 console 无日志输出问题 7.2