成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Centos5.6 x86下部署安裝DRBD+Heartbeat+MySQL

原創
數據庫 MySQL 數據庫運維
服務器平臺是Dell R410,系統采用的Centos5.6 x86_64,系統盤采用的是Raid1,然后單獨拿了一塊SAS 500G的硬盤出來準備給DRBD系統用, 這里沒有采用單獨分區的做法,這是因為在測試中我們發現,單獨分區做為DRBD系統使用時,經常有如下報錯(以下數據采集來自于實驗環境)。特與大家分享。

【51CTO獨家特稿】報錯信息如下所示:

  1. Operation refused. 
  2. Command 'drbdmeta 0 v08 /dev/sda2 internal create-md' terminated with exit code 40 
  3. drbdadm create-md r0: exited with code 40 

這個時候我們需要使用dd命令覆蓋文件系統中的設備塊信息,如下所示:

  1. dd if=/dev/zero of=/dev/sda2 bs=1M count=128 

這個時候請一定要注意dd命令要清除的分區信息,不要搞錯了,不然很容易將系統損壞,我第一次實驗時就遇到了這個問題;如果部署DRBD時的分區信息是不需要寫進/etc/fstab表的,即不需要在安裝系統時就掛載,不然重啟系統時很容易發生Emergency信息,簽于以上情況,所以我這里建議大家還是用獨立硬盤作為DRBD的設備。

兩臺機器的基本情況如下所示:

centos1.cn7788.com 192.168.11.32 

centos2.cn7788.com 192.168.11.33

Heartbeat的vip為 192.168.11.30

兩臺機器的hosts文件內容如下所示:

192.168.11.32 centos1.cn7788.com centos1

192.168.11.33 centos2.cn7788.com centos2

實驗中暫時先用千M交換機的網絡作為心跳線線路,等實驗搭建成功后再考慮加雙絞線作為心跳線,兩臺機器的hostname及ntp對時這些在實驗前就應該配置好,iptables和SElinux關閉,具體情況略過。

一、DRBD的部署安裝

兩臺機器分別用如下命令來安裝drbd軟件,如下所示:

  1. yum -y install drbd83 kmod-drbd83 
  2. modprobe drbd 
  3. lsmod | grep drbd 

正確顯示如下類似信息,表示DRBD已成功安裝:

  1. drbd                  300440  4 

