日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
通過DRBD+Heartbeat部署MySQL高可用

采用Heartbeat雙機(jī)熱備軟件來保證數(shù)據(jù)庫的高穩(wěn)定性和連續(xù)性,數(shù)據(jù)的一致性由DRBD這個工具來保證。默認(rèn)情況下只有一臺mysql在工作,當(dāng)主mysql服務(wù)器出現(xiàn)問題后,系統(tǒng)將自動切換到備機(jī)上繼續(xù)提供服務(wù),當(dāng)主數(shù)據(jù)庫修復(fù)完畢,又將服務(wù)切回繼續(xù)由主mysql提供服務(wù)。

為月湖等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計制作服務(wù),及月湖網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為成都網(wǎng)站制作、成都網(wǎng)站建設(shè)、月湖網(wǎng)站設(shè)計,以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會得到認(rèn)可,從而選擇與我們長期合作。這樣,我們也可以走得更遠(yuǎn)!

1. 架構(gòu)

MySQL:

master

10.24.6.4:3306

VIP:

10.24.6.20

必須使得VIP和mysql處于同一網(wǎng)段,否則無法ping通過

2. 參考文檔

http://www.linuxidc.com/Linux/2012-05/60478.htm

3. DRBD 共享內(nèi)存設(shè)置

共享硬盤/dev/sdb1

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


3.2. 修改hosts文件和主機(jī)名

在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默認(rèn)信息為:

include “/etc/drbd.d/global_common.conf”;

