概述
192.168.6.128 主/heartbeat1
192.168.6.129 从/heartbeat2
192.168.6.131 漂移地址
主备基础:需要在128和129服务器上,搭建mysql主从复制
- 环境基础配置
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
- 测试heartbeat的vip地址是否可以正常漂移
128:# systemctl stop heartbeat
129:# ip addr
主heartbeat挂掉后,可以正常漂移到从上面
- 主从自动切换脚本
在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
- 测试主库的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 切换成功
最后
以上就是落后皮皮虾为你收集整理的通过heartbeat实现mysql高可用的全部内容,希望文章能够帮你解决通过heartbeat实现mysql高可用所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复