程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> mysql高可用之DRBD + HEARTBEAT + MYSQL,drbdheartbeat

mysql高可用之DRBD + HEARTBEAT + MYSQL,drbdheartbeat

編輯:MySQL綜合教程

mysql高可用之DRBD + HEARTBEAT + MYSQL,drbdheartbeat


1. 架構

Mysql:

master<=slave

10.24.6.4:3306<=10.24.6.6:3306

VIP:

10.24.6.20

必須使得VIP和mysql處於同一網段,否則無法ping通過

 

2. 參考文檔

http://wenku.baidu.com/link?url=QF1pG6DGMtl2uV1yt998xCduKsiEO7Bwn4CW79g0nx6EUw4iNgcBUz_jAA1W0FigPhjpiIs8FPLc9TxvFq_Yx7G-VvWeikFLzZchifM_tSS


3. DRBD 共享內存設置

共享硬盤/dev/sdb1

3.1. 創建一個新硬盤/dev/sdb1但是不要掛載任何目錄

 

 

3.2. 修改hosts文件和主機名

在10.24.6.4上

echo "10.24.6.4 drbd01" >> /etc/hosts

echo "drbd01" > /etc/hostname

在10.24.6.6上

echo "10.24.6.6 drbd02" >> /etc/hosts

echo "drbd02" > /etc/hostname

3.3.安裝drbd

在10.24.6.4/10.24.6.6上

sudo apt-get install drbd8-utils

 

3.4.配置drbd.conf(/etc/drbd.conf)的配置文件(主從都要做)

vim /etc/drbd.conf默認信息為:

       include "/etc/drbd.d/global_common.conf";

   include "/etc/drbd.d/*.res";  

這樣你需要去配置global_common.conf以及新建一個以res結尾的資源文件,這裡為r0.res

3.5. 配置global_common.conf(主從都要做)

vim /etc/drbd.d/global_common.conf 

 

