mysql主從複寫延遲

來源:互聯網
上載者:User

標籤:

  對於高並發流量大的web網站,單點的資料庫往往很難支援,一般是使用主從複製,再加上mysql proxy實現複製均衡,讀寫分離等功能等。但是主從複製會有延遲,大網站是如何解決這些問題的呢?轉載自PHP老楊文章。

1.優酷的經驗

  資料庫採用水平的擴充,主從複製,隨著從庫的增多,複寫延遲越來越厲害,最終無法忍受。最終還是採用了平行的資料庫,相當於叢集吧,把一組使用者的相關的資料和表放到一組的資料庫上。使用SSD來最佳化mysql的I/O,效能明顯提高,採用資料庫分區的技術,拋棄了原來主從延遲的問題,按照userid進行分區,這樣的話就必須有一個全域的表來系統管理使用者和shard的關係,根據userid可以得到shardid,然後根據shardid去制定的分區查詢資料,但是如果網站的使用者過多,此表也可能會成為瓶頸,因為查詢會非常的頻繁,可以考慮使用memcache,等方案。

  具體的使用者分區的方案是userid一般是使用者註冊的時候自動產生的,然後看有幾台web伺服器,假如有M台,用userid % M便可以分配一台DB伺服器,然後再繼續的對應資料庫表等,求餘數的方案來進行。

2.facebook的經驗

  採用大量的MySQL伺服器加memcache伺服器。

  使用者發起更新操作,更名‘a‘->‘b‘---->主要資料庫寫入b,刪除主端memcahce的名字值-->遠端memcache並不刪除,主從複製更新從庫,然後更新memcache,這樣的方案仍然會有資料延遲的問題,我覺得可以這樣,當主伺服器有資料更新的時候,立即更新從伺服器中的memcache的資料,這樣的話延遲就非常少了。

  對於比較重要而寫必須即時的資料,比如使用者更換密碼,更新操作寫入主庫,然後用新密碼登入(從庫讀),會造成密碼不一致的情況,導致短時間內登入錯誤,所以這種需要即時讀取的資料最好從主庫直接讀取,避免從庫資料滯後,還好需要即時讀取的情況並不是很多。

mysql主從複寫延遲

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.