通过heartbeat实现mysql高可用

192.168.6.128  主/heartbeat1

192.168.6.129  从/heartbeat2

192.168.6.131  漂移地址

主备基础:需要在128和129服务器上,搭建mysql主从复制

  1. 环境基础配置

128、129操作

# sed -i "s/SELINUX=enforcing/SELINUX=disabled/g" /etc/selinux/config

# systemctl stop firewalld

128上操作

# hostnamectl set-hostname db1 修改主机名

# vim /etc/sysconfig/network

NETWORKING=yes

HOSTNAME=db1

GATEWAY=192.168.6.1

NETWORKING_IPV6=no

IPV6INIT=no

# vim /etc/hosts 

192.168.6.128 db1

192.168.6.129 db2

129上操作

#hostnamectl set-hostname db2

# vim /etc/sysconfig/network

NETWORKING=yes

HOSTNAME=db2

GATEWAY=192.168.6.1

NETWORKING_IPV6=no

IPV6INIT=no

# vim /etc/hosts 

192.168.6.128 db1

192.168.6.129 db2

2.安装heartbeat(以下内容128、129上都操作)

安装依赖包

# yum -y install gcc gcc-c++ autoconf automake libtool glib2-devel libxml2-devel bzip2-devel e2fsprogs-devel libxslt-devel libtool-ltdl-devel make wget docbook-dtds docbook-style-xsl

# yum install -y glibc glibc-devel glibc-headers glibc-common gcc  bzip2 bzip2-devel glib2-devel

创建用户组

# groupadd haclient

# useradd -g haclient -M -s /sbin/nologin hacluster

解压安装

# rpm -ivh asciidoc-8.6.9-1.el6.rfx.noarch.rpm

注意:

如果装不上,可以强制安装

rpm -ivh asciidoc-8.6.9-1.el6.rfx.noarch.rpm --nodeps

# tar -xvf Cluster_Glue_1.0.12-0a7add1d9996.tar.bz2

# cd Reusable-Cluster-Components-glue--0a7add1d9996/

# ./autogen.sh

#./configure --prefix=/usr/local/heartbeat --with-daemon-user=hacluster --with-daemon-group=haclient  libdir=/usr/local/heartbeat/lib64 --enable-fatal-warnings=no LIBS='/lib64/libuuid.so.1'

# make && make install

# tar -xvf resource-agents-3.9.6.tar.gz

# cd resource-agents-3.9.6/

# ./autogen.sh

#./configure --prefix=/usr/local/heartbeat --with-daemon-user=hacluster --with-daemon-group=haclient  libdir=/usr/local/heartbeat/lib64 CFLAGS=-I/usr/local/heartbeat/include LDFLAGS=-L/usr/local/heartbeat/lib64 --enable-fatal-warnings=no LIBS='/lib64/libuuid.so.1'

# ln -s /usr/local/heartbeat/lib64/* /lib64/

# make && make install

# tar -xvf Heartbeat_3.0.6-958e11be8686.tar.bz2

# cd Heartbeat-3-0-958e11be8686/

# ./bootstrap

#./configure --prefix=/usr/local/heartbeat --with-daemon-user=hacluster --with-daemon-group=haclient  libdir=/usr/local/heartbeat/lib64 CFLAGS=-I/usr/local/heartbeat/include LDFLAGS=-L/usr/local/heartbeat/lib64 --enable-fatal-warnings=no LIBS='/lib64/libuuid.so.1'

# vim /usr/local/heartbeat/include/heartbeat/glue_config.h

删除第50行和最后一行,否则会报错

 

# make && make install

#复制配置文件到安装目录下

# cp -rf doc/ha.cf /usr/local/heartbeat/etc/ha.d/

# cp -rf doc/haresources /usr/local/heartbeat/etc/ha.d/

# cp -rf doc/authkeys /usr/local/heartbeat/etc/ha.d/

# chmod 600 /usr/local/heartbeat/etc/ha.d/authkeys

#注册heartbeat为服务

# chkconfig --add heartbeat

# systemctl enable heartbeat.service

# cd /usr/local/heartbeat/etc/ha.d

# vim authkeys 修改配置文件

 

# vim haresources 最后添加此配置,ens33是服务器网卡的名称,131是VIP

db1 IPaddr::192.168.6.131/24/ens33

128上修改配置内容

# vim ha.cf