global {  

usage-count no;   //幫LINBIT公司統計drbd使用量 } 

common {  

protocol C;//C為最安全同時也是性能最好的一種確認寫操作完成的方法 

syncer {   

rate 100M;     //同步的速率 

}

 }        

3.6.配置ro.res(主從都要做)

sudo vim /etc/drbd.d/r0.res

resource r0 {//r0資源名稱,以後很多地方會用到

         on drbd01 {

                   device       /dev/drbd0;               //邏輯設備的路徑

                   disk  /dev/sdb1;                 //物理設備

                   address    10.24.6.4:7788;       //主節點

                   meta-disk internal;

         }

         on drbd02 {

                   device       /dev/drbd0;

                   disk  /dev/sdb1;

                   address    10.24.6.6:7788;       //從節點

                   meta-disk internal;

         }

}

不可以有注釋

3.7. 初始化drbd的metadata(在主節點上操作)

10.24.6.4:

Sudo drbdadm create-md r0

 

3.8. 錯誤處理

   

執行如下命令: dd if=/dev/zero bs=1M count=1 of=/dev/sdb1;sync 

再次執行drbdadm create-md r0看到success則表示成功。

   

3.9. 啟動drbd服務(主從都執行)

/etc/init.d/drbd start

 

cat /proc/drbd 

ro:Secondary/ Secondary表示還沒有建立主盤

ds:Inconsistent/Inconsistent表示兩節點(master/slave)的邏輯設備(即/dev/drbd0)中的數據未同步

本地和對等節點的硬盤有可能為下列狀態之一:
Diskless 無盤:本地沒有塊設備分配給DRBD使用,這表示沒有可用的設備,或者使用drbdadm命令手工分離或是底層的I/O錯誤導致自動分離
Attaching:讀取無數據時候的瞬間狀態
Failed 失敗:本地塊設備報告I/O錯誤的下一個狀態,其下一個狀態為Diskless無盤
Negotiating:在已經連接的DRBD設置進行Attach讀取無數據前的瞬間狀態
Inconsistent:數據是不一致的,在兩個節點上(初始的完全同步前)這種狀態出現後立即創建一個新的資源。此外,在同步期間(同步目標)在一個節點上出現這種狀態
Outdated:數據資源是一致的,但是已經過時
DUnknown:當對等節點網絡連接不可用時出現這種狀態
Consistent:一個沒有連接的節點數據一致,當建立連接時,它決定數據是UpToDate或是Outdated
UpToDate:一致的最新的數據狀態,這個狀態為正常狀態

3.10. 端口檢測

10.24.6.4:

10.24.6.6:

 

3.11. 初始化網絡硬盤(主節點執行)

drbdadm -- --overwrite-data-of-peer primary r0

 

查看同步進度

cat /proc/drbd 

ds:UpToDate/Inconsistent表示兩節點正在同步數據

3.12. 啟用和禁用資源(不必須)

######手動啟用資源 
drbdadm up <resource> 
######手動禁用資源 
drbdadm down <resource> 
注釋: 
resource:為資源名稱;當然也可以使用all表示[停用|啟用]所有資源

3.13. 升級和降級資源(不必須)

######升級資源 
drbdadm primary <resource> 
######降級資源 
drbdadm secondary <resource> 
注釋:在單主模式下的DRBD,兩個節點同時處於連接狀態,任何一個節點都可以在特定的時間內變成主;但兩個節點中只能一為主,如果已經有一個主,需先降級才可能升級;在雙主模式下沒有這個限制

3.14. 如何查看資源連接狀態

[root@nod1 ~]# drbdadm cstate r0  #r0為資源名稱 
Connected

   

狀態意義:

資源的連接狀態;一個資源可能有以下連接狀態中的一種
StandAlone 獨立的:網絡配置不可用;資源還沒有被連接或是被管理斷開(使用 drbdadm disconnect 命令),或是由於出現認證失敗或是腦裂的情況
Disconnecting 斷開:斷開只是臨時狀態,下一個狀態是StandAlone獨立的
Unconnected 懸空:是嘗試連接前的臨時狀態,可能下一個狀態為WFconnection和WFReportParams
Timeout 超時:與對等節點連接超時,也是臨時狀態,下一個狀態為Unconected懸空
BrokerPipe:與對等節點連接丟失,也是臨時狀態,下一個狀態為Unconected懸空
NetworkFailure:與對等節點推動連接後的臨時狀態,下一個狀態為Unconected懸空
ProtocolError:與對等節點推動連接後的臨時狀態,下一個狀態為Unconected懸空
TearDown 拆解:臨時狀態,對等節點關閉,下一個狀態為Unconected懸空
WFConnection:等待和對等節點建立網絡連接
WFReportParams:已經建立TCP連接,本節點等待從對等節點傳來的第一個網絡包
Connected 連接:DRBD已經建立連接,數據鏡像現在可用,節點處於正常狀態
StartingSyncS:完全同步,有管理員發起的剛剛開始同步,未來可能的狀態為SyncSource或PausedSyncS
StartingSyncT:完全同步,有管理員發起的剛剛開始同步,下一狀態為WFSyncUUID
WFBitMapS:部分同步剛剛開始,下一步可能的狀態為SyncSource或PausedSyncS
WFBitMapT:部分同步剛剛開始,下一步可能的狀態為WFSyncUUID
WFSyncUUID:同步即將開始,下一步可能的狀態為SyncTarget或PausedSyncT
SyncSource:以本節點為同步源的同步正在進行
SyncTarget:以本節點為同步目標的同步正在進行
PausedSyncS:以本地節點是一個持續同步的源,但是目前同步已經暫停,可能是因為另外一個同步正在進行或是使用命令(drbdadm pause-sync)暫停了同步
PausedSyncT:以本地節點為持續同步的目標,但是目前同步已經暫停,這可以是因為另外一個同步正在進行或是使用命令(drbdadm pause-sync)暫停了同步
VerifyS:以本地節點為驗證源的線上設備驗證正在執行
VerifyT:以本地節點為驗證目標的線上設備驗證正在執行

3.15. 資源同步完成

10.24.6.4:

10.24.6.6:

3.16. 數據同步測試

現在將磁盤格式化後並可以向其中寫數據,這些數據會同步到從節點中

 

mkfs.ext4 /dev/drbd0 

mount /dev/drbd0 /mnt/data 

(注意:只有主盤節點才能掛載磁盤) 

cd /mnt/data 

mkdir testfile                 //新建名為testfile的測試文件 

umount /dev/drbd0           //卸載磁盤 

drbdadm secondary r0         //主降為次,即剛開始主節點的磁盤是主盤,現在降為從盤,往主盤裡寫數據,從從盤裡讀數據。 在drbd02上(從節點) 

drbdadm primary r0            //次升為主,即將從節點的磁盤升為主盤資格這樣才能從從節點的機器讀取磁盤的數據。 

mount /dev/drbd0 /mnt/data    //升主後才有掛在權限 cd /mnt/data ls –l 

將會看到我們在主節點中建立的名為testfile的文件夾。 (啰嗦一下: 

要想完成主從Mysql數據的備份,到這裡大家應該有點啟發了,我麼只需要將Mysql的數據保存到/mnt/data(我們將/dev/drbd0掛在的路徑)中即可這樣主Mysql往這個區域寫數據,drbd會幫我們自動將這些數據同步到從節點中,這樣裝在從節點機

器上的Mysql也從這裡讀取數據。這樣便實現了兩份數據的自動備份。 )

 

 

3.17. 問題

主降為次失敗:

 

因為降級的本身的目錄正在使用

4. MYSQL 設置

4.1. 更改Mysql數據庫的存儲位置為共享目錄(主從都執行)

默認情況下數據庫的存儲位置是/var/lib/mysql(可以在/etc/mysql/my.cnf中的datadir位置找到),現在要將其改為存在/share_mysql下。

 

將/var/lib/mysql下的數據復制到/share_mysql下

 cp -r /var/lib/mysql   /share_mysql 

vim /etc/mysql/my.cnf 

找到datadir這一行將其值改為/share_mysql/mysq

4.2. 賦予數據庫用戶訪問權限

 

4.3. 系統級別修改權限

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved