MHA的搭建

1,环境准备:

DB:mysql-5.7.16

MHA:mha4mysql-manager-0.56.tar.gz、mha4mysql-node-0.56.tar.gz、daemontools-0.76.tar.gz

role       ip
monitor    10.99.121.206
master     10.99.121.209
slave      10.99.121.210
slave      10.99.121.213

主从:

在主上(10.99.121.206)创建复制用户与监控用户

GRANT REPLICATION SLAVE ON *.* TO ‘repluser‘@‘%‘ IDENTIFIED BY ‘123qwe‘;
grant all privileges on *.* to ‘monitor‘@‘%‘ identified by ‘123qwe‘;

在从上(10.99.121.210、10.99.121.213)配置

change master to
master_host=‘10.99.121.209‘,
master_port=3306,
master_user=‘repluser‘,
master_password=‘123qwe‘,
master_log_file=‘binlog.000002‘,
master_log_pos=1009;

set global read_only=on;

2,在所有的node上安装perl依赖、mha-node

master slave install epel and perl-DBD-MySQL
rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
yum install perl-DBD-MySQL -y
yum install -y perl-devel
yum install -y perl-CPAN

master slave install MHA node
tar xf mha4mysql-node-0.56.tar.gz
cd mha4mysql-node-0.56
perl Makefile.PL
make && make install

安装完成后会在/usr/local/bin目录下生成以下脚本文件:

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

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

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

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

3,安装MHA Manager,在MHA Manager的主机也是需要安装MHA Node,MHA Manger也依赖于perl模块

rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
yum install perl-DBD-MySQL -y
yum install -y perl-devel perl-CPAN
yum install perl-DBD-MySQL perl-Config-Tiny perl-Log-Dispatch perl-Parallel-ForkManager perl-Time-HiRes -y

tar xf mha4mysql-node-0.56.tar.gz
cd mha4mysql-node-0.56
perl Makefile.PL
make && make install

tar xf mha4mysql-manager-0.56.tar.gz
cd mha4mysql-manager-0.56
perl Makefile.PL
make && make install

cd /apps/mha4mysql-manager-0.56/samples/scripts
cp * /usr/local/bin/

4,配置SSH登录无密码验证

所有服务器上生成:

ssh-keygen -t rsa

登陆10.99.121.206:

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]

登陆10.99.121.209

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

登陆10.99.121.210

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

登陆10.99.121.213

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

5,配置MHA(登陆10.99.121.206)

(1)创建MHA的工作目录,并且创建相关配置文件(在软件包解压后的目录里面有样例配置文件)

mkdir -p /etc/masterha
cp mha4mysql-manager-0.56/samples/conf/app1.cnf /etc/masterha/

修改app1.cnf配置文件,修改后的文件内容如下

[server default]
manager_workdir=/var/log/masterha/app1
manager_log=/var/log/masterha/app1/manager.log
master_binlog_dir=/data/mysql/mysql_data
master_ip_failover_script= /usr/local/bin/master_ip_failover
ster_ip_online_change_script= /usr/local/bin/master_ip_online_change
password=123qwe
user=monitor
ping_interval=1
remote_workdir=/tmp
repl_password=123qwe
repl_user=repluser
report_script=/usr/local/bin/send_report
secondary_check_script= /usr/local/bin/masterha_secondary_check -s lenovo2 -s lenovo1 --user=repluser --master_host=lenovo1 --master_ip=10.99.121.209 --master_port=3306
shutdown_script=""
ssh_user=root

[server1]
hostname=10.99.121.209
port=3306

[server2]
hostname=10.99.121.210
port=3306
candidate_master=1
check_repl_delay=0

[server3]
hostname=10.99.121.213
port=3306

(2)设置relay log的清除方式(在每个slave节点上)

mysql -uroot -pLenovo123#@! -e "set global relay_log_purge=0"
mysql -uroot -pLenovo123#@! -e "set global relay_log_purge=0"

