日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

heartbeat+drbd+mysql:实现最廉价的高可用组合

發布時間:2025/3/21 数据库 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 heartbeat+drbd+mysql:实现最廉价的高可用组合 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.什么是DRBD

DRBD(Distributed?Replicated?Block?Device),DRBD?號稱是?"網絡?RAID",開源軟件,由?LINBIT?公司開發。

2.DRBD的主要功能

DRBD實際上是一種塊設備的實現啦,主要被用于Linux平臺下的高可用(HA)方案之中。它是由內核模塊和相關程序而組成,通過網絡通信來同步鏡像整個設備,有點類似于一個網絡RAID的功能。也就是說當讀者你將數據寫入本地的DRBD設備上的文件系統時,數據會同時被發送到網絡中的另外一臺主機之上啦,并以完全相同的形式記錄在一個文件系統中(實際上文件系統的創建也是由DRBD的同步來實現的)。本地節點(主機)與遠程節點(主機)的數據可以保證實時的同步,并保證IO的一致性。所以當本地節點的主機出現故障時,遠程節點的主機上還會保留有一份完全相同的數據,可以繼續使用,以達到高可用的目的。

3.DRBD的主要應用

如果主服務器當掉啦,造成的損失是不可估量的。要保證主服務器不間斷服務,就需要對服務器實現冗余。在眾多的實現服務器冗余的解決方案中,heartbeat為我們提供了廉價的、可伸縮的高可用集群方案啦。我們通過heartbeat?+?drbd在Linux下創建一個高可用(HA)的集群服務器,在高可用(HA)解決方案中使用DRBD的功能,可以代替使用一個共享盤陣存儲設備。因為數據同時存在于本地主機和遠程主機上,在遇到需要切換的時候,遠程主機只需要使用它上面的那份備份數據,就可以繼續提供服務了。

4.DRBD于mysql的關系

MySQL?與?LINBIT?達成了合作關系,大張旗鼓的搞了這個?"12?天?Scale-Out"?活動,也是這個商業合作驅動的吧。DRBD?助力?MySQL,?號稱可以得到四個?9?的可靠性,這不低于任何一款商業數據庫軟件了。

DRBD?的出現的確對?MySQL?集群的可用性有很大提高。而且,有獨到的特點,非常適合面向互聯網的應用。因為是在存儲層的數據塊同步,很容易的做到應用層的?IO?負載均衡(備機承擔一定的讀壓力),不但支持數據庫失敗接管,還能做到?IP?失敗接管,接管時間小于?30?秒,真是窮人的絕佳集群解決方案。

heartbeat的安裝這里小編就不細講了,讀者可以看看的小編的博客http://wnqcmq.blog.51cto.com/5200614/1179525

以下的配置兩個節點都必須一致,為了減少工作量,小編這里在主節點上配置,然后使用scp傳輸到備份節點

5.hosts文件以及主機名的配置

[root@primary?~]#?vim?/etc/hosts

192.168.110.6?primary.zzdx.com

192.168.110.7?standby.zzdx.com

[root@primary?~]#?scp?/etc/hosts?192.168.20.2:/etc

修改主機名

[root@primary?~]#?vim?/etc/sysconfig/network?

HOSTNAME=primary.zzdx.com?//備份節點的主機名是standby.zzdx.com

6.drbd的安裝

由于小編使用的是5.4的紅帽啦,內核(2.6.18)中不包含drbd(2.6.33的內核中已經有了),小編這里安裝相應的軟件包和內核模塊就是了

kmod-drbd83-8.3.8-1.el5.centos.i686.rpm

drbd83-8.3.8-1.el5.centos.i386.rpm

使用rpm?-ivh?安裝就是了

drbd83安裝后包含的文件

[root@primary?~]#?rpm?-ql?drbd83

7.drbd配置

[root@primary?~]#?cp?/usr/share/doc/drbd83-8.3.8/drbd.conf?/etc/

[root@primary?~]#?cd?/etc/drbd.d/

[root@primary?drbd.d]#?cp?global_common.conf?global_common.conf.bak

[root@primary?drbd.d]#?vim?global_common.conf?//修改成為下面的內容

