1. 程式人生 > >mysql Heartbeat主主同步方案

mysql Heartbeat主主同步方案

  Heartbeat高可用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

Master和backup伺服器都需要安裝heardheat軟體。下面兩種安裝方式任選其一。

ØRpm包的安裝方式

yum -y install heartbeat-*

Ø原始碼編譯安裝方式

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軟體來進行可用性的監控。