MySQL數(shù)據(jù)庫高可用性方案.doc_第1頁
MySQL數(shù)據(jù)庫高可用性方案.doc_第2頁
MySQL數(shù)據(jù)庫高可用性方案.doc_第3頁
MySQL數(shù)據(jù)庫高可用性方案.doc_第4頁
MySQL數(shù)據(jù)庫高可用性方案.doc_第5頁
免費(fèi)預(yù)覽已結(jié)束,剩余11頁可下載查看

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、MySQL 數(shù)據(jù)庫高可用性方案一、綜述數(shù)據(jù)庫位于現(xiàn)代企業(yè)應(yīng)用的核心,它儲存了組織機(jī)構(gòu)中最有價值的資產(chǎn),包括客戶信息、產(chǎn)品信息、訂單信息和歷史數(shù)據(jù)。另外,組織機(jī)構(gòu)依賴于數(shù)據(jù)庫來運(yùn)行他們關(guān)鍵業(yè)務(wù)應(yīng)用。幾小時甚至是幾分鐘的宕機(jī),往往會造成收入的大量流失和客戶的不滿。因此,保證數(shù)據(jù)庫高可用是所有組織機(jī)構(gòu)優(yōu)先考慮的事情。對于希望在當(dāng)今瞬息萬變的經(jīng)濟(jì)環(huán)境立于不敗之地并取得成功的企業(yè)來說,構(gòu)建一個具有高可用性的 IT 基礎(chǔ)架構(gòu)至關(guān)重要。二、完成目標(biāo)通過技術(shù)手段實(shí)現(xiàn)mysql 數(shù)據(jù)庫的高可用性,從而減少停工時間保證服務(wù)的正常穩(wěn)定運(yùn)行。三、方案建設(shè)概要1、現(xiàn)有高可用方案分析Mysql 作為一款開源軟件經(jīng)過多年的

2、發(fā)展,已經(jīng)形成很多套實(shí)現(xiàn)高可用方案,并且均都投入生產(chǎn)使用,主要為這幾種:mysql + replication、mysql + heartbeat +存儲、mysql +drbd + heartbeat、 mysql cluster。以下將依次對各個方案進(jìn)行分析。2、 Mysql+replication2.1概述Mysql 的復(fù)制(Replication )是一個異步的復(fù)制, 從一個 Mysqlinstace (稱之為 Master )復(fù)制到另一個Mysql instance (稱之 Slave )。實(shí)現(xiàn)整個復(fù)制操作主要由三個進(jìn)程完成的,其中兩個進(jìn)程在Slave (Sql 進(jìn)程和 IO 進(jìn)程)

3、,另外一個進(jìn)程在Master (IO 進(jìn)程)上。2.2 Mysqlreplication方案拓?fù)鋱DMysql+replication主從復(fù)制拓?fù)鋱D方案具體解釋:要實(shí)施復(fù)制,首先必須打開Master 端的 binary log( bin-log )功能,否則無法實(shí)現(xiàn)。因?yàn)檎麄€復(fù)制過程實(shí)際上就是Slave從 Master 端獲取該日志然后再在自己身上完全順序的執(zhí)行日志中所記錄的各種操作。2.3 Mysql+replication優(yōu)缺點(diǎn)優(yōu)點(diǎn):易實(shí)施、成本低、經(jīng)濟(jì)實(shí)惠、后期維護(hù)方便,且由于整套系統(tǒng)架構(gòu)簡單,不涉及到存儲及雙機(jī)軟件,因此系統(tǒng)出現(xiàn)故障率很低。方便做到讀寫分離。缺點(diǎn):在主機(jī)出現(xiàn)問題后不能自動

4、切換到備份機(jī),需要人工干涉更改 IP 地址。3、 mysql +heartbeat +存儲 3.1 概述HA 雙機(jī)熱備軟件將操作環(huán)境推廣到一種群集操作系統(tǒng)。群集是一種松散耦合的計(jì)算節(jié)點(diǎn)集合,提供網(wǎng)絡(luò)服務(wù)或應(yīng)用程序(包括數(shù)據(jù)庫、web服務(wù)和文件服務(wù))的單一客戶視圖。HA 雙機(jī)熱備軟件的目標(biāo)是:1:減少或消滅由軟件或硬件故障引起的系統(tǒng)停機(jī)時間2:提供增強(qiáng)的系統(tǒng)可用性,能夠不必關(guān)掉整個群集就可執(zhí)行維護(hù)3.2 Mysql+heartbeat方案拓?fù)鋱D方案具體解釋:本方案采用高可靠性的HA 雙機(jī)熱備軟件來保證郵件服務(wù)的高穩(wěn)定性及連續(xù)性。默認(rèn)情況下兩臺mysql 機(jī)器只有一臺機(jī)器在工作,當(dāng)工作機(jī)mysql

5、 主機(jī)出現(xiàn)問題后,系統(tǒng)將自動切換到 mysql 備機(jī)上繼續(xù)提供服務(wù),而整個過程只需要30 秒的時間,當(dāng)mysql 主機(jī)故障維修完畢后,服務(wù)將自動切換回mysql 主機(jī)上繼續(xù)提供服務(wù)。3.3 Mysql+heartbeat優(yōu)缺點(diǎn)優(yōu)點(diǎn):安全性、穩(wěn)定性高, 出現(xiàn)故障系統(tǒng)將自動切換,從而保證服務(wù)的連續(xù)性。缺點(diǎn):相對mysql replication成本提高,需要有存儲設(shè)備,同時由于多了存儲設(shè)備及雙機(jī)軟件。4、 Mysql+drbd+heartbeat4.1 概述此方案除了剛剛介紹完的 heartbeat 外,主要用了 DRBD 這個工具, DRBD 是一種塊設(shè)備 ,可以被用于高可用 (HA) 之中 .

6、它類似于一個網(wǎng)絡(luò)RAID-1 功能 .當(dāng)你將數(shù)據(jù)寫入本地文件系統(tǒng)時 ,數(shù)據(jù)還將會被發(fā)送到網(wǎng)絡(luò)中另一臺主機(jī)上.以相同的形式記錄在一個文件系統(tǒng)中.本地 (主節(jié)點(diǎn) )與遠(yuǎn)程主機(jī) (備節(jié)點(diǎn) )的數(shù)據(jù)可以保證實(shí)時同步.當(dāng)本地系統(tǒng)出現(xiàn)故障時,遠(yuǎn)程主機(jī)上還會保留有一份相同的數(shù)據(jù) ,可以繼續(xù)使用 .4.2 Mysql+drbd+heartbeat方案拓?fù)鋱D4.3 Mysql+drbd+heartbeat優(yōu)缺點(diǎn)優(yōu)點(diǎn):安全性、穩(wěn)定性高,出現(xiàn)故障系統(tǒng)將自動切換,從而保證服務(wù)的連續(xù)性,相對 mysql+heartbeat+ 存儲來說對大優(yōu)點(diǎn)是節(jié)約了存儲這個硬件設(shè)備。缺點(diǎn): mysql 主機(jī)宕機(jī),切換到備機(jī),備機(jī)接管服

7、務(wù),待主機(jī)修復(fù)完配置 failback 機(jī)制的話會發(fā)生腦裂情況,需要手工執(zhí)行命令進(jìn)行主機(jī)接管。5、 Mysqlcluster5.1 概述MySQL 集群是一種分布式設(shè)計(jì),目標(biāo)是要達(dá)到?jīng)]有任何單點(diǎn)故障點(diǎn)。因此,任何組成部分都應(yīng)該擁有自己的內(nèi)存和磁盤。任何共享存儲方案如網(wǎng)絡(luò)共享,網(wǎng)絡(luò)文件系統(tǒng)和SAN設(shè)備是不推薦或不支持的。通過這種冗余設(shè)計(jì),MySQL 聲稱數(shù)據(jù)的可用度可以達(dá)到99 。 999% 。5.2 Mysqlcluster方案拓?fù)鋱D5.3 Mysqlcluster優(yōu)缺點(diǎn)優(yōu)點(diǎn):安全性、穩(wěn)定性高,可以在線增加節(jié)點(diǎn),官方聲稱可用度可達(dá)到99.999% 。缺點(diǎn):至少三個節(jié)點(diǎn),對主機(jī)的數(shù)量又要求,無形

8、增加方案成本、對于數(shù)據(jù)節(jié)點(diǎn)要求內(nèi)存一直、對于引擎只能使用不支持外鍵功能、管理復(fù)雜ndb 、四、 Mysql+heartbeat+存儲方案具體實(shí)施步驟環(huán)境:nfs:192.168.184.103as4u7主機(jī) -cm5.3:192.168.184.12410.0.0.1備機(jī) -as5u3:192.168.184.10210.0.0.2注意:關(guān)閉防火墻,selinux第一塊: nfs 的搭建(在192.168.184.103上面)rootoracle # vi /etc/exports/data192.168.184.*(rw,sync,no_root_squash)rootoracle # se

9、rvicenfs startrootoracle # exportfs -rv#第二塊: mysql 的安裝(主備機(jī)一樣)# tar -zxvf mysql-5.0.67.tar.gz# cd mysql-5.0.67# groupadd mysql# useradd -g mysql -s /sbin/nologin -M mysql# ./configure prefix=/usr/local/mysql (至于編譯參數(shù)很多,這里不枚舉)# make && make install# cp support-files/my-f /etc/f# cp support-file

10、s/mysql.server /etc/rc.d/init.d/mysqld # chmod 755 /etc/rc.d/init.d/mysqld加入服務(wù)隊(duì)列:# chkconfig add mysqld# chown -R mysql.mysql /usr/local/mysql/# /usr/local/mysql/bin/mysql_install_dbuser=mysql# chown -R mysql.mysql/usr/local/mysql/var# /usr/local/mysql/bin/mysqld_safeuser=mysql &*配置庫文件搜索路徑# echo

11、“ /usr/local/mysql/lib/mysql>>”/etc/ld.so.conf# ldconfig添加 /usr/local/mysql/bin到環(huán)境變量PATH中#echo“ export PATH=$PATH:/usr/local/mysql/bin”>> /etc/profile#source /etc/profile*在執(zhí)行第三步之前,為了確保mysql+nfs的能否成功執(zhí)行,可以先測試一下,我這里是這么做的,停掉原先的mysql。先在主機(jī)上面把nfs掛上來掛到/data目錄,然后mv /usr/local/mysql/var/data/里面去,然

12、后起mysql 服務(wù),看能不能起來,然后往里面建庫建表,再用備機(jī)掛nfs 看主機(jī)建的庫和表是否存在,這么來回測試。測試完就可以確定mysql+nfs是 ok 的了。底下出錯專心找heartbeat的問題。#第三塊: heartbeat的安裝(主備機(jī)一樣,唯獨(dú)ha.cf 里面的ucast 那條信息)tar -zxvf libnet.tar.gzcd libnet./configuremake && make installtar -zxvf heartbeat-2.1.3.tar.gzcd heartbeat-2.1.3groupadd haclientuseradd -g ha

13、client hacluster./ConfigureMe configuremake && make install配置雙機(jī)文件, 一共需要三個文件 (手工配置就行) ha.cf 、haresources 、 authkeys# cd/etc/ha.drootcm5 ha.d# viha.cfdebugfile /var/log/ha-debuglogfile /var/log/ha-loglogfacility local0keepalive 2deadtime 30warntime 10initdead 120auto_failback onnode as5u3node

14、cm5.3udpport 694ucast eth0 10.0.0.2ping_group group1 192.168.184.102192.168.184.124respawn hacluster /usr/lib/heartbeat/ipfail apiauth ipfail gid=haclient uid=hacluster hopfudgerootcm5 ha.d# vi haresourcescm5.3IPaddr:192.168.184.200/24/eth0Filesystem:192.168.184.103:/data:/data:nfs mysqldrootcm5 ha.