global?{

usage-count?no;

#?minor-count?dialog-refresh?disable-ip-verification

}

?

common?{

protocol?C;

?

startup?{

wfc-timeout?120;

degr-wfc-timeout?120;

}

disk?{

on-io-error?detach;

fencing?resource-only;

?

}

net?{

cram-hmac-alg?"sha1";

shared-secret?"mydrbdlab";

}

syncer?{

rate?100M;

}

?

}

8.定義資源

小編這里有一塊2G的磁盤(/dev/sdb),那就作為塊設備吧

[root@primary?drbd.d]#?vim?mysql.res

resource?mysql{

on?primary.zzdx.com?{?#?每個主機的說明以”on”開頭,后面是主機名在{}內的是配置

device?/dev/drbd1;?#?今后生成使用的設備名;不用和實際分區號一樣.不過最好規范

disk?/dev/sdb;?#?該節點上用于存放數據的分區號

address?192.168.20.1:7898;?#?該節點的IP地址

meta-disk?internal;?#?meta?data信息存放方式“網絡”

}

?

on?standby.zzdx.com?{?#?每個主機的說明以”on”開頭,后面是主機名在{}內的是配置

device?/dev/drbd1;?#?今后生成使用的設備名;不用和實際分區號一樣.不過最好規范

disk?/dev/sdb;?#?該節點上用于存放數據的分區號

address?192.168.20.2:7898;?#?該節點的IP地址

meta-disk?internal;?#?meta?data信息存放方式“網絡”

}

}

將配置文件、全局配置文件以及資源文件傳輸到備份節點上

[root@primary?drbd.d]#?scp?global_common.conf?mysql.res?192.168.20.2:/etc/drbd.d/

9.創建drbd資源

[root@primary?drbd.d]#?drbdadm?create-md?mysql?//在備份節點上也要做

Writing?meta?data...

initializing?activity?log

NOT?initialized?bitmap

New?drbd?meta?data?block?successfully?created.

[root@standby?drbd.d]#?drbdadm?create-md?mysql

Writing?meta?data...

initializing?activity?log

NOT?initialized?bitmap

New?drbd?meta?data?block?successfully?created.

10.開啟兩個節點上的drbd服務

主節點上的狀態

[root@primary?~]#?service?drbd?start

Starting?DRBD?resources:?[?

mysql

Found?valid?meta?data?in?the?expected?location,?2147479552?bytes?into?/dev/sdb.

d(mysql)?s(mysql)?n(mysql)?].

備份節點上的狀態

[root@standby?drbd.d]#?service?drbd?start

Starting?DRBD?resources:?[?

mysql

Found?valid?meta?data?in?the?expected?location,?2147479552?bytes?into?/dev/sdb.

d(mysql)?s(mysql)?n(mysql)?].

查看drbd狀態

[root@primary?drbd.d]#?cat?/proc/drbd

version:?8.3.8?(api:88/proto:86-94)

GIT-hash:?d78846e52224fd00562f7c225bcc25b2d422321d?build?by?mockbuild@builder10.centos.org,?2010-06-04?08:04:16

?

1:?cs:Connected?ro:Secondary/Secondary?ds:Inconsistent/Inconsistent?C?r----

ns:0?nr:0?dw:0?dr:0?al:0?bm:0?lo:0?pe:0?ua:0?ap:0?ep:1?wo:b?oos:2097052

/proc/drbd/中顯示了DRBD當前的狀態.

ro顯示兩臺主機的狀態.都是“備機/備機”.ds是磁盤狀態.都是“不一致/不一致”

11.主節點搶占資源

[root@primary?drbd.d]#?drbdsetup?/dev/drbd1?primary?-o?//首次使用用這種方式

[root@primary?drbd.d]#?drbdadm?primary?all

[root@primary?drbd.d]#?cat?/proc/drbd?//這時候會同步更新數據的

version:?8.3.8?(api:88/proto:86-94)

GIT-hash:?d78846e52224fd00562f7c225bcc25b2d422321d?build?by?mockbuild@builder10.centos.org,?2010-06-04?08:04:16

?

1:?cs:SyncSource?ro:Primary/Secondary?ds:UpToDate/Inconsistent?C?r----