logfile /usr/local/heartbeat/ha-log # 用于记录heartbeat的日志信息

logfacility local0

keepalive 2 # 设置心跳间隔

deadtime 60 # 在30秒后宣布节点死亡

warntime 15 # 在日志中发出“late heartbeat“警告之前等待的时间,单位为秒

initdead 90  # 网络启动时间

ucast ens33 192.168.6.129 #从库ip地址

auto_failback off # 当主节点从故障中恢复时,将自动切换到主节点

node db1

node db2 # 集群中机器的主机名与“uname –n”的输出相同。

129上修改配置内容

# vim ha.cf

logfile /usr/local/heartbeat/ha-log # 用于记录heartbeat的日志信息

logfacility local0

keepalive 2 # 设置心跳间隔

deadtime 60 # 在30秒后宣布节点死亡

warntime 15 # 在日志中发出“late heartbeat“警告之前等待的时间,单位为秒

initdead 90  # 网络启动时间

ucast ens33 192.168.6.128 #主库ip地址

auto_failback off # 当主节点从故障中恢复时,将自动切换到主节点

node db1

node db2 # 集群中机器的主机名与“uname –n”的输出相同。

128、129上都操作

# mkdir -p /usr/local/heartbeat/usr/lib/ocf/lib/heartbeat/

# cp -rf /usr/lib/ocf/lib/heartbeat/ocf-* /usr/local/heartbeat/usr/lib/ocf/lib/heartbeat/

# ln -s /usr/local/heartbeat /usr/lib/ocf

注意:两台服务器要检查一下是否有ifconfig这个命令,没有需要安装

# yum install -y net-tools

 

# systemctl start heartbeat

128、129上都启动好后,可以看到128上已经产生了vip131

 

  1. 测试heartbeat的vip地址是否可以正常漂移

128:# systemctl stop heartbeat

129:# ip addr

主heartbeat挂掉后,可以正常漂移到从上面

 

  1. 主从自动切换脚本

在128、129上编写监控脚本/usr/local/heartbeat/stophb.sh

# vim /usr/local/heartbeat/stophb.sh

#! /bin/bash

while true

do

STATUS=`/usr/local/mysql/bin/mysql -uroot -p密码 -e "show databases" |grep -c Database`

if      [ $STATUS -eq 0 ];then

        systemctl stop heartbeat

fi

sleep 30

done

# chmod +x /usr/local/heartbeat/stophb.sh

分别后台启动

# nohup /usr/local/heartbeat/stophb.sh &

# ps -ef|grep stophb

 

  1. 测试主库的mysql挂掉后,vip地址是否可以正常漂移

128:# service mysqld stop

等待30s后,可以看到heartbeat、mysql都已停止,vip也没有了

# ps -ef|grep  heartbeat

 

# ip a

 

129:# ip addr

 

测试切换成功,切换回去

129: # systemctl stop heartbeat

128:# service mysqld start

# systemctl start heartbeat

129:# systemctl start heartbeat

128:# ip a 切换成功

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Re: MySQL 高可用工具 heartbeat 实战部署详解 ===============================================# heartbeat作用(无缝漂移):  通过heartbeat,可以将资源(ip以及程序服务[例如:httpd或mysqld服务]等资源)从一台已经故障的计算机快速转移到另一台正常运转的机器上继续提供服务,即高可用HA 资源的内容包括:ip地址和服务(例如:httpd或mysqld服务) # HeartBeat的工作原理:        a) heartbeat的主备模式(第1种模式)(推荐方式:本章演示重点) 通过修改heartbeat配置文件,可以指定那一台heartbeat服务器作为主服务器,则另一台将自动成为热备服务器然后在热备服务器上配置heartbeat守护程序来监听来自主服务器的心跳消息。如果热备服务器在指定时间内未监听到来自主服务器的心跳,就会启动故障转移程序,并取得主服务器上的相关资源服务的所有权,接替主服务器继续不间断的提供服务,从而达到资源以及服务高可用(HA)的目的。           b) heartbeat主主模式(第2种模式)(不推荐) 两台服务器互为主备,这是他们之间还会互相发送报文来告诉对方自己的当前的状态,如果在指定的时间内未收到对方发送的心跳报文,那么,一方就会认为对方失效或者是已经宕机了,这时每个运行正常的主机就会启动自身的资源接管模块来接管运行在对方主机上的资源或者是服务,继续为用户提供服务。      

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值