lenf 发表于 2013-3-13 10:06:02

Mysql主主利用heartbeat高可用

1.1方案简介
本方案使用heartbeat+mysql主主同步来实现mysql数据库的高可用, 当服务器或者master的heartbeat宕掉以后会自动切换到backup上,服务器或者master的heartbeat恢复以后可以自动切换回来,master继续提供服务。
1.2方案优缺点
Ø优点:
配置简单、可配置主机恢复后是否切换回master。不存在单点故障。
Ø缺点:
当mysql不可用的情况下不能进行自动切换,需要通过crm模式实现或者额外的脚本实现(比如shell脚本监测到master的mysql不可用就将主上的heartbeat停掉,这样就会切换到backup中去)。
不方便扩展。
可能会发生脑裂问题。
1.3方案架构图
1.4适用场景
该方案适合只有两台数据库的情况,访问量不大,不需要实现读写分离的情况。
1.5方案实战
1.5.1 实战环境介绍


服务器名
IP
VIP
系统
Mysql

MasterA
192.168.1.28
192.168.1.30
Centos 6.3 64bit
5.5.27

MasterB
192.168.1.29
Centos 6.3 64bit
5.5.27

1.5.2 Mysql的安装和配置以及主主同步配置
参考http://bingodeng.blog./1038075/1151900
1.5.4 Heardbeat的安装
A,B服务器都需要安装heardheat软件。下面两种安装方式任选其一。
ØRpm包的安装方式,下载yum源
wget http://mirrors.sohu.com/fedora-epel/6/x86_64/epel-release-6-8.noarch.rpm
rpm -ivh epel-release-6-8.noarch.rpm
yum -y install heartbeat-*
Ø源代码编译安装方式
wget http://hg.linux-ha.org/heartbeat-STABLE_3_0/archive/7e3a82377fa8.tar.bz2
# tar xf 7e3a82377fa8.tar.bz2
cd Heartbeat-3-0-7e3a82377fa8/cd heartbeat-2.1.3
./configure
Make
make install
1.5.5 Heartbeat的配置
Hearbeat的配置主要包括三个配置文件,authkeys,ha.cf和haresources的配置,下面就分别来看!
cp /usr/share/doc/heartbeat-3.0.4/authkeys /etc/ha.d/
cp /usr/share/doc/heartbeat-3.0.4/ha.cf /etc/ha.d/
cp /usr/share/doc/heartbeat-3.0.4/haresources /etc/ha.d/
ØHosts文件的配置
需要在hosts文件中添加masterA和master B主机,加快节点间的通信
Master A和master B的hosts节点添加的内容一样,我的配置添加如下内容:
vim /etc/hosts
192.168.1.28    master1
192.168.1.29    master2
Ø主机名配置
1 ~]# vim /etc/sysconfig/network
HOSTNAME=master1
# vim /etc/sysconfig/network
HOSTNAME=master2
Ø禁用selinux
[root@master1 ~]# vim /etc/selinux/config
SELINUX=disabled
[root@master2 ~]# vim /etc/selinux/config
SELINUX=disabled
ØAuthkerys的配置
这个文件用来配置密码认证方式,支持3种认证方式,crc,md5和sha1,从左到右安全性越来越高,消耗的资源也越多。因此如果heartbeat运行在安全的网路之上,比如私网,那么可以将验证方式设置成crc,A和B的authkeys配置一样。我的authkeys文件配置如下:
vim /etc/ha.d/authkeys
auth 1
1 crc
Øha.cf的配置
Master A的ha.cf的配置
vim /etc/ha.d/ha.cf
logfile/var/log/ha-log
logfacilitylocal0
keepalive 2
deadtime 30
warntime 10
initdead 120
udpport694
ucast eth0 192.168.1.28 master A的IP
auto_failback on
node    master1
node    master2
ping 10.10.10.254网关
respawn hacluster /usr/lib64/heartbeat/ipfail 默认是lib修改lib64
compressionbz2
compression_threshold 2
Master B的ha.cf的配置
vim /etc/ha.d/ha.cf
logfile/var/log/ha-log
logfacilitylocal0
keepalive 2
deadtime 30
warntime 10
initdead 120
udpport694
ucast eth0 192.168.1.29
auto_failback on
node    master1
node    master2
ping 10.10.10.254
respawn hacluster /usr/lib64/heartbeat/ipfail
compressionbz2
compression_threshold 2
ØA,B 服务器haresources的配置一样
haresources用来设置master的主机名、虚拟IP、服务以及磁盘挂载等,master和backup的配置是一样的,下面的mysqld需要做成服务,放在/etc/rc.d/init.d/目录下,配置配置如下:
vim /etc/ha.d/haresources 添加下面一行
master2 192.168.1.30/24/eth0 mysqld 这表示资源将在启动在master1
1.5.6 Heartbeat的启动
在启动master A和master B上的mysqld启动以后,再启动master A和master B的heartbeat:
1 ~]# chkconfig heartbeat on
# chkconfig heartbeat on
# ifconfig 查看虚拟IP没有起来
eth0:0    Link encap:EthernetHWaddr 00:0C:29:48:D0:64
          inet addr:192.168.1.30Bcast:192.168.1.255Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICASTMTU:1500Metric:1
1.5.7 方案测试
环境搭建好以后,就需要进行周密的测试,看是否实现了预期的功能:
Ø停掉master A上的mysqld,看看是否切换
Ø停掉master A的heartheat看看是否能正常切换。
Ø停掉master A的网络或者直接将master系统shutdown,看看能否正常切换。
Ø启动master A的heartbeat看看是否能正常切换回来。
Ø重新启动master看看能否切换过程是否OK。
1.5.8 解决问题
如果重启机器后heartbeat不能启动,则需要查看/var/log/ha-log
ERROR: Current node not in configuration!
配置文件有问题,由于我临时用hostname修改的主机名,重启后不生效。需要修改主机名与ha.cf中定义的node后面的一样
ERROR: glib: ucast: error binding socket. Retrying: Permission denied
禁用selinux

qq591577286 发表于 2013-3-19 19:19:39

有竞争才有进步嘛

xiguaqq20 发表于 2013-5-18 02:25:30

精典之极就是精斑!!!

xxl520 发表于 2013-5-22 13:27:53

很多女明星不红的原因是因为没有张开腿*^_^*

fswdnr 发表于 2013-5-29 13:22:22

你的丑和你的脸没有关系。。。。。。

中国网络水泥 发表于 2013-6-5 12:29:27

我的id是假冒的,大家不要相信我是骗子。

opo 发表于 2013-6-14 07:06:41

所有刻骨铭心的爱都灵魂游离于床上的瞬间!
页: [1]
查看完整版本: Mysql主主利用heartbeat高可用