日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

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

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
如何實(shí)現(xiàn)MySQLReplication優(yōu)化

以下的文章主要討論的是MySQL Replication 優(yōu)化,我們大家都知道MySQL Replication的實(shí)際討論還是占為大多數(shù)的,很多內(nèi)容的實(shí)用性還是很強(qiáng)的,于是就總結(jié)了一下,希望會(huì)給你帶來(lái)一些幫助在此方面。

本人英文水平水平有限,難免有翻譯的不對(duì)的地方,有疑問(wèn)歡迎討論:)

MySQL Replication延時(shí)的類型

1. 固定性的延時(shí)

Slave的數(shù)據(jù)持續(xù)性的落后于Master并且一直無(wú)法與Master的數(shù)據(jù)保持一致。

Slave的數(shù)據(jù)經(jīng)常在白天落后于Master,而在晚上可以趕上并與Master的記錄保持一致。

這種類型的延時(shí)通常是由于Slave服務(wù)器的負(fù)載已經(jīng)到達(dá)了上限或在白天訪問(wèn)量大的時(shí)候到達(dá)上限造成的。

2. 非固定性的延時(shí)

Slave的數(shù)據(jù)只是短暫的落后于Master,可在短時(shí)間內(nèi)恢復(fù)

這類型的延時(shí)通常與批量任務(wù)和報(bào)表有關(guān),效率差的查詢也會(huì)導(dǎo)致這類延時(shí)

MySQL Replication的限制

MySQL的Replication是單線程的,意味著只能有效的使用一個(gè)CPU內(nèi)核和一個(gè)磁盤(pán),一條復(fù)雜的查詢或者事務(wù)都導(dǎo)致進(jìn)程被阻塞,不過(guò)現(xiàn)在針對(duì)5.1版本的多線程Replication補(bǔ),還是pre版,有很多限制,感興趣的可以去看看。

Replication的容量

1. 理解什么是Replication的容量

可以將Replication暫停一個(gè)小時(shí),重新啟動(dòng)Replication后,觀察Slave的數(shù)據(jù)多久可以與Master一致。從Replication重新啟動(dòng)到和Master數(shù)據(jù)一致所花費(fèi)的時(shí)間與Replication暫停的時(shí)間的比值就是Replication的容量。

2. 建議保持Replication的容量在3倍以上,即延遲一個(gè)小時(shí)的數(shù)據(jù),Slave只需要20分鐘就能與Master的數(shù)據(jù)一致。

MySQL Replication的優(yōu)化

1. 5.0的MySQL中避免類似以下的更新語(yǔ)句

 
 
 
  1. INSERT … SELECT  
  2. UPDATE .... WHERE  

復(fù)雜的查詢會(huì)導(dǎo)致Replication線程阻塞。如果是insert或update與select結(jié)合的語(yǔ)句,可以講select單獨(dú)執(zhí)行并保存在臨時(shí)表中,然后再執(zhí)行insert或者update。

如果使用的是5.1的MySQL,新功能中的行級(jí)Replication(RBR)可以解決這個(gè)問(wèn)題。RBR可以將在Master上通過(guò)復(fù)雜查詢后更新的結(jié)果直接傳給Slave,Slave可以直接將結(jié)果更新到數(shù)據(jù)庫(kù)中。

2. 避免大的事務(wù)

太大的事務(wù)會(huì)造成Replication長(zhǎng)時(shí)間阻塞,數(shù)據(jù)會(huì)嚴(yán)重滯后于Master。

Slave服務(wù)器的硬件選擇

更快的CPU內(nèi)核,對(duì)于單線程的Replication多核CPU是沒(méi)有任何優(yōu)勢(shì)的。

更高速的硬盤(pán),包括更高的轉(zhuǎn)速和更好的高速緩存命中率,如果有錢(qián)的話上SSD吧

主從結(jié)構(gòu)的擴(kuò)展性問(wèn)題

1. 如何降低寫(xiě)操作的頻率

Master的寫(xiě)操作會(huì)擴(kuò)散到所有的Slave上,所以高頻率的寫(xiě)操作會(huì)降低Slave的讀操作效率。

至少保持一臺(tái)Slave做全庫(kù)同步,其他的Slave可以只做部分表的同步。當(dāng)然,這需要web應(yīng)用程序的配合來(lái)分配哪些查詢讀哪些Slave。

將一些更新操作放到memcached中,例如session和計(jì)數(shù)器。

Slave使用myisam引擎

將一些寫(xiě)入量很大的更新操作直接在slave上執(zhí)行,而不通過(guò)Replication。

2. 如何更有效的利用Slave的硬件資源

使用分區(qū)

有選擇的對(duì)表進(jìn)行同步

在Slave上對(duì)數(shù)據(jù)進(jìn)行歸檔。

Session的持久化

為不同的應(yīng)用服務(wù)器分配不同的Slave進(jìn)行讀操作。

或者根據(jù)查詢類型的不同來(lái)分配不同的Slave。

3. 如何使你的程序最大化的利用Slave

將對(duì)數(shù)據(jù)更新不敏感的查詢放到Slave上,而需要實(shí)時(shí)數(shù)據(jù)的查詢則放到Master。

通過(guò)session的持久化,讓做了修改的用戶首先看到修改的內(nèi)容,其他的用戶可以等待Slave更新后再查看新內(nèi)容。

對(duì)于某些數(shù)據(jù),可以用memcached來(lái)存放數(shù)據(jù)的版本號(hào),讀Slave的程序可以先對(duì)比Slave的數(shù)據(jù)和memcached數(shù)據(jù)的版本,如果不一致則去讀master。用戶和博客類的信息可以用這種方法。

在查詢前可以通過(guò)SHOW SLAVE STATUS檢測(cè)Slave的狀態(tài),然后根據(jù)返回的結(jié)果進(jìn)行服務(wù)器的選擇。 以上的相關(guān)內(nèi)容就是對(duì)MySQL Replication的介紹,望你能有所收獲。

【編輯推薦】

  1. MySQL連接字符串的經(jīng)驗(yàn)總結(jié)
  2. 安裝MySQL在linux as3之下
  3. MySQL配置SSL的實(shí)際操作流程
  4. MySQL忘記密碼的正確解決方法
  5. MySQL 基本命令的用法與注意事項(xiàng)

網(wǎng)頁(yè)名稱:如何實(shí)現(xiàn)MySQLReplication優(yōu)化
文章位置:http://www.5511xx.com/article/djiehip.html