include “/etc/drbd.d/*.res”;

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

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

vim /etc/drbd.d/global_common.conf

global {

usage-count no; //幫LINBIT公司統(tǒng)計drbd使用量 }

common {

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

syncer {

rate 100M; //同步的速率

}

}

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

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

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

on drbd01 {

? device /dev/drbd0; //邏輯設(shè)備的路徑

? disk /dev/sdb1; //物理設(shè)備

? address 10.24.6.4:7788; //主節(jié)點

? meta-disk internal;

}

on drbd02 {

? device /dev/drbd0;

? disk /dev/sdb1;

? address 10.24.6.6:7788; //從節(jié)點

? meta-disk internal;

}

}

不可以有注釋

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

10.24.6.4:

Sudo drbdadm create-md r0

3.8. 錯誤處理

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

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

3.9. 啟動drbd服務(wù)(主從都執(zhí)行)

/etc/init.d/drbd start

cat /proc/drbd

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

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

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

3.10. 端口檢測

10.24.6.4:

10.24.6.6:

3.11. 初始化網(wǎng)絡(luò)硬盤(主節(jié)點執(zhí)行)

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

查看同步進(jìn)度

cat /proc/drbd

ds:UpToDate/Inconsistent表示兩節(jié)點正在同步數(shù)據(jù)

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

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

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

######升級資源 drbdadm primary ######降級資源 drbdadm secondary 注釋:在單主模式下的DRBD,兩個節(jié)點同時處于連接狀態(tài),任何一個節(jié)點都可以在特定的時間內(nèi)變成主;但兩個節(jié)點中只能一為主,如果已經(jīng)有一個主,需先降級才可能升級;在雙主模式下沒有這個限制

3.14. 如何查看資源連接狀態(tài)

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

狀態(tài)意義:

資源的連接狀態(tài);一個資源可能有以下連接狀態(tài)中的一種StandAlone 獨立的:網(wǎng)絡(luò)配置不可用;資源還沒有被連接或是被管理斷開(使用 drbdadm disconnect 命令),或是由于出現(xiàn)認(rèn)證失敗或是腦裂的情況Disconnecting 斷開:斷開只是臨時狀態(tài),下一個狀態(tài)是StandAlone獨立的Unconnected 懸空:是嘗試連接前的臨時狀態(tài),可能下一個狀態(tài)為WFconnection和WFReportParamsTimeout 超時:與對等節(jié)點連接超時,也是臨時狀態(tài),下一個狀態(tài)為Unconected懸空BrokerPipe:與對等節(jié)點連接丟失,也是臨時狀態(tài),下一個狀態(tài)為Unconected懸空NetworkFailure:與對等節(jié)點推動連接后的臨時狀態(tài),下一個狀態(tài)為Unconected懸空ProtocolError:與對等節(jié)點推動連接后的臨時狀態(tài),下一個狀態(tài)為Unconected懸空TearDown 拆解:臨時狀態(tài),對等節(jié)點關(guān)閉,下一個狀態(tài)為Unconected懸空WFConnection:等待和對等節(jié)點建立網(wǎng)絡(luò)連接WFReportParams:已經(jīng)建立TCP連接,本節(jié)點等待從對等節(jié)點傳來的第一個網(wǎng)絡(luò)包Connected 連接:DRBD已經(jīng)建立連接,數(shù)據(jù)鏡像現(xiàn)在可用,節(jié)點處于正常狀態(tài)StartingSyncS:完全同步,有管理員發(fā)起的剛剛開始同步,未來可能的狀態(tài)為SyncSource或PausedSyncSStartingSyncT:完全同步,有管理員發(fā)起的剛剛開始同步,下一狀態(tài)為WFSyncUUIDWFBitMapS:部分同步剛剛開始,下一步可能的狀態(tài)為SyncSource或PausedSyncSWFBitMapT:部分同步剛剛開始,下一步可能的狀態(tài)為WFSyncUUIDWFSyncUUID:同步即將開始,下一步可能的狀態(tài)為SyncTarget或PausedSyncTSyncSource:以本節(jié)點為同步源的同步正在進(jìn)行SyncTarget:以本節(jié)點為同步目標(biāo)的同步正在進(jìn)行PausedSyncS:以本地節(jié)點是一個持續(xù)同步的源,但是目前同步已經(jīng)暫停,可能是因為另外一個同步正在進(jìn)行或是使用命令(drbdadm pause-sync)暫停了同步PausedSyncT:以本地節(jié)點為持續(xù)同步的目標(biāo),但是目前同步已經(jīng)暫停,這可以是因為另外一個同步正在進(jìn)行或是使用命令(drbdadm pause-sync)暫停了同步VerifyS:以本地節(jié)點為驗證源的線上設(shè)備驗證正在執(zhí)行VerifyT:以本地節(jié)點為驗證目標(biāo)的線上設(shè)備驗證正在執(zhí)行

3.15. 資源同步完成

10.24.6.4:

10.24.6.6:

3.16. 數(shù)據(jù)同步測試

現(xiàn)在將磁盤格式化后并可以向其中寫數(shù)據(jù),這些數(shù)據(jù)會同步到從節(jié)點中

mkfs.ext4 /dev/drbd0

mount /dev/drbd0 /mnt/data

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

cd /mnt/data

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

umount /dev/drbd0 //卸載磁盤

drbdadm secondary r0 //主降為次,即剛開始主節(jié)點的磁盤是主盤,現(xiàn)在降為從盤,往主盤里寫數(shù)據(jù),從從盤里讀數(shù)據(jù)。 在drbd02上(從節(jié)點)

drbdadm primary r0 //次升為主,即將從節(jié)點的磁盤升為主盤資格這樣才能從從節(jié)點的機(jī)器讀取磁盤的數(shù)據(jù)。

mount /dev/drbd0 /mnt/data //升主后才有掛在權(quán)限 cd /mnt/data ls –l

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

要想完成主從Mysql數(shù)據(jù)的備份,到這里大家應(yīng)該有點啟發(fā)了,我么只需要將Mysql的數(shù)據(jù)保存到/mnt/data(我們將/dev/drbd0掛在的路徑)中即可這樣主Mysql往這個區(qū)域?qū)憯?shù)據(jù),drbd會幫我們自動將這些數(shù)據(jù)同步到從節(jié)點中,這樣裝在從節(jié)點機(jī)

器上的Mysql也從這里讀取數(shù)據(jù)。這樣便實現(xiàn)了兩份???據(jù)的自動備份。 )

3.17. 問題

主降為次失敗:


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

4. MYSQL 設(shè)置

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

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

將/var/lib/mysql下的數(shù)據(jù)復(fù)制到/share_mysql下

cp -r /var/lib/mysql /share_mysql

vim /etc/mysql/my.cnf

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

4.2. 賦予數(shù)據(jù)庫用戶訪問權(quán)限

4.3. 系統(tǒng)級別修改權(quán)限

140602 22:36:39 mysqld_safe Starting mysqld daemon with databases from /home/mysql

140602 22:36:39 [Warning] Can’t create test file /home/mysql/localhost.lower-test

140602 22:36:39 [Warning] Can’t create test file /home/mysql/localhost.lower-test

/usr/libexec/mysqld: Can’t change dir to ‘/home/mysql/’ (Errcode: 13)

140602 22:36:39 [ERROR] Aborting

140602 22:36:39 [Note] /usr/libexec/mysqld: Shutdown complete

140602 22:36:39 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended

你已經(jīng)修改了my.cnf中的datadir的值你已經(jīng)chown和chmod了數(shù)次新數(shù)據(jù)目錄或者其父路徑的屬主和權(quán)限你無數(shù)次地試圖service mysql start,或者 /etc/init.d/mysql start,以及mysql_install_db!

恭喜你看見這篇文章,我在被系統(tǒng)坑了幾個小時之后,找到了解決的方法。

這個原因有二,其中任意的一個原因都會造成你被系統(tǒng)告知這個warning。如果你不是一個專業(yè)的linux系統(tǒng)安全工程師,或者你只是個PHP程序員,并沒有對系統(tǒng)安全有深入的研究,你就不會太容易找到它的答案。

第一,selinux,記得當(dāng)年念書時,字符界面安裝RedHat(很古老的操作系統(tǒng)么。。。)的時候,有這么一個選項,通常大家都聽取前輩的建議,改變默認(rèn)值以不安裝它。但如果你恰好要操作的這臺機(jī)器開著selinux,它確實能夠使你的mysql無法在新目標(biāo)位置進(jìn)行mysql_install_db的操作,并爆出標(biāo)題所示的警告。一個簡單的解決辦法是使用命令暫時關(guān)閉selinux,以便讓你的操作可以繼續(xù)下去setenforce 0但最好使用一個永久方法,以便在重啟后繼續(xù)不要這貨。修改/etc/selinux/config文件中設(shè)置SELINUX=disabled ,然后重啟或等待下次重啟。

第二,apparmor,這個坑爹貨和selinux一樣的坑爹,它也對mysql所能使用的目錄權(quán)限做了限制在 /etc/apparmor.d/usr.sbin.mysqld 這個文件中,有這兩行,規(guī)定了mysql使用的數(shù)據(jù)文件路徑權(quán)限

/var/lib/mysql/ r,/var/lib/mysql/** rwk,

你一定看到了,/var/lib/mysql/就是之前mysql安裝的數(shù)據(jù)文件默認(rèn)路徑,apparmor控制這里mysqld可以使用的目錄的權(quán)限我想把數(shù)據(jù)文件移動到/data/mysql下,那么為了使mysqld可以使用/data/mysql這個目錄,照上面那兩條,增加下面這兩條就可以了

/data/mysql/ r,/data/mysql/** rwk,

重啟apparmor,/etc/init.d/apparmor restart之后,就可以順利地干你想干的事兒了!


4.4. 數(shù)據(jù)庫同步測試

在10.24.6.4上啟動mysql 建立一個名為share_mysql的數(shù)據(jù)庫。

第一步保證10.24.6.4為primary,10.24.6.6為secondary

主從切換掛載

service mysql stop # 關(guān)閉mysql服務(wù)

drbdadm secondary r0 # 將10.24.6.4降為備用

umount /dev/drbd0 # 卸載虛擬硬盤

在drbd02上

drbdadm primary r0 #將10.24.6.6升為主用

mount /dev/drbd0 # 掛載虛擬硬盤

service mysql start # 啟動數(shù)據(jù)庫

進(jìn)去mysql中查看是否已有從drbd01同步過來的名為test的數(shù)據(jù)庫。

OK至此測試就完成了。

(啰嗦下:聰明的讀者可能會問,每次都這樣操作效率也太低了吧,對的,接下來heartbeat會自動幫我們做好這些事,它會監(jiān)聽服務(wù),一旦服務(wù)停止,則從服務(wù)會接管服務(wù))


當(dāng)前標(biāo)題:通過DRBD+Heartbeat部署MySQL高可用
路徑分享:http://www.dlmjj.cn/article/djpdhpc.html