高可用Mysql主主同步方案

本方案使用heartbeat+mysql主主同步来实现mysql数据库的高可用, 当服务器或者masterheartbeat宕掉以后会自动切换到backup上,服务器或者masterheartbeat恢复以后可以自动切换回来,master继续提供服务。

Ø  优点:

配置简单、,可配置主机恢复后是否切换回master。不存在单点故障。

Ø  缺点:

mysql服务挂掉或者不可用的情况下不能进行自动切换,需要通过crm模式实现或者额外的脚本实现(比如shell脚本监测到mastermysql不可用就将主上的heartbeat停掉,这样就会切换到backup中去)

默认启动以及切换后的backupmysql不会启动起来,因此这对于mysql复制是很不利的。因此需要做好监控,发生切换以后需要手动去启动。或者mysql之间不使用复制,而是用共享存储或者DRBD,这样能解决这个问题。

不方便扩展。

可能会发生脑裂问题。

mysql高可用探究(四)Heartbeat高可用Mysql主主同步方案-LMLPHP

该方案适合只有两台数据库的情况,访问量不大,不需要实现读写分离的情况。

服务器名

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

的安装

Masterbackup服务器都需要安装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的配置主要包括三个配置文件,authkeysha.cfharesources的配置,下面就分别来看!

Ø  Hosts文件的配置

需要在hosts文件中添加masterbackup主机,加快节点间的通信

Masterbackuphosts节点添加的内容一样,我的配置添加如下内容:

vim /etc/hosts

#dbserverpuppet是我的masterbackup的主机名

10.1.1.113 dbserver

10.1.1.75 puppet

Ø  Authkerys的配置

这个文件用来配置密码认证方式,支持3种认证方式,crcmd5sha1,从左到右安全性越来越高,消耗的资源也越多。因此如果heartbeat运行在安全的网路之上,比如私网,那么可以将验证方式设置成crcmasterbackupauthkeys配置一样。我的authkeys文件配置如下:

vim /etc/ha.d/authkeys

auth 1

1 crc

Ø  ha.cf的配置

masterha.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

backupha.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、服务以及磁盘挂载等,masterbackup的配置是一样的,下面的mysqld需要做成服务,放在/etc/rc.d/init.d/目录下,配置配置如下:

vim /etc/ha.d/haresources

dbserver  10.1.1.176/32/eth0 mysqld

的启动

在启动masterbackup上的mysqld启动以后,启动masterbackupkeepalived

/etc/rc.d/init.d/heartbeat start

并将此启动语句加入到masterbackup/etc/rc.local中去

环境搭建好以后,就需要进行周密的测试,看是否实现了预期的功能:

Ø  停掉master上的mysqld,看看是否切换(因为heartheat不检查服务的可用性,因此需要你通过而外的脚本来实现,方法前面已经描述)

Ø  停掉masterheartheat看看是否能正常切换。

Ø  停掉master的网络或者直接将master系统shutdown,看看能否正常切换。

Ø  启动masterheartbeat看看是否能正常切换回来。

Ø  重新启动master看看能否切换过程是否OK

因为heartbeat不监控资源的可用性以及切换后会将资源停止,所以需要加强对资源和heartbeat的监控,推荐采用nagios软件来进行可用性的监控。

09-01 05:48