国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
CentOS5系統(tǒng)安裝和配置HA+DRBD+MySQL筆記

DRBD(Distributed Replicated Block Device),分布式復(fù)制塊設(shè)備,是一種通過TCP/IP網(wǎng)絡(luò)實(shí)現(xiàn)塊設(shè)備數(shù)據(jù)實(shí)時(shí)鏡像的方案。利用這種方案,單一主節(jié)點(diǎn)模式(single primary mode)雙機(jī)系統(tǒng)能夠?qū)崟r(shí)地將業(yè)務(wù)數(shù)據(jù)保存在主備節(jié)點(diǎn)的磁盤中,正常情況下兩個(gè)節(jié)點(diǎn)的數(shù)據(jù)是一模一樣的。

HeartBeat在此是用來做熱備切換的,兩節(jié)點(diǎn)間通過心跳線連接,如果主節(jié)點(diǎn)死機(jī)的話,可以通過HA將DRBD快速切換到另外一個(gè)節(jié)點(diǎn),同時(shí)搶占虛擬IP,并啟動(dòng)MySQL,對(duì)MySQL客戶端來說,只有很短時(shí)間的中斷。此模式能有效提高M(jìn)ySQL的可用性。

此文檔參考了DRBD(http://www.drbd.org), HA(http://linux-ha.org), MySQL的相關(guān)官方文檔。安裝筆記由魚漂(ipaddr)原創(chuàng),最新版本可以在http://www.eit.name/找到,轉(zhuǎn)載請(qǐng)注明。

--------------------------------
一.環(huán)境說明
--------------------------------
OS: CentOS 5.5 32位
MySQL: 系統(tǒng)自帶
DRBD: 8.3.8.1編譯安裝 (http://www.drbd.org/)
HeartBeat: 3.0.3編譯安裝 (http://linux-ha.org/)

====Node1====
Hostname: db_node1.systemadmin.cn
Ip: 192.168.0.201
====Node2====
Hostname: db_node2.systemadmin.cn
Ip: 192.168.0.202

HB的虛IP: 192.168.0.200

用來做DRBD的分區(qū):/dev/sdb1
掛載點(diǎn):/data/dbdata

--------------------------------
二. 編譯安裝DRBD
--------------------------------
www.drbd.org下載drbd-8.3.8.1.tar.gz,分別在兩個(gè)節(jié)點(diǎn)上編譯安裝:
注意,DRBD需要內(nèi)核模塊支持,2.6.33后的Linux內(nèi)核已內(nèi)置DRBD的支持,在此版本前,安裝時(shí)需要kernel-devel包,同時(shí)編譯drbd時(shí)要帶上--with-km。

#./configure --prefix=/ --with-km
#make
#make install
#chkconfig --add drbd
#chkconfig drbd on

檢查安裝是否成功:
#drbdadm
看是否以執(zhí)行成功?
#cat /proc/drbd
是否可以看到版本信息

重啟后再次檢查cat /proc/drbd

--------------------------------
三. 配置DRBD
--------------------------------
注意,新版本的DRBD的配置文件已拆分成多個(gè),全部放在/etc/drbd.d/目錄,具體可參考/etc/drbd.conf中的配置.
如果開了iptables防火墻,需要打開對(duì)應(yīng)的7789端口。

在主節(jié)點(diǎn)配置/etc/drbd.d/dbdata.res:
=========dbdata.res begin===========
resource dbdata {
on db_node1.systemadmin.cn {
device /dev/drbd1;
disk /dev/sdb1;
address 192.168.0.201:7789;
meta-disk internal;
}
on db_node2.systemadmin.cn {
device /dev/drbd1;
disk /dev/sdb1;
address 192.168.0.202:7789;
meta-disk internal;
}
}
=========dbdata.res end===========

創(chuàng)建drbd設(shè)備
#drbdadm create-md all
#/etc/init.d/drbd restart

查看是否有相應(yīng)的塊設(shè)備:
#ls -l /dev/drbd1
#cat /proc/drbd

設(shè)置當(dāng)前節(jié)點(diǎn)為主節(jié)點(diǎn)并進(jìn)行格式化:
#drbdadm -- --overwrite-data-of-peer primary all
#mkfs.ext3 /dev/drbd1
#mount /dev/drbd1 /data/dbdata
#mkdir /data/dbdata/etc
#mkdir /data/dbdata/data

在從節(jié)點(diǎn)做如下配置:
復(fù)制dbdata.res到從節(jié)點(diǎn)的/etc/drbd.d/
#drbdadm create-md all
#/etc/init.d/drbd restart

通過cat /prod/drbd查看是否開始復(fù)制,以及兩節(jié)點(diǎn)的狀態(tài)。

此時(shí)開始同步兩個(gè)節(jié)點(diǎn)的磁盤,需要一定時(shí)間,在同步完成前,請(qǐng)不要重啟,否則會(huì)重新同步。

同步完成后,如果兩個(gè)節(jié)點(diǎn)都是Secondary/Secondary,并且已經(jīng)UpToDate了,可以挑一個(gè)節(jié)點(diǎn)設(shè)置為主節(jié)點(diǎn):
#drbdadm primary all

DRDB的一些常規(guī)操作:
切換主從節(jié)點(diǎn)前,要注意umount
主從切換: drbdadm primary all, drbdadm secondary all
節(jié)點(diǎn)間連接:drbdadm connect|disconnect all

DRBD腦裂后的處理:
腦裂后,兩個(gè)節(jié)點(diǎn)間數(shù)據(jù)不同步,主從關(guān)系失效,需要按下面的步驟修復(fù):
a.在從節(jié)點(diǎn)如下操作:
#drbdadm secondary dbdata
#drbdadm -- --discard-my-data connect dbdata
b.在主節(jié)點(diǎn)上,通過cat /proc/drbd查看狀態(tài),如果不是WFConnection狀態(tài),需要再手動(dòng)連接:
#drbdadm connect dbdadta

--------------------------------
四. 遷移MySQL到DRBD磁盤
--------------------------------
確保drbd當(dāng)前工作正常,將/data/dbdata加載,再在主節(jié)點(diǎn)按如下步驟操作。
a. 關(guān)閉MySQL: /etc/init.d/mysqld stop
b. #mv /etc/my.cnf /data/dbdata/etc/
c. #ln -s /data/dbdata/etc/my.cnf /etc/my.cnf
d. 修改my.cnf,將數(shù)文件文件指向 /data/dbdata/data
e. 將原來的數(shù)據(jù)文件移動(dòng)到 /data/dbdata/data
f. 再啟動(dòng)MySQL

從節(jié)點(diǎn)只需要?jiǎng)h除/etc/my.cnf,同時(shí),建立鏈接到/data/dbdata/etc/my.cnf即可。

現(xiàn)在已完成MySQL+DRBD的配置,但切換時(shí)仍然是手動(dòng)進(jìn)行,假設(shè)主節(jié)點(diǎn)從node1轉(zhuǎn)到node2,手動(dòng)操作如下:
a. 在node1上停止MySQL
b. 在node1上unmout /data/dbdata
c. 在node1上執(zhí)地drbdadm secondary all,兩個(gè)節(jié)點(diǎn)都是secondary狀態(tài)后,才可以將node2設(shè)置為primary
d. 在node2上執(zhí)行drbdadm primary all,將node2變成主節(jié)點(diǎn)
e. 觀察兩個(gè)節(jié)點(diǎn)的/proc/drbd是否正常
f. 在node2上mount /dev/drbd1 /data/dbdata
g. 在node2上面啟動(dòng)MySQL

魚漂建議:據(jù)說MyISAM在DRBD上容易造成數(shù)據(jù)丟失,或表文件損壞,所以此模式下最好用InnoDB,打開Binlog,同時(shí),innodb_flush_log_at_trx_commit=1可以保證數(shù)據(jù)完整,但會(huì)嚴(yán)重影響性能。設(shè)置為2的話性能約有10倍提升,不過故障時(shí)可能會(huì)丟失1秒的數(shù)據(jù)。

--------------------------------
五. 安裝配置HA
--------------------------------
需分別下載和安裝:
* Cluster Glue 1.0.6: glue-1.0.6.tar.bz2
* Resource Agents 1.0.3: agents-1.0.3.tar.bz2
* Heartbeat 3.0.3: Heartbeat-3-0-STABLE-3.0.3.tar.bz2

魚漂特別提醒,編譯安裝過程中,還會(huì)連接網(wǎng)絡(luò)下載文件和校驗(yàn)xml,請(qǐng)?jiān)诎惭b前確保網(wǎng)絡(luò)連接和DNS解析正常。

A. 先安裝glue
1. 從linux-ha.org下載 glue-1.0.6.tar.bz2
2. 解壓
3. 編譯安裝:
./autogen.sh
./configure

打開lib/stonith/main.c,將version相關(guān)的注釋掉,否則編譯不過,有點(diǎn)詭異。
1、找到其64行,將其注釋掉。
2、找到其76到81行全部注釋掉。
3、找到其390行,將其注釋

groupadd haclient
useradd -g haclient hacluster
make
make install

B. 安裝Cluster agent
#./autogen.sh
#./configure
#make
#make install


C. 安裝HA3.0.3
下載HA3.0.3解壓并進(jìn)入到源代碼目錄:
#./bootstrap
#./ConfigureMe configure
#make
#make install

D. 配置/etc/ha.d/ha.cf
=========ha.cf begin==============
logfacility local0
keepalive 500ms
deadtime 10
warntime 5
initdead 60
mcast eth0 225.0.0.1 694 1 0
auto_failback off
node db_node1.systemadmin.cn
node db_node2.systemadmin.cn
=========ha.cf end==============
注意,防火墻需要打開端口為694,目標(biāo)Ip為225.0.0.1的udp通信

E. 配置/etc/ha.d/haresources
========haresource begin===========
db_node1.systemadmin.cn drbddisk Filesystem::/dev/drbd1::/data/dbdata::ext3 IPaddr::192.168.0.200/24/eth0 mysql
========haresource end===========

F.生成/etc/ha.d/authkeys
#( echo -ne "auth 1\n1 sha1 "; \
dd if=/dev/urandom bs=512 count=1 | openssl md5 ) \
> /etc/ha.d/authkeys
#chmod 0600 /etc/ha.d/authkeys


