mysql動態擴容調研


 

MySQL動態擴容方案

目前可用方案

  • MySQL的復制:

    • 一個Master數據庫,多個Salve,然后利用MySQL的異步復制能力實現讀寫分離,這個方案目前應用比較廣泛,這種技術對於以讀為主的應用很有效。
  • 數據切分(MySQL的Sharding策略):

    • 垂直切分:一種是按照不同的表(或者Schema)來切分到不同的數據庫(主機)之上,這種切可以稱之為數據的垂直(縱向)切分;垂直切分的思路就是分析表間的聚合關系,把關系緊密的表放在一起。
    • 水平切分:另外一種則是根據表中的數據的邏輯關系,將同一個表中的數據按照某種條件拆分到多台數據庫(主機)上面,這種切分稱之為數據的水平(橫向)切分。
    • 參考資料:MySQL在大型網站的應用架構演變
  • 通過集群擴展:MySQL Cluster(NDB Cluster)

    • 類似於MongoDB的動態擴容策略。
    • MySQL Cluster是一套具備可擴展能力、實時、內存內且符合ACID要求的事務型數據庫,其將99.999%高可用性與低廉的開源總體擁有成本相結合。在設計思路方面,MySQL Cluster采用一套分布式多主架構並借此徹底消滅了單點故障問題。MySQL Cluster能夠橫向擴展至商用硬件之上,能夠通過自動分區以承載讀取與寫入敏感型工作負載,並可通過SQL與NoSQL接口實現訪問。
    • 采用NDB存儲引擎,有數據節點,SQL節點,和管理節點(1個,配置要求低)
  • 分庫分表分區

  • 開源解決方案

    • mycat:

      • 它是一個開源的分布式數據庫系統,是一個實現了MySQL協議的服務器,前端用戶可以把它看作是一個數據庫代理,用MySQL客戶端工具和命令行訪問,而其后端可以用MySQL原生協議與多個MySQL服務器通信,也可以用JDBC協議與大多數主流數據庫服務器通信,其核心功能是分表分庫,即將一個大表水平分割為N個小表,存儲在后端MySQL服務器里或者其他數據庫里。
      • MyCAT的前身,是阿里巴巴於2012年6月19日,正式對外開源的數據庫中間件Cobar,Cobar的前身是早已經開源的Amoeba,不過其作者陳思儒離職去盛大之后,阿里巴巴內部考慮到Amoeba的穩定性、性能和功能支持,以及其他因素,重新設立了一個項目組並且更換名稱為Cobar。Cobar是由 Alibaba 開源的 MySQL 分布式處理中間件,它可以在分布式的環境下看上去像傳統數據庫一樣提供海量數據服務。 
        Cobar自誕生之日起, 就受到廣大程序員的追捧,但是自2013年后,幾乎沒有后續更新。在此情況下,MyCAT應運而生,它基於阿里開源的Cobar產品而研發,Cobar的穩定性、可靠性、優秀的架構和性能,以及眾多成熟的使用案例使得MyCAT一開始就擁有一個很好的起點,站在巨人的肩膀上,MyCAT能看到更遠。
      • 做分庫分表,讀寫分離,不能動態擴展增加機器
    • cobar

      • Cobar 是由 Alibaba 開源的 MySQL 分布式處理中間件,它可以在分布式的環境下看上去像傳統數據庫一樣提供海量數據服務
      • 提供分庫分表,主備切換
    • MySQL Router 
      • 提供應用與任意 MySQL 服務器后端的透明路由
      • 可以快速實現一個簡單的帶有讀寫分離的高可用集群。寫可進行主備的自動切換,實現高可用,讀可提供類似於LVS形式的負載均衡。
    • MySQL Fabric

      • fabric是“織物”的意思,這意味着它是用來“織”起一片MySQL數據庫。MySQL Fabric是一套數據庫服務器場(Database Server Farm)的架構管理系統。
      • MySQL Fabric能“組織”多個MySQL數據庫,是應用系統將大於幾TB的表分散到多個數據庫,即數據分片(Data Shard)。在同一個分片內又可以含有多個數據庫,並且由Fabric自動挑選一個適合的作為主數據庫,其他的數據庫配置成從數據庫,來做主從復制。在主數據庫掛掉時,從各個從數據庫中挑選一個提升為主數據庫。之后,其他的從數據庫轉向新的主數據庫復制新的數據。
      • Fabric實現學習筆記
    • Atlas

      • Qihoo 360公司Web平台部基礎架構團隊開發維護的一個基於MySQL協議的數據中間層項目。它在MySQL官方推出的MySQL-Proxy 0.8.2版本的基礎上,修改了大量bug,添加了很多功能特性。
      • 讀寫分離, 從庫負載均衡, 靜態分
    • 談談MySQL水平擴展
    • 關於MySQL的在線擴容

高可用方案

  • MMM 
    • MMM(Master-Master replication manager for MySQL) 是一套支持雙主故障切換和雙主日常管理的腳本程序。MMM使用Perl語言開發,主要用來監控和管理MySQL Master-Master(雙主)復制,雖然叫做雙主復制,但是業務上同一時刻只允許對一個主進行寫入,另一台備選主上提供部分讀服務,以加速在主主切換時刻備選主的預熱,可以說MMM這套腳本程序一方面實現了故障切換的功能,另一方面其內部附加的工具腳本也可以實現多個slave的read負載均衡。
    • 由於MMM無法完全的保證數據一致性,所以MMM適用於對數據的一致性要求不是很高,但是又想最大程度的保證業務可用性的場景。對於那些對數據的一致性要求很高的業務,非常不建議采用MMM這種高可用架構
    • MySQL 高可用架構之MMM
  • MHA 
    • MHA(Master High Availability)目前在MySQL高可用方面是一個相對成熟的解決方案,它由日本DeNA 公司youshimaton(現就職於Facebook公司)開發,是一套優秀的作為MySQL高可用性環境下故障切換和主從提升的高可用軟件。在MySQL故障切換過程中,MHA能做到在0~30秒之內自動完成數據庫的故障切換操作,並且在進行故障切換的過程中,MHA能在最大程度上保證數據的一致性,以達到真正意義上的高可用。
  • Percona XTRADB Cluste 
    • Percona XtraDB Cluster是MySQL高可用性和可擴展性的解決方案
    • 相當於多主同時讀寫


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM