最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當(dāng)前位置: 首頁(yè) - 科技 - 知識(shí)百科 - 正文

MySQL內(nèi)建復(fù)制功能來優(yōu)化可用性_MySQL

來源:懂視網(wǎng) 責(zé)編:小采 時(shí)間:2020-11-09 17:39:42
文檔

MySQL內(nèi)建復(fù)制功能來優(yōu)化可用性_MySQL

MySQL內(nèi)建復(fù)制功能來優(yōu)化可用性_MySQL:MySQL內(nèi)建復(fù)制功能來優(yōu)化可用性,在Soundbreak我們每天24小時(shí)不間斷地播放實(shí)況音頻和視頻,所以對(duì)于MySQL的新增的復(fù)制特性,我們不能做出很令人信服的測(cè)試。通過測(cè)試我們發(fā)現(xiàn),可以使用這個(gè)特性來與備份數(shù)據(jù)庫(kù)服務(wù)器保持?jǐn)?shù)據(jù)同步,這樣當(dāng)主服務(wù)器因?yàn)槟撤N原因
推薦度:
導(dǎo)讀MySQL內(nèi)建復(fù)制功能來優(yōu)化可用性_MySQL:MySQL內(nèi)建復(fù)制功能來優(yōu)化可用性,在Soundbreak我們每天24小時(shí)不間斷地播放實(shí)況音頻和視頻,所以對(duì)于MySQL的新增的復(fù)制特性,我們不能做出很令人信服的測(cè)試。通過測(cè)試我們發(fā)現(xiàn),可以使用這個(gè)特性來與備份數(shù)據(jù)庫(kù)服務(wù)器保持?jǐn)?shù)據(jù)同步,這樣當(dāng)主服務(wù)器因?yàn)槟撤N原因

MySQL內(nèi)建復(fù)制功能來優(yōu)化可用性,在Soundbreak我們每天24小時(shí)不間斷地播放實(shí)況音頻和視頻,所以對(duì)于MySQL的新增的復(fù)制特性,我們不能做出很令人信服的測(cè)試。通過測(cè)試我們發(fā)現(xiàn),可以使用這個(gè)特性來與備份數(shù)據(jù)庫(kù)服務(wù)器保持?jǐn)?shù)據(jù)同步,這樣當(dāng)主服務(wù)器因?yàn)槟撤N原因處理失效時(shí),能夠使用備份機(jī)處理所有的查詢。對(duì)于這樣的要求,配置兩臺(tái)服務(wù)器并不困難。我將詳細(xì)討論整個(gè)處理過程,同時(shí)討論一下當(dāng)主服務(wù)器失效時(shí),如何使用PHP來重定向查詢。

MySQL內(nèi)部復(fù)制功能是建立在兩個(gè)或兩個(gè)以上服務(wù)器之間,通過設(shè)定它們之間的主-從關(guān)系來實(shí)現(xiàn)的。其中一個(gè)作為主服務(wù)器,其它的作為從服務(wù)器。我將詳細(xì)討論如何配置兩臺(tái)服務(wù)器,將一個(gè)設(shè)為主服務(wù)器,另一個(gè)設(shè)為從服務(wù)器。并且描述一下在它們之間進(jìn)行切換的處理過程。我是在MySQL的3.23.23版本上進(jìn)行的配置設(shè)置過程,并且也是在這個(gè)版本上進(jìn)行的測(cè)試。MySQL開發(fā)人員建議最好使用最新版本,并且主-從服務(wù)器均使用相同的版本。同時(shí)MySQL 3.23版本仍然是beta測(cè)試版,而且這個(gè)版本可能不能向下兼容。所以因?yàn)檫@個(gè)原因,在實(shí)際的網(wǎng)站中,我現(xiàn)在還沒有使用這個(gè)版本。擁有容錯(cuò)能力具有一個(gè)好處是,在不需中斷任何查詢的情況下,對(duì)服務(wù)器進(jìn)行升級(jí)。

第一步:配置主服務(wù)器

