高可用Mysql主主同步方案
本方案使用heartbeat+mysql主主同步来实现mysql数据库的高可用, 当服务器或者master的heartbeat宕掉以后会自动切换到backup上,服务器或者master的heartbeat恢复以后可以自动切换回来,master继续提供服务。
Ø 优点:
配置简单、,可配置主机恢复后是否切换回master。不存在单点故障。
Ø 缺点:
当mysql服务挂掉或者不可用的情况下不能进行自动切换,需要通过crm模式实现或者额外的脚本实现(比如shell脚本监测到master的mysql不可用就将主上的heartbeat停掉,这样就会切换到backup中去)。
默认启动以及切换后的backup话mysql不会启动起来,因此这对于mysql复制是很不利的。因此需要做好监控,发生切换以后需要手动去启动。或者mysql之间不使用复制,而是用共享存储或者DRBD,这样能解决这个问题。
不方便扩展。
可能会发生脑裂问题。
该方案适合只有两台数据库的情况,访问量不大,不需要实现读写分离的情况。
服务器名 | IP | VIP | 系统 | Mysql |
Master | 10.1.1.113 | 10.1.1.176 | Centos 5.5 64bit | 5.1.63 |
Backup | 10.1.1.75 | 10.1.1.176 | Centos 5.5 64bit | 5.1.63 |
的安装和配置
Mysql的安装和配置相对来讲非常简单,这里就不做介绍,有兴趣的朋友可以查看我博客中关于mysql 5.1.63版本自动安装的文章http://blog.chinaunix.net/uid-20639775-id-3168737.html
的主主同步配置
Mysql的主主同步这里也不做介绍了,有兴趣的话可以看一下我博文中关于mysql主从同步管理的介绍,主主同步和主从同步差不多,只是互为主从而已,链接如下:http://blog.chinaunix.net/uid-20639775-id-3254611.html
的安装
Master和backup服务器都需要安装heardheat软件。下面两种安装方式任选其一。
Ø Rpm包的安装方式
yum -y install heartbeat-*
Ø 源代码编译安装方式
wget http://www.ultramonkey.org/download/heartbeat/2.1.3/heartbeat-2.1.3.tar.gz
tar xzvf heartbeat-2.1.3.tar.gz
cd heartbeat-2.1.3
./configure
Make
make install
的配置
Hearbeat的配置主要包括三个配置文件,authkeys,ha.cf和haresources的配置,下面就分别来看!
Ø Hosts文件的配置
需要在hosts文件中添加master和backup主机,加快节点间的通信
Master和backup的hosts节点添加的内容一样,我的配置添加如下内容:
vim /etc/hosts
#dbserver和puppet是我的master和backup的主机名
10.1.1.113 dbserver
10.1.1.75 puppet
Ø Authkerys的配置
这个文件用来配置密码认证方式,支持3种认证方式,crc,md5和sha1,从左到右安全性越来越高,消耗的资源也越多。因此如果heartbeat运行在安全的网路之上,比如私网,那么可以将验证方式设置成crc,master和backup的authkeys配置一样。我的authkeys文件配置如下:
vim /etc/ha.d/authkeys
auth 1
1 crc
Ø ha.cf的配置
master的ha.cf的配置
vim /etc/ha.d/ha.cf
logfile /var/log/ha-log
logfacility local0
keepalive 2
deadtime 30
warntime 10
initdead 60
udpport 694
ucast eth0 10.1.1.75
auto_failback on
node dbserver
node puppet
ping 10.1.1.1
respawn hacluster/usr/lib64/heartbeat/ipfail
backup的ha.cf的配置
vim /etc/ha.d/ha.cf
logfile /var/log/ha-log
logfacility local0
keepalive 2
deadtime 30
warntime 10
initdead 60
udpport 694
ucast eth0 10.1.1.113
auto_failback on
node dbserver
node puppet
ping 10.1.1.1
respawn hacluster/usr/lib64/heartbeat/ipfail
Ø haresources的配置
haresources用来设置master的主机名、虚拟IP、服务以及磁盘挂载等,master和backup的配置是一样的,下面的mysqld需要做成服务,放在/etc/rc.d/init.d/目录下,配置配置如下:
vim /etc/ha.d/haresources
dbserver 10.1.1.176/32/eth0 mysqld
的启动
在启动master和backup上的mysqld启动以后,启动master和backup的keepalived:
/etc/rc.d/init.d/heartbeat start
并将此启动语句加入到master和backup的/etc/rc.local中去
环境搭建好以后,就需要进行周密的测试,看是否实现了预期的功能:
Ø 停掉master上的mysqld,看看是否切换(因为heartheat不检查服务的可用性,因此需要你通过而外的脚本来实现,方法前面已经描述)。
Ø 停掉master的heartheat看看是否能正常切换。
Ø 停掉master的网络或者直接将master系统shutdown,看看能否正常切换。
Ø 启动master的heartbeat看看是否能正常切换回来。
Ø 重新启动master看看能否切换过程是否OK。
因为heartbeat不监控资源的可用性以及切换后会将资源停止,所以需要加强对资源和heartbeat的监控,推荐采用nagios软件来进行可用性的监控。