通过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 修改主机名

扫描二维码关注公众号,回复: 16707309 查看本文章

# 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 切换成功

猜你喜欢

转载自blog.csdn.net/weixin_42272246/article/details/128459313