在這篇文章的剩下篇幅中,我將指定兩臺(tái)服務(wù)器。A(IP為10.1.1.1)作為主服務(wù)器(簡(jiǎn)稱為主機(jī))。B(IP為10.1.1.2)作為后備服務(wù)器(簡(jiǎn)稱為備機(jī))。

MySQL的復(fù)制功能的實(shí)現(xiàn)過程為:備機(jī)(B)與主機(jī)(A)連接,然后讀出主機(jī)的二進(jìn)制更新日志,再將發(fā)生的變化合并到自已的數(shù)據(jù)庫(kù)中。備機(jī)需要一個(gè)用戶帳號(hào)來與主機(jī)連接,所以在主機(jī)上創(chuàng)建一個(gè)帳號(hào),并只給它FILE權(quán)限,如下操作: GRANT FILE ON *.* TO replicate@10.1.1.2 IDENTIFIED BY ’password’;

為了備機(jī)能夠與主機(jī)連接,要在主機(jī)上運(yùn)行’FLUSH PRIVILEGES’,不過不要擔(dān)心,因?yàn)槲覀儗⒃谙旅娴牟襟E中停掉服務(wù)器。

現(xiàn)在我們需要主機(jī)數(shù)據(jù)庫(kù)的一個(gè)快照,并且對(duì)主機(jī)進(jìn)行配置,允許生成二進(jìn)制的更新日志。首先編輯’my.cnf’文件,以便允許二進(jìn)制更新日志,所以在[MySQLd]部分的下面某個(gè)地方增加一行:’log-bin’。在下一次服務(wù)器啟動(dòng)時(shí),主機(jī)將生成二進(jìn)制更新日志(名為:<主機(jī)名>-bin.<增量序號(hào)#>)。為了讓二進(jìn)制更新日志有效,關(guān)閉MySQL服務(wù)程序,然后將主機(jī)上的所有數(shù)據(jù)庫(kù)目錄到另一個(gè)目錄中,接著重新啟動(dòng)mysqld。

請(qǐng)確定得到了所有數(shù)據(jù)庫(kù),否則在進(jìn)行復(fù)制時(shí),如果一個(gè)表在主機(jī)上存在但在備機(jī)上不存在,將因?yàn)槌鲥e(cuò)而退出?,F(xiàn)在你已經(jīng)得到了數(shù)據(jù)的快照,和一個(gè)從建立快照以來的二進(jìn)制日志,上面記錄著任何對(duì)數(shù)據(jù)庫(kù)的修改。請(qǐng)注意MySQL數(shù)據(jù)文件(*.MYD,*.MYI和*.frm)是依賴于文件系統(tǒng)的,所以你不能僅僅進(jìn)行文件傳輸,如從Solaris到Linux。如果你處于一個(gè)異種的服務(wù)器環(huán)境,你將不得不使用mysqldump實(shí)用程序或其它的定制腳本來得到數(shù)據(jù)快照。

第二步:配置備機(jī)

讓我們繼續(xù)。停掉備機(jī)上的MySQL服務(wù)程序,并且把從主機(jī)上拷貝來的數(shù)據(jù)庫(kù)目錄移到備機(jī)上的data目錄下。請(qǐng)確認(rèn)將目錄的擁有者和屬組改變?yōu)镸ySQL用戶相應(yīng)值,并且修改文件模式為660(只對(duì)擁有者和屬組可讀、可寫),目錄本身為770(只對(duì)擁有者和屬組可讀、可寫和可執(zhí)行)。

繼續(xù)。在備機(jī)上啟動(dòng)MySQL服務(wù)程序,確認(rèn)MySQL工作正常。運(yùn)行幾個(gè)select查詢(不要update或insert查詢),看一看在第一步中得到的數(shù)據(jù)快照是否成功。接著,在測(cè)試成功后關(guān)掉MySQL服務(wù)程序。

在備機(jī)上配置需要訪問的主機(jī),以便接收主機(jī)的更改。所以需要編輯務(wù)機(jī)上的’my.cnf’文件,在[MySQLd]部分中增加下面幾行: master-host=10.1.1.1

