drb+heartbeat完成mysql實時備份
阿新 • • 發佈:2020-10-21
近期公司要上線一個mysql的專案,我們使用drbd+heartbeat進行熱備,以保證db的高可用性,這裡記錄下安裝過程。關於drbd的擴容,縮小空間以及meta資料表的備份等詳細操作這裡就不給出了,感興趣的同學可以參考drbd官網:www.drbd.org,也可以和我交流,mail to:[email protected]
一.下載及安裝
1.yum安裝
yum -y install drbd kmod-drbd
yum -y install heartbeat
modprobe drbd
lsmod |grep drbd
預設安裝的是drbd8.0.x版本的,有網友反映該版本有同步效能有問題,您也可以通過yum安裝最新版,目前最新版本是drbd8.3.x,使用yum -y install drbd83 kmod-drbd83
yum -y install heartbeat.即可
2.原始碼安裝
二.配置drbd
配置檔案位於/etc/drbd.conf,主備份機器都要設定
更改內容如下:
drbd的配置檔案有很多功能,例如:預設啟動是否為primary等,我們這裡只給出最簡單的配置參考:
定義一個名稱為data 的resouce,使用協議C(備機確認機制),限速10M,定義兩個節點(節點名稱等於uname -n),塊裝置名稱為/dev/drbd0對應於分割槽/dev/sda1,meta資料位於分割槽,可以更改其他位置,此處有些許玄機,感興趣的同學請google之。。
準備啟動drbd之前,需要分別在2個主機上的 /dev/sda1 分割槽上建立相應的元資料儲存的資料塊:
drbdadm create-md data## data對應resouce的名稱
service drbd start
預設的情況下,兩臺機器都處於備機狀態,可以通過 /proc/drbd狀態檢視
在需要設定成主機的上面首次同步需要執行:
drbdsetup /dev/drbd0 primary -o #設定為主
mkfs.ext3 /dev/drbd0 #格式化
mkdir /mnt/data
mount /dev/drbd0 /mnt/data #掛載準備使用
touch /mnt/test/{1..100} #寫入測試資料
三.測試切換
設定主機狀態為備份:
umount /mnt/data
drbdadm secondary data
設定備機為主:
drbdadm primary data
mount /dev/drbd 0 /mnt/data
ls /mnt/data #檢視資料是否已經同步過來
四.heartbeat安裝
先了解一下heartbeat的工作原理及配置引數選項內容的含義,可以參考:http://book.51cto.com/art/200912/168031.htm
這裡給出我們的配置引數:
幾點說明:
1.ha.cf檔案用於定義節點名稱,切換超時時間,監視的網絡卡名稱以及是否啟用crm。
2.authkeys定義主備機之間的認證方式,目前有三種,請記得,如果定義了 auth 1則次行一定也是以1開始定義,其他兩種方式也一樣的。
3.haresources檔案則定義需要監視的資源及服務。第一個域是主機的uname -n的名稱,第二個域是告訴heartbeat這是一個drbd塊裝置,第三個域告知drbd的掛載資訊,第四個域說明監視的服務,可以是apache,mysql等,第五個域用於定義vip,會跟從主機的ip漂浮
更改配置檔案後,就可以啟動heartbeat了:
service heartbeat start
五.mysql安裝
mysql的安裝就不說了,注意如果是原始碼安裝,請指定安裝目錄為/mnt/data
六.整體測試(引用):
1) 手工呼叫heartbeat的節點切換指令碼:
執行/usr/lib/heartbeat/hb_standby 指令碼(注意你的),讓heartbeat通知對方節點自己請求變成standby節點,請求對方成為primary節點,切換工作在10s左右即完成.
2) 拔掉網線,測試在primary節點的網路斷開後的切換情況
通過測試,在拔掉網線後,當主節點發現無法和standby節點無法通訊後,會在log中記錄warn資訊,如果延續時間達到在ha.cf中設定的時長後,會開始釋放資 源,standby節點發現無法和主節點通訊一段時間(ha.cf設定)後,開始嘗試啟動資源並將自己active成primary節點。切換過程除開ha.cf中設定的時長之外 的時間段同樣非常短。
3) shutdown primary主機,測試是否能夠正常切換,基本上和上面測試2差不多。
4) primary node 掉電測試,這裡還沒有到機房實際操作過,後面會繼續測試這個操作。
測試結果:
1,正常切換,資料完整。
2,正常切換,但是主從資料相差一條。
3,正常切換,資料完整。
4,正常切換,資料完整。
1) 手工呼叫heartbeat的節點切換指令碼:
執行/usr/lib/heartbeat/hb_standby 指令碼(注意你的),讓heartbeat通知對方節點自己請求變成standby節點,請求對方成為primary節點,切換工作在10s左右即完成.
2) 拔掉網線,測試在primary節點的網路斷開後的切換情況
通過測試,在拔掉網線後,當主節點發現無法和standby節點無法通訊後,會在log中記錄warn資訊,如果延續時間達到在ha.cf中設定的時長後,會開始釋放資 源,standby節點發現無法和主節點通訊一段時間(ha.cf設定)後,開始嘗試啟動資源並將自己active成primary節點。切換過程除開ha.cf中設定的時長之外 的時間段同樣非常短。
3) shutdown primary主機,測試是否能夠正常切換,基本上和上面測試2差不多。
4) primary node 掉電測試,這裡還沒有到機房實際操作過,後面會繼續測試這個操作。
測試結果:
1,正常切換,資料完整。
2,正常切換,但是主從資料相差一條。
3,正常切換,資料完整。
4,正常切換,資料完整。