回覆列表
  • 1 # 攻城獅成長日記

    MySQL是一個高速度、高效能、多執行緒、開放原始碼,建立在客戶/伺服器(Client/Server)結構上的關係型資料庫管理系(RDBMS)。它始於1979年,最初是MichaelWidenius為瑞典TcX公司建立的UNIREG資料庫系統。目前Mysql資料庫也深受中小型企業的青睞。

    一、負載均衡基本思路

    在一個伺服器叢集中,儘可能的平均負載量。通常做法是在伺服器前端設定一個負載均衡器(專門的硬體裝置),MySQL的負載均衡,通常都離不開資料分片(把資料分割成小塊,儲存到不同的db節點中)、複製等操作。

    在一個伺服器叢集中,儘可能的平均負載量。通常做法是在伺服器前端設定一個負載均衡器(專門的硬體裝置),MySQL的負載均衡,通常都離不開資料分片(把資料分割成小塊,儲存到不同的db節點中)、複製等操作。

    負載均衡的主要貢獻,除了均發資料庫請求,還可提供管理讀/寫策略。在分發請求時則確定那些節點可寫,可讀,隨即將請求傳送到指定節點上執行操作。

    二、實現負載均衡的方式

    1、mysql讀寫分離

    mysql複製時,產生了多個數據副本(備庫),為減少伺服器壓力,備庫用於處理讀操作,主庫可同時處理讀寫是mysql叢集實現讀寫分離的常用策略。

    由於備庫的複製是非同步的,無法實時同步,讀寫分離的主要難點也在於備庫上的髒資料。通常如果使用備庫進行讀,一般對資料的實時性要求不能太高。對此,mysql提供了幾種常見的讀寫分離方式,例如基於查詢的讀寫分離、基於髒資料、基於會話等,有興趣可繼續研究。

    mysql設定的讀寫分離,減少了主庫的請求量,將大量讀的操作傳送給備庫,實現負載均衡。

    2、修改DNS

    在高併發負載均衡(一)——企業架構分析和DNS中詳細介紹了DNS以及DNS如何實現負載,簡言之,透過n個伺服器IP指定到一個域名,根據請求的不同標識特徵,將請求傳送給不同的IP伺服器進行處理。

    3、引入中介軟體

    mysql官方提供了一個mysql負載的中介軟體,mysql_proxy,也需要在伺服器上進行安裝,修改配置檔案(mysql的伺服器IP),實質與nginx類似,也是一個代理伺服器。

    4、利用mysql複製分流查詢操作

    利用mysql的主從複製可以有效的分流更新操作和查詢操作,具體的實現是一個主伺服器,承擔更新操作,多臺從伺服器,承擔查詢操作,主從之間透過複製實現資料的同步。多臺從伺服器一方面用來確保可用性,一方面可以建立不同的索引滿足不同查詢的需要。

    對於主從之間不需要複製全部表的情況,可以透過在主的伺服器上搭建一個虛擬的從伺服器,將需要複製到從伺服器的表設定成blackhole引擎,然後定義replicate-do-table引數只複製這些表,這樣就過濾出需要複製的binlog,減少了傳輸binlog的頻寬。因為搭建的虛擬的從伺服器只起到過濾binlog的作用,並沒有實際紀錄任何資料,所以對主資料庫伺服器的效能影響也非常的有限。

    透過複製分流查詢的存在的問題是主資料庫上更新頻繁或者網路出現問題的時候,主從之間的資料可能存在差異,造成查詢結果的異議,應用在設計的時候需要有所考慮。

    高可用負載均衡方案

    1、虛擬IP技術

    haproxy雙機互備離不開一個關鍵的技術,這個技術是虛擬IP,linux可以在一個網絡卡內定義多個虛擬IP,得把這些IP地址定義到一個虛擬IP。

    2、利用keepalived實現雙機熱備

    定義出來一個虛擬IP,這個方案叫雙機熱備,準備2個keepalived,keepalived 就是為了搶佔虛擬IP的,誰手快誰能搶到,沒搶到的處於等待的狀態。搶到的叫做主伺服器,未搶到的叫做備伺服器。兩個keepalived之前有心跳檢測的,當備用的檢測到主服務掛了,就立馬搶佔虛擬IP。

  • 中秋節和大豐收的關聯?
  • 卡普召集他的親信和家族勢力,能立刻成為海賊王嗎?