ns:780040?nr:0?dw:0?dr:788224?al:0?bm:47?lo:1?pe:2?ua:256?ap:0?ep:1?wo:b?oos:1317052

[======>.............]?sync'ed:?37.4%?(1317052/2097052)K?delay_probe:?47

finish:?0:00:23?speed:?55,672?(55,712)?K/sec

ro:顯示兩臺主機的狀態.”主機/備機”?ds:是磁盤狀態.都是“upTodate/不一致”

可以看出[>....................]?sync'ed:?正在同步了已經進度37.4%

?

12.格式化/dev/drbd1的文件系統,建立相應的掛載點,以便后續使用

[root@primary?drbd.d]#?mkfs?-t?ext3?/dev/drbd1

[root@primary?~]#?mkdir?/mnt/mysql/?//主節點上建立mysql的掛載點

修改兩個節點mysql的配置文件,將數據目錄修改為/mnt/mysql(小編這里的mysql是使用linux?5.4自帶的)

[root@primary?~]#?vim?/etc/my.cnf

datadir=/mnt/mysql

13.heartbeat的配置

如果讀者你的heartbeat的安裝都是按照小編博客的步驟來的話,那么接下來的修改配置就很簡單啦

首先修改ha.cf文件,將兩個節點加進去(如果已經加過了就不用加了)

[root@primary?~]#?cd?/etc/ha.d/

[root@primary?ha.d]#?vim?ha.cf

node?primary.zzdx.com

node?standby.zzdx.com

創建新的資源腳本(這些資源腳本都放在/etc/ha.d/resource.d/目錄下啦),當然同樣的,兩端都服務器得有,作為資源讓heartbeat控制

[root@primary?~]#?cd?/etc/ha.d/resource.d/

[root@primary?resource.d]#?vim?usemysql

#!/bin/bash

unset?LC_ALL?;?export?LC_ALL

unset?LANGUAGE?;?export?LANGUAGE

prefix=/usr

exec_prefix=/usr

.?/etc/ha.d/shellfuncs

?

function?start(){

/sbin/drbdadm?primary?all?#提升為primary

/bin/mount?/dev/drbd1?/mnt/mysql?#掛載

service?mysqld?start

}

?

function?stop(){

service?mysqld?stop

/bin/umount?/mnt/mysql?#注意釋放權限的時候必須先卸載

/sbin/drbdadm?secondary?all?#降為secondary

}

case?$1?in

start)

start

;;

?

stop)

stop

;;

?

*)

echo?“Usage:?$0?{?start?|?stop?}”

;;

?

esac

exit?0

[root@primary?resource.d]#?chmod?a+x?usemysql

[root@primary?resource.d]#?scp?usemysql?192.168.20.2:/etc/ha.d/resource.d/

添加資源控制到配置文件

[root@primary?resource.d]#?cd?..

[root@primary?ha.d]#?vim?haresources

primary.zzdx.com?IPaddr::192.168.110.1/28/eth0/192.168.110.15?usemysql

[root@primary?~]#?scp?/etc/ha.d/haresources?192.168.20.2:/etc/ha.d/

啟動heartbeat服務

[root@primary?~]#?service?heartbeat?start

[root@standby?~]#?service?heartbeat?start

14.測試并查看狀態

在主節點上查看資源狀態

在主節點上使用mysql,創建數據庫文件,看看在當資源切換的時候是否能看見

[root@primary?~]#?mysqladmin?-u?root?password?123456?//初始化root密碼

主節點主動釋放資源,備份節點接管資源

[root@primary?~]#?/usr/lib/heartbeat/hb_standby?

2013/06/15_08:32:51?Going?standby?[all].

查看primary節點日志狀態

查看備份節點日志狀態

在備份節點上使用mysql試試能不能查看到在主節點創建的數據庫

看到了吧,成功了吧,呵呵

好了,到這里小編算是吧要想實現的東西整完了,讀者自己試試吧,正如前面所說的,目前使用drbd是為了最少的花錢,但是效率上可想而知啦,個人覺得IP-SAN是比較折中的方案啦

轉載于:https://blog.51cto.com/wnqcmq/1222297

《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的heartbeat+drbd+mysql:实现最廉价的高可用组合的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。