6,检查SSH配置(10.99.121.206 Monitor 监控节点上操作),如下

[[email protected] masterha]# masterha_check_ssh --conf=/etc/masterha/app1.cnf
Thu May 25 16:55:19 2017 - [warning] Global configuration file /etc/masterha_default.cnf not found. Skipping.
Thu May 25 16:55:19 2017 - [info] Reading application default configuration from /etc/masterha/app1.cnf..
Thu May 25 16:55:19 2017 - [info] Reading server configuration from /etc/masterha/app1.cnf..
Thu May 25 16:55:19 2017 - [info] Starting SSH connection tests..
Thu May 25 16:55:20 2017 - [debug] 
Thu May 25 16:55:19 2017 - [debug]  Connecting via SSH from [email protected](10.99.121.210:22) to [email protected](10.99.121.209:22)..
Thu May 25 16:55:20 2017 - [debug]   ok.
Thu May 25 16:55:20 2017 - [debug]  Connecting via SSH from [email protected](10.99.121.210:22) to [email protected](10.99.121.213:22)..
Thu May 25 16:55:20 2017 - [debug]   ok.
Thu May 25 16:55:20 2017 - [debug] 
Thu May 25 16:55:19 2017 - [debug]  Connecting via SSH from [email protected](10.99.121.209:22) to [email protected](10.99.121.210:22)..
Thu May 25 16:55:19 2017 - [debug]   ok.
Thu May 25 16:55:19 2017 - [debug]  Connecting via SSH from [email protected](10.99.121.209:22) to [email protected](10.99.121.213:22)..
Thu May 25 16:55:20 2017 - [debug]   ok.
Thu May 25 16:55:21 2017 - [debug] 
Thu May 25 16:55:20 2017 - [debug]  Connecting via SSH from [email protected](10.99.121.213:22) to [email protected](10.99.121.209:22)..
Thu May 25 16:55:20 2017 - [debug]   ok.
Thu May 25 16:55:20 2017 - [debug]  Connecting via SSH from [email protected](10.99.121.213:22) to [email protected](10.99.121.210:22)..
Thu May 25 16:55:21 2017 - [debug]   ok.
Thu May 25 16:55:21 2017 - [info] All SSH connection tests passed successfully.

7,检查整个复制环境状况(10.99.121.206 Monitor 监控节点上操作),如下

masterha_check_repl --conf=/etc/masterha/app1.cnf

如果遇到如下错误:

Thu May 25 16:58:30 2017 - [info]   Connecting to [email protected](10.99.121.210:22).. 
Can‘t exec "mysqlbinlog": No such file or directory at /usr/local/share/perl5/MHA/BinlogManager.pm line 106.
mysqlbinlog version command failed with rc 1:0, please verify PATH, LD_LIBRARY_PATH, and client options
 at /usr/local/bin/apply_diff_relay_logs line 493

那在所有mysql数据库上执行:

ln -s /usr/local/mysql/bin/mysqlbinlog /usr/local/bin/mysqlbinlog
ln -s /usr/local/mysql/bin/mysql /usr/local/bin/mysql

8,开启MHA Manager监控(10.99.121.206 Monitor 监控节点上操作)如下

[[email protected] apps]# masterha_check_status --conf=/etc/masterha/app1.cnf
app1 is stopped(2:NOT_RUNNING).
[[email protected] apps]# 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 &
[1] 18587
[[email protected] apps]# masterha_check_status --conf=/etc/masterha/app1.cnf
app1 monitoring program is now on initialization phase(10:INITIALIZING_MONITOR). Wait for a while and try checking again.
[[email protected] apps]# masterha_check_status --conf=/etc/masterha/app1.cnf
app1 (pid:18587) is running(0:PING_OK), master:10.99.121.209
wget http://cr.yp.to/daemontools/daemontools-0.76.tar.gz
tar -zxvf daemontools-0.76.tar.gz
cd admin/daemontools-0.76/
package/install

在src/conf-cc最后加上-include /usr/include/errno.h

[[email protected] apps]# package/install

最后会在admin/daemontools-0.76先建立command目录并存放相关命令,有什么命令我们可以这样查看:

[[email protected] apps]# ls /apps/admin/daemontools-0.76/command
envdir     fghack    pgrphack       setlock    softlimit  svc   svscan      svstat  tai64nlocal
envuidgid  multilog  readproctitle  setuidgid  supervise  svok  svscanboot  tai64n

同时在/usr/local/bin下对上面这些命令建立了软连接方便我们执行

另外创建监控/services目录,并在/etc/inittab下也有变化:

SV:123456:respawn:/command/svscanboot

它使用init的方式来守护自己

[[email protected] apps]# mkdir -p /service/masterha_app1
[[email protected] apps]# vim /service/masterha_app1/run
#!bin/bash
exec masterha_manager --conf=/etc/mha/app1.cnf --wait_on_monitor_error=60 --wait_on_failover_error=60 >> /var/log/masterha/app1/app1.log 2>&1
[[email protected] apps]#chmod 755 /service/masterha_app1/run
##启动monitoring
svc -u /service/masterha_app1
##停止monitoring
svc -d /service/masterha_app1

在此我们先不使用这种方式启动。

时间: 2024-12-21 17:52:58

MHA的搭建的相关文章

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=l

MySQL高可用之MHA的搭建

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

MHA快速搭建

很早之前写过MHA的文章,但是常常在技术群看到有同学问MHA搭建的问题,不是权限问题就是配置问题,我在这里就再次一写下配置过程,快速的搭建.如果想知道的更加详细,猛击这里. 环境: 1主1从,manager放在从库. 主库:192.168.0.10 从库:192.168.0.20 两台机器的mysql安装完成初始化以后进行复制搭建,首先登录主库(192.168.0.10),查看pos点: mysql> show master status; +------------------+-------

CENTOS6.6 下mysql MHA架构搭建

本文来自我的github pages博客http://galengao.github.io/ 即www.gaohuirong.cn 摘要: 本篇是自己搭建的一篇mysql MHA文章 前面的安装步骤基本不变,后面的比如keepalived的配置文件有几种方法 其实想完成keepalived+lvs+atlas(mycat)+mha+mysql主从复制 这样的架构,只是MYCAT单独文章了 每个节点都关闭防火墙,SELINUX. 1.安装epel yum源 wget http://mirrors.

mysql高可用MHA架构搭建

前言:首先介绍一下mha,引用自网络. MHA(Master High Availability)目前在MySQL高可用方面是一个相对成熟的解决方案. 该软件由两部分组成:MHA Manager(管理节点)和MHA Node(数据节点).MHA Manager可以单独部署在一台独立的机器上管理多个master-slave集群,也可以部署在一台slave节点上.MHA Node运行在每台MySQL服务器上,MHA Manager会定时探测集群中的master节点,当master出现故障时,它可以自

一次mysql MHA架构搭建过程

[环境介绍] 系统环境:Red Hat Enterprise Linux 7 + 5.7.18 + MHA version 0.57 系统 IP 主机名 备注 版本 xx系统 192.168.142.111 mysqlmha1 主库 5.7.18 -log MySQL Community Server (GPL) 192.168.142.112 mysqlmha2 备库(预主库) 192.168.142.113 mysqlmha3 备库/MHA MGM 192.168.142.111 mysql

MHA架构搭建

MHA工作原理总结如下: 1.  配置文件检查阶段(整个集群的配置) 2.  宕机奔溃的master保存二进制日志事件且摘除VIP操作 3.  识别含有最新更新的slave 4.  复制dead master和slave相差的中继日志,保存到mha manager具体的目录下面 5.  提升一个slave为新的master 6.  使其他的slave连接新的master进行复制 复制机制: 异步复制: MySQL默认是异步复制,MASTER将事件写入BINLOG,但并不知道SLAVE是否何时已经

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

mha 搭建 及注意事项

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