15、d# vi authkeysauth 11 crcrootcm5 ha.d# chmod600 authkeys#第四步:測試1、先停掉主備機(jī)的上面的mysql ,卸掉 nfs 的掛載。2、 /etc/init.d/heartbeat start (主備機(jī)雙執(zhí)行)3、可以看到主機(jī)的虛 ip 已經(jīng)起來了、 nfs 也掛上來了、 mysql服務(wù)也已經(jīng)起來了(其實(shí)他們的起來的順序也是這樣的,釋放資源是反順序, 可以看 /var/log/ha-log日志)4、主機(jī)上寫表,斷掉主機(jī)的網(wǎng)卡,主機(jī)釋放資源,備機(jī)起來,所有的都在5、主機(jī)網(wǎng)卡起來,資源從備機(jī)釋放。*第五步:意外情況上面能成功那是因?yàn)槲业谋砀袷绞?/p>

16、myisam 的。但是用innodb 卻是不成功的, 主機(jī)把網(wǎng)卡斷了, 備機(jī) mysql 起不來。剛開始以為是 inndb 的原因,后來才知道是 nfs 的鎖?。ㄏ旅娴氖菆箦e日志)/var/log/mysql.logInnoDB: Unable to lock ./ibdata1, error: 11InnoDB: Check that you do not already have anothermysqld processInnoDB: using the same InnoDB data or log files./var/log/ha-logResourceManager25602:

17、2010/07/16_18:13:10info:Running /etc/init.d/mysqld start ResourceManager25602: 2010/07/16_18:13:41 ERROR:Return code 1 from /etc/init.d/mysqld ResourceManager25602: 2010/07/16_18:13:41 CRIT:Giving up resources due to failure of mysqld解決思路:1. 修改了 mysql.sock文件存放的路徑不能全部放在共享的分區(qū)里面。(修改 f )2. 既然修改 mysql.so

18、ck 路徑就得修改啟動腳本的里面的配置,詳情見最后。3. 修改 /etc/ha.d/haresource-test1IPaddr:192.168.122.13/24/eth0 nfsmysqld4. 在/etc/ha.d/resource.d/ 里面添加了一文件 nfs ,主要作用就是設(shè)置 nfs 的 mountroottest2 resource.d# morenfs#!/bin/shunset LC_ALL; export LC_ALLunset LANGUAGE; export LANGUAGEcase“ $1 in start )/bin/mount -onolock 192.168.

19、122.12:/data/var/lib/mysql; pre-start ); post-start ); stop )/bin/umount /var/lib/mysql; pre-stop ); post-stop );*)echo “ Usage: $0 start | pre -start | post-start| stop |pre-stop | post-stop ”;esacexit 05. 測試我寫了一個測試腳本,腳本意思通過建立log表,不斷往里面的插數(shù)據(jù),數(shù)據(jù)的順序依次是0、1、210000 。roottest1 # more test.sh#!/bin/bashi=0

20、while $i -lt 10000 domysql -socket=/tmp/mysql.sock -e “ insert intocm.logvalues (“ $i” )”;let i=i+1echo “ add $i to table log”done此時在主機(jī)上面執(zhí)行這個腳本,如下所示開始往數(shù)據(jù)庫的log 表里面插入數(shù)據(jù)了roottest1 # ./test.shadd 1 to table logadd 2 to table logadd 3 to table logadd 4 to table logadd 5 to table logadd 6 to table logadd

21、2026 to table log到了插入到第2026 的時候,斷開主機(jī)的網(wǎng)卡。查看備機(jī) mysql 的 log 日志 ,看到備機(jī)的mysql 的會有一個inndb 檢查修復(fù)的操作。很快備機(jī)的mysql 服務(wù)就起來了。roottest2 #tailf/var/log/mysql.log100716 22:12:23 mysqld started100716 22:12:23 InnoDB: Database was not shut downnormally!InnoDB: Starting crash recovery.InnoDB: Reading tablespace information fromthe .ibdfiles.InnoDB: Restoring possible half-written data pagesfromthe doublewriteInnoDB: buffer.100716 22:12:24 InnoDB: Starting log scan based on checkpoint atInnoDB: log sequence number 0 17445609. InnoDB: Doing recovery: scanned up to log

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論