兩臺機器的drbd.conf配置文件內容如下所示(兩臺機器的配置是一樣的):

  1. cat  /etc/drbd.conf                   
  2. global { 
  3. # minor-count dialog-refresh disable-ip-verification 
  4. usage-count no;         #統計drbd的使用 
  5. common { 
  6. syncer  { rate 30M; }    #同步速率,視帶寬而定 
  7. resource r0 {           #創建一個資源,名字叫”r0” 
  8. protocol C;             #選擇的是drbd的C 協議(數據同步協議,C為收到數據并寫入后返回,確認成功) 
  9. handlers {              #默認drbd的庫文件 
  10. pri-on-incon-degr "/usr/lib/drbd/notify-pri-on-incon-degr.sh; /usr/lib/drbd/notify-emergency-reboot.sh; echo b > /proc/sysrq-trigger ; reboot -f"; 
  11. pri-lost-after-sb "/usr/lib/drbd/notify-pri-lost-after-sb.sh; /usr/lib/drbd/notify-emergency-reboot.sh; echo b > /proc/sysrq-trigger ; reboot -f"; 
  12. local-io-error "/usr/lib/drbd/notify-io-error.sh;  
  13. /usr/lib/drbd/notify-emergency-shutdown.sh; echo o > /proc/sysrq-trigger ; halt -f"; 
  14. # fence-peer "/usr/lib/drbd/crm-fence-peer.sh"; 
  15. # split-brain "/usr/lib/drbd/notify-split-brain.sh root"; 
  16. # out-of-sync "/usr/lib/drbd/notify-out-of-sync.sh root"; 
  17. # before-resync-target "/usr/lib/drbd/snapshot-resync-target-lvm.sh -p 15 -- -c 16k"; 
  18. # after-resync-target /usr/lib/drbd/unsnapshot-resync-target-lvm.sh; 
  19. startup { 
  20. # wfc-timeout degr-wfc-timeout outdated-wfc-timeout wait-after-sb 
  21. wfc-timeout 120; 
  22. degr-wfc-timeout 120;      
  23. disk { 
  24. # on-io-error fencing use-bmbv no-disk-barrier no-disk-flushes 
  25. # no-disk-drain no-md-flushes max-bio-bvecs 
  26. on-io-error detach; 
  27. net { 
  28. # sndbuf-size rcvbuf-size timeout connect-int ping-int ping-timeout max-buffers 
  29. # max-epoch-size ko-count allow-two-primaries cram-hmac-alg shared-secret 
  30. # after-sb-0pri after-sb-1pri after-sb-2pri data-integrity-alg no-tcp-cork 
  31. max-buffers 2048; 
  32. cram-hmac-alg "sha1"; 
  33. shared-secret "123456"; 
  34. #DRBD同步時使用的驗證方式和密碼信息 
  35. #allow-two-primaries; 
  36. syncer { 
  37. rate 100M; 
  38. # rate after al-extents use-rle cpu-mask verify-alg csums-alg 
  39. on centos1.cn7788.com {  #設定一個節點,分別以各自的主機名命名 
  40. device  /dev/drbd0;     #設定資源設備/dev/drbd0 指向實際的物理分區 /dev/sdb 
  41. disk    /dev/sdb; 
  42. address 192.168.11.32:7788;  #設定監聽地址以及端口 
  43. meta-disk       internal; 
  44. on centos2.cn7788.com {          #設定一個節點,分別以各自的主機名命名 
  45. device  /dev/drbd0; #設定資源設備/dev/drbd0 指向實際的物理分區 /dev/sdb 
  46. disk    /dev/sdb; 
  47. address 192.168.11.33:7788;       #設定監聽地址以及端口 
  48. meta-disk       internal;         #internal表示是在同一個局域網內 

1.創建DRBD元數據信息,執行命令如下所示(兩臺機器都需要執行此步):

  1. [root@centos1 ~]# drbdadm create-md r0 
  2. md_offset 8589930496 
  3. al_offset 8589897728 
  4. bm_offset 8589635584 
  5. Found some data 
  6.  ==> This might destroy existing data! <== 
  7. Do you want to proceed? 
  8. [need to type 'yes' to confirm] yes 
  9. Writing meta data... 
  10. initializing activity log 
  11. NOT initialized bitmap 
  12. New drbd meta data block successfully created. 
  13. [root@centos2 ~]# drbdadm create-md r0 
  14. md_offset 8589930496 
  15. al_offset 8589897728 
  16. bm_offset 8589635584 
  17. Found some data 
  18.  ==> This might destroy existing data! <== 
  19. Do you want to proceed? 
  20. [need to type 'yes' to confirm] yes 
  21. Writing meta data... 
  22. initializing activity log 
  23. NOT initialized bitmap 
  24. New drbd meta data block successfully created. 

2.啟動DRBD設備,兩臺機器上分別執行如下命令:

  1. service drbd start  

3.在centos1的機器上我們查看DRBD狀態,命令如下所示:

  1. [root@centos1 ~]# service drbd status 
  2. drbd driver loaded OK; device status: 
  3. version: 8.3.13 (api:88/proto:86-96) 
  4. GIT-hash: 83ca112086600faacab2f157bc5a9324f7bd7f77 build by mockbuild@builder10.centos.org, 2012-05-07 11:56:36 
  5. m:res  cs         ro                   ds                         p  mounted  fstype 
  6. 0:r0   Connected  Secondary/Secondary  Inconsistent/Inconsistent  C 

4.將centos1的機器作為DRBD的Primary機器,命令如下所示:

  1. [root@centos1 ~]# drbdsetup /dev/drbd0 primary -o  
  2. [root@centos1 ~]# drbdadm primary r0 

然后我們再查看其狀態,命令如下所示:

  1. [root@centos1 ~]# service drbd status 
  2. drbd driver loaded OK; device status: 
  3. version: 8.3.13 (api:88/proto:86-96) 
  4. GIT-hash: 83ca112086600faacab2f157bc5a9324f7bd7f77 build by mockbuild@builder10.centos.org, 2012-05-07 11:56:36 
  5. m:res  cs          ro                 ds                     p  mounted  fstype 
  6. ...    sync'ed:    3.9%               (7876/8188)M 
  7. 0:r0   SyncSource  Primary/Secondary  UpToDate/Inconsistent  C 

我們發現,Primary/Secondary關系已形成,而且數據在進行同步,已同步了3.9%,我們稍為等待段時間,再查看Primary機器的DRBD狀態,如下所示:

  1. [root@centos1 ~]# service drbd status 
  2. drbd driver loaded OK; device status: 
  3. version: 8.3.13 (api:88/proto:86-96) 
  4. GIT-hash: 83ca112086600faacab2f157bc5a9324f7bd7f77 build by mockbuild@builder10.centos.org, 2012-05-07 11:56:36 
  5. m:res  cs         ro                 ds                 p  mounted  fstype 
  6. 0:r0   Connected  Primary/Secondary  UpToDate/UpToDate  C 

UpToDate/UpToDate表示數據已經同步完成了。

5.在兩臺機器上都建立/drbd分區,準備將其作為MySQL的掛載目錄,命令如下所示:

  1. mkdir /drbd 

6.格式化Primary機器的DRBD分區并掛載使用。

  1. mkfs.ext3 /dev/drbd0  
  2. mount /dev/drbd0 /drbd/ 

注:Secondary節點上是不允許對DRBD設備進行任何操作,包括只讀,所以的讀寫操作都只能在Primary節點上進行,只有當Primary節點掛掉時,Secondary代替主節點作為Primary節點時才能進行讀寫操作。

7.兩臺機器都將DRBD設為自啟動服務,命令如下:

chkconfig drbd on

二、Heartbeat的安裝和部署

1.兩臺機器上分別用yum來安裝heartbeat,如下命令操作二次:

  1. yum -y install heartbeat 

如果你只操作一次,你會驚奇的發現,heartbeat第一次時并沒有安裝成功。

2.兩個節點的heartbeat配置文件,分別如下所示:

centos1.cn7788.com的配置文件:

  1. logfile /var/log/ha-log 
  2. #定義Heartbeat的日志名字及位置 
  3. logfacility local0 
  4. keepalive 2 
  5. #設定心跳(監測)時間為2秒 
  6. deadtime 15 
  7. #設定死亡時間為15秒 
  8. ucast eth0 192.168.11.33 
  9. #采用單播的方式,IP地址指定為對方IP 
  10. auto_failback off 
  11. #當Primary機器發生故障切換到Secondary機器后不再進行切回操作 
  12. node centos1.cn7788.com centos2.cn7788.com 

centos2.cn7788.com的配置文件:

  1. logfile /var/log/ha-log 
  2. logfacility local0 
  3. keepalive 2 
  4. deadtime 15 
  5. ucast eth0 192.168.11.32 
  6. auto_failback off 
  7. node centos1.cn7788.com centos2.cn7788.com 

3.編輯雙機互連驗證文件authkeys,如下所示:

  1. cat /etc/ha.d/authkeys 
  2. auth 1 
  3. 1 crc  

需要將此文件設定為600權限,不然啟動heartbeat服務時會報錯,命令如下所示:

  1. chmod 600 /etc/ha.d/authkeys 

4.編輯集群資源文件/etc/ha.d/haresource

  1. centos1.rogrand.com IPaddr::192.168.11.30/24/eth0 drbddisk::r0 Filesystem::/dev/drbd0::/drbd::ext3  mysqld 

這個文件在兩臺機器上都是一樣的,這個就不要輕易改動了。

mysqld為mysql服務器啟動、重啟及關閉腳本,這個是安裝MySQL自帶的,我們等會會在安裝MySQL提到此步。

                                               

三、源碼編譯安裝mysql5.1.47并部署haresource

1.在MySQL官方網站上下載mysql5.1.47的源碼包,在兩臺機器上分別安裝,具體步驟如下所示:

安裝gcc等基礎庫文件

  1. yum install gcc gcc-c++ zlib-devel libtool ncurses-devel libxml2-devel 

生成mysql用戶及用戶組

  1. groupadd mysql 
  2. useradd -g mysql mysql 

源碼編譯安裝mysql5.1.47

  1. tar zxvf mysql-5.1.47.tar.gz 
  2. cd mysql-5.1.47 
  3. ./configure --prefix=/usr/local/mysql --with-charset=utf8 --with-extra-charsets=all --enable-thread-safe-client --enable-assembler --with-readline --with-big-tables --with-plugins=all  --with-mysqld-ldflags=-all-static --with-client-ldflags=-all-static 
  4. make 
  5. make install 

2.對mysql進行權限配置,使其能順利啟動。

  1. cd /usr/local/mysql 
  2. cp /usr/local/mysql/share/mysql/my-medium.cnf /etc/my.cnf 
  3. cp /usr/local/mysql/share/mysql/mysql.server /etc/init.d/mysqld 
  4. cp /usr/local/mysql/share/mysql/mysql.server /etc/ha.d/resource.d/mysqld 
  5. chmod +x /etc/init.d/mysqld  
  6. chmod +x /etc/ha.d/resource.d/mysqld 
  7. chown -R mysql:mysql /usr/local/mysql  

3.兩臺機器上的/etc/my.cnf的[mysqld]項下面重新配置下mysql運行時的數據存放路徑

  1. datadir=/drbd/data 

4.在Primary機器上運行如下命令,使其數據庫目錄生成數據,Secondary機器不需要運行此步。

  1. /usr/local/mysql/bin/mysql_install_db --user=mysql --datadir=/drbd/data 

注意:這里是整個實驗環境的一個重要環節,我起初在搭建此步時出過幾次問題,我們運行MySQL是在啟動DRBD設備之后,即正確將/dev/drbd0目錄正確掛載到/drbd目錄,而并非沒掛載就去啟動MySQL,這會導致整個實驗完全失敗,大家做到此步時請注意。做完這步以后,我們不需要啟動MySQL,它可以靠腳本來啟動,如果已經啟動了MySQL請手動關閉。

四、在兩臺機器上將DRBD和Heartbeat都設成自啟動方式

service drbd start 

chkcfonig drbd on

service heartbeat start 

chkconfig heartbeat on

通過觀察Primary機器上的信息,我們得知,Primary機器已經正確啟動了MySQL和Heartbaet了,信息如下所示:

  1. [root@centos1 data]# ip addr  
  2. 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue  
  3.     link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 
  4.     inet 127.0.0.1/8 scope host lo 
  5. 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000 
  6.     link/ether 00:0c:29:48:2e:9f brd ff:ff:ff:ff:ff:ff 
  7.     inet 192.168.11.32/24 brd 192.168.11.255 scope global eth0 
  8.     inet 192.168.11.30/24 brd 192.168.11.255 scope global secondary eth0:0 

通過查看到3306端口被占用情況,我們得知mysql服務已被正常開啟。

  1. [root@centos1 data]# lsof -i:3306 
  2. COMMAND  PID  USER   FD   TYPE DEVICE SIZE NODE NAME 
  3. mysqld  4341 mysql   18u  IPv4   9807       TCP *:mysql (LISTEN) 

五、其余的工作其實就比較好測試了,我們主要是模擬Primary機器重啟或死機時,看Secondary機器能不能自動接管過來并啟動MySQL,我們重啟Primary機器后在Secondary機器上觀察,命令如下所示:

  1. IPaddr[3050]:   2012/09/04_09:51:24 INFO:  Resource is stopped 
  2. ResourceManager[3023]:  2012/09/04_09:51:24 info: Running /etc/ha.d/resource.d/IPaddr 192.168.11.30/24/eth0 start 
  3. IPaddr[3149]:   2012/09/04_09:51:25 INFO: Using calculated netmask for 192.168.11.30: 255.255.255.0 
  4. IPaddr[3149]:   2012/09/04_09:51:26 INFO: eval ifconfig eth0:0 192.168.11.30 netmask 255.255.255.0 broadcast 192.168.11.255 
  5. IPaddr[3119]:   2012/09/04_09:51:26 INFO:  Success 
  6. heartbeat[2842]: 2012/09/04_09:51:26 WARN: Late heartbeat: Node centos1.rogrand.com: interval 3510 ms 
  7. ResourceManager[3023]:  2012/09/04_09:51:26 info: Running /etc/ha.d/resource.d/drbddisk r0 start 
  8. Filesystem[3300]:   2012/09/04_09:51:27 INFO:  Resource is stopped 
  9. ResourceManager[3023]:  2012/09/04_09:51:27 info: Running /etc/ha.d/resource.d/Filesystem /dev/drbd0 /drbd ext3 start 
  10. Filesystem[3382]:   2012/09/04_09:51:28 INFO: Running start for /dev/drbd0 on /drbd 
  11. Filesystem[3370]:   2012/09/04_09:51:28 INFO:  Success 
  12. ResourceManager[3023]:  2012/09/04_09:51:29 info: Running /etc/ha.d/resource.d/mysqld  start 
  13. mach_down[2997]:    2012/09/04_09:51:31 info: /usr/share/heartbeat/mach_down: nice_failback: foreign resources acquired 
  14. mach_down[2997]:    2012/09/04_09:51:31 info: mach_down takeover complete for node centos1.rogrand.com. 
  15. heartbeat[2842]: 2012/09/04_09:51:31 info: mach_down takeover complete. 
  16. heartbeat[2842]: 2012/09/04_09:51:32 WARN: node centos1.rogrand.com: is dead 
  17. heartbeat[2842]: 2012/09/04_09:51:32 info: Dead node centos1.rogrand.com gave up resources. 
  18. heartbeat[2842]: 2012/09/04_09:51:35 info: Link centos1.rogrand.com:eth0 dead. 

稍等片刻我們會發現,Secondary機器會自動接管VIP,并啟動MySQL服務,如下所示:

  1. [root@centos2 data]# ip addr  
  2. 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue  
  3.     link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 
  4.     inet 127.0.0.1/8 scope host lo 
  5. 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000 
  6.     link/ether 00:0c:29:34:ee:af brd ff:ff:ff:ff:ff:ff 
  7.     inet 192.168.11.33/24 brd 192.168.11.255 scope global eth0 
  8. inet 192.168.11.30/24 brd 192.168.11.255 scope global secondary eth0:0 

實施整個過程需要注意有以下幾點:

一、Secondary主機用來做DRBD的硬盤可以跟Primar主機的不一樣大小,但請不要小于Primary主機,以免發生數據丟失的現象;

二、服務器網卡及交換機我都推薦千M系列的,在測試中發現其同步速率介于100M-200M之間,這里采用官方的建議,以最小值的30%帶寬來設置rate速率,即100M*30%,大家也可根據自己的實際網絡環境來設定此值;

三、DRBD對網絡環境要求很高,建議用單獨的雙絞線來作為二臺主機之間的心跳線,如果條件允許,可以考慮用二根以上的心跳線;如果這個環節做得好,基本上腦裂的問題是不存在的。其實整個實驗初期都可以在同一網絡下實現,后期再加心跳線也是可行的。

四、安裝Heartbeat時需要安裝二遍,即yum -y install heartbeat要執行二次;

五、建議不要用根分區作為MySQL的datadir,不然你show database時會發現會出現名為#mysql50#lost+found的數據庫,這也是我將MySQL的數據庫目錄設置成/drbd/data的原因。

六、就算發生腦裂的問題,DRBD也不會丟失數據的,手動解決就是;正因為DRBD可靠,MySQL也推薦將其作為MySQL實現高可用方案之一。

七、MySQL的DRBD此方案不能達到毫秒級的切換速度,MyISAM引擎的表在系統宕機后需要很長的修復時間,而且也有可能發生表損壞的情況,建議大家將所有除了系統表之外的所有表引擎改為InnoDB引擎。

作者微博:weibo.com/yuhongchun027

作者博客:andrewyu.blog.51cto.com

【編輯推薦】

  1. MySQL源碼學習:MDL字典鎖
  2. MySQL Cluster開發環境簡明部署
  3. MySQL的四種不同查詢的分析
  4. MySQL的四種不同查詢的分析
  5. MySQL內存表的特性與使用介紹

 

責任編輯:彭凡 來源: 51CTO
相關推薦

2012-03-19 20:39:08

centosvirtualbox

2012-03-21 09:04:10

MySQL

2012-03-18 22:33:15

centosxen

2011-10-28 16:05:56

Node.js

2013-04-10 15:12:03

MySQL 5.6

2009-06-18 09:11:03

微軟Windows 7下載

2011-12-01 11:09:48

AMDx86服務器英特爾

2012-09-19 09:51:45

Windows Serx86服務器選型

2011-04-12 09:23:29

CentOS 5.6

2013-06-26 15:58:33

CentOS 5.6Memcached

2011-04-25 14:51:59

Linux任務切換TSS

2011-11-10 09:26:48

Solaris 11

2009-08-28 14:38:33

2011-12-19 10:55:58

云計算中國電信

2011-02-20 22:23:43

X86虛擬化XenServer

2023-03-01 10:10:55

數據庫架構

2020-11-03 14:50:18

CentOSMySQL 8.0數去庫

2010-03-20 11:03:13

VMControl虛擬化管理

2009-08-05 09:02:26

Microsoft FIIS 7.0

2013-08-07 09:55:05

IBMGoogleNVIDIA
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产成人精品免高潮在线观看 | 在线免费观看成年人视频 | 九九久久在线看 | 久久久久综合 | 久久久久国产一区二区三区四区 | 国产不卡一区 | 欧美色综合天天久久综合精品 | 台湾佬久久 | 欧美久久一区二区三区 | 91.色| 中文字幕一区二区三区精彩视频 | 日本 欧美 国产 | 欧美一区二区三区一在线观看 | 91精品国产综合久久久动漫日韩 | 成人日b视频 | 午夜精品一区二区三区在线视频 | 亚洲资源在线 | 久久久av| 久久久久亚洲精品中文字幕 | av免费网站在线观看 | 色欧美片视频在线观看 | 国产欧美一区二区三区在线看 | 免费av观看| 日韩国产在线 | 欧美a级成人淫片免费看 | 99精品电影 | 欧美男人亚洲天堂 | 国内自拍偷拍视频 | 成人在线播放网站 | 欧美 日本 国产 | www.99热 | 2018中文字幕第一页 | 成人精品一区 | 国产一区二区影院 | 欧美亚州 | 超碰人人人人 | 国产999精品久久久 午夜天堂精品久久久久 | 精品久久久久久18免费网站 | 99热热99| 粉色午夜视频 | 久久国产99 |