G. 編寫MySQL啟動(dòng)腳本/etc/ha.d/resource.d/mysql
=========mysql being============
#!/bin/bash
#
# Author: ipaddr ( admin.net [#] 163.com )
#
. /etc/ha.d/shellfuncs
case "$1" in
start)
res=`/etc/init.d/mysqld start`
ret=$?
ha_log $res
exit $ret
;;
stop)
res=`/etc/init.d/mysqld stop`
ret=$?
ha_log $res
exit $ret
;;
status)
if [[ `ps -ef | grep '[m]ysqld'` > 1 ]] ; then
echo "running"
else
echo "stopped"
fi
;;
*)
echo "Usage: mysql {start|stop|status}"
exit 1
;;
esac
exit 0
=========mysql end============


F. 拷貝一些常用腳本
1. 從Heartbeat-3-0源碼目錄的heartbeat/lib/復(fù)制hb_standby, hb_takeover到/usr/lib/heartbeat 并設(shè)置為可執(zhí)行.
2. 將Cluster agent的一些文件拷到/etc/ha.d/:
cp /usr/etc/ha.d/shellfuncs /etc/ha.d/
cp -rf /etc/ha.d/* /usr/etc/ha.d/
(這個(gè)操作很奇怪,Cluster Agent與HA使用不同的目錄,但又要共用文件,不知在編譯agent時(shí)是否可以使用--prefix=/來解決,由于編譯時(shí)間實(shí)在太長(zhǎng),所有沒有測(cè)試)

G. 使用:
1. 設(shè)置為自啟動(dòng):
chkconfig mysqld off
chkconfig --add heartbeat
chkconfig heartbeat on

2. 手動(dòng)切換兩個(gè)節(jié)點(diǎn):
/usr/lib/heartbeat/hb_takeover 將當(dāng)前節(jié)點(diǎn)設(shè)為主節(jié)點(diǎn)
/usr/lib/heartbeat/hb_standby 將當(dāng)前節(jié)點(diǎn)設(shè)為從節(jié)點(diǎn)
3. 查看HA狀態(tài)
查看當(dāng)前節(jié)點(diǎn)heartbeat狀態(tài):
#/usr/lib/heartbeat/heartbeat -s

查看當(dāng)前節(jié)點(diǎn)heartbeat狀態(tài):
#/usr/bin/cl_status hbstatus

列出所有節(jié)點(diǎn):
#/usr/bin/cl_status listnodes
(如果是64位系統(tǒng),HA的安裝目錄通常為/usr/lib64/)

一些題外話:
個(gè)人覺得HA3.0還不夠成熟,尤其是在編譯安裝時(shí),非常麻煩,主要有幾個(gè)小問題:
a. glue必須把version相關(guān)的注釋掉才可以編譯通過,很詭異;
b. 個(gè)人認(rèn)為HA是一個(gè)整體,把它拆成三個(gè)軟件包編譯安裝實(shí)在是很難理解;
c. 安裝完后,還需要手動(dòng)復(fù)制一些腳本文件,另外,agent和ha默認(rèn)使用不同的/etc/目錄也很郁悶;
d. 幾個(gè)包都要從網(wǎng)絡(luò)下載xml文件,編譯過程實(shí)在太久,花了一個(gè)下午才把a(bǔ)gent編譯完成,為什么不把相關(guān)xml打包在源碼中一起下載呢?

當(dāng)然,瑕不掩玉,HA還是非常了不起的一個(gè)開源作品。

附 MySQL的DRBD文檔:

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Heartbeat+DRBD+NFS+Keepalived+Lnmp雙機(jī)熱備+負(fù)載均衡-線上方案
CentOS6.5下DRBD+HeartBeat+NFS配置(二)
Heartbeat+DRBD+MySQL高可用方案
CentOS 5.5下搭建Mysql DRBD Heartbeat
生產(chǎn)環(huán)境下的高可用NFS文件服務(wù)器
構(gòu)建MySQL+DRBD+Keepalived集群服務(wù) | 專注Unix/Linux領(lǐng)域
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服