master-user=replicate

master-password=password

在啟動(dòng)備機(jī)服務(wù)程序后,備機(jī)服務(wù)程序?qū)⒉榭丛凇痬y.cnf’文件中所指定的主機(jī),查看是否有改變,并且將這些改變合并到自已的數(shù)據(jù)庫(kù)中。備機(jī)保持了主機(jī)的更新記錄,這些記錄是從主機(jī)的’master.info’文件中接收下來的。備機(jī)線程的狀態(tài)可以通過sql命令’SHOW SLAVE-STATUS’看到。在備機(jī)上處理二進(jìn)制日志中如果發(fā)生錯(cuò)誤,都將導(dǎo)致備機(jī)線程的退出,并且在*.err的日志文件中生成一條信息。然后錯(cuò)誤可以被改正,接著可以使用sql語(yǔ)句’SLAVE START’來重新啟動(dòng)備機(jī)線程。線程將從主機(jī)二進(jìn)制日志處理中斷的地方繼續(xù)處理。

至此,在主機(jī)上所發(fā)生的數(shù)據(jù)改變應(yīng)該已經(jīng)復(fù)制到備機(jī)上了,要測(cè)試它,你可以在主機(jī)上插入或更新一條記錄,而在備機(jī)上選擇這條記錄。

現(xiàn)在我們擁有了從A機(jī)到B機(jī)的這種主-從關(guān)系,這樣當(dāng)A機(jī)可能當(dāng)機(jī)的時(shí)候,允許我們將所有的查詢重定向到B機(jī)上去,但是當(dāng)A機(jī)恢復(fù)時(shí),我們沒有辦法將發(fā)生的改變恢復(fù)到A機(jī)中去。為了解決這個(gè)問題,我們創(chuàng)建從B機(jī)到A機(jī)的主-從關(guān)系。

第三步:創(chuàng)建相互的主從關(guān)系

首先在B機(jī)上的my.cnf文件中,在[MySQLd]部分中加入’log-bin’,接著重新啟動(dòng)mysqld,然后創(chuàng)建可在

它的上面執(zhí)行復(fù)制功能的用戶帳號(hào),使用: GRANT FILE ON *.* TO replicate@10.1.1.1 IDENTIFIED BY ’password’;

在B機(jī)上運(yùn)行’FLUSH PRIVILEGES’命令,以便裝入在加入復(fù)制用戶后的新的授權(quán)表,接著回到A機(jī)上,在它的’my.cnf’中加入下面幾行: master-host=10.1.1.2

master-user=replicate master-password=password

在重啟A機(jī)的服務(wù)程序之后,現(xiàn)在我們一擁有了在A機(jī)與B機(jī)之間的相互主-從關(guān)系。不管在哪個(gè)服務(wù)器上 更新一條記錄或插入一條記錄,都將被復(fù)制到另一臺(tái)服務(wù)器上。要注意的是:我不敢確定一個(gè)備機(jī)合并二進(jìn) 制日志變化的速度有多快,所以用這種方法來進(jìn)行插入或更新語(yǔ)句的負(fù)載平衡可能不是一個(gè)好辦法。

聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

MySQL內(nèi)建復(fù)制功能來優(yōu)化可用性_MySQL

MySQL內(nèi)建復(fù)制功能來優(yōu)化可用性_MySQL:MySQL內(nèi)建復(fù)制功能來優(yōu)化可用性,在Soundbreak我們每天24小時(shí)不間斷地播放實(shí)況音頻和視頻,所以對(duì)于MySQL的新增的復(fù)制特性,我們不能做出很令人信服的測(cè)試。通過測(cè)試我們發(fā)現(xiàn),可以使用這個(gè)特性來與備份數(shù)據(jù)庫(kù)服務(wù)器保持?jǐn)?shù)據(jù)同步,這樣當(dāng)主服務(wù)器因?yàn)槟撤N原因
推薦度:
  • 熱門焦點(diǎn)

最新推薦

猜你喜歡

熱門推薦

專題
Top