欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

MySQL如何實現負載均衡功能

 更新時間:2019年06月26日 14:13:01   作者:課課家教育  
這篇文章主要介紹了MySQL如何實現負載均衡功能,學習過數據庫的朋友們都會知道MySQL,那么如何在MySQL下實現負載均衡功能呢?本文就將為大家細致地介紹一下

前言

MySQL是一個高速度、高性能、多線程、開放源代碼,建立在客戶/服務器(Client/Server)結構上的關系型數據庫管理系(RDBMS)。它始于1979年,最初是MichaelWidenius為瑞典TcX公司創(chuàng)建的UNIREG數據庫系統,當時的UNIREG沒有SQL(StructuredQueryLanguage結構化查詢語言)接口,限制了它的應用。

1996年5月,Widenius開發(fā)出了MySQL的最初版本,開始在Internet上公開發(fā)行。MySQL的開發(fā)人員從一開始就一直關注它的性能,為此不惜特性集,直到今天,MySQL依然保持本色,以高速度高性能為首要原則。隨著時間的推移,MySQL也加入了大型數據庫產品的高級特性,如存儲過程、視圖、觸發(fā)器等,使其在企業(yè)級數據庫系統中開始被部署應用[1]。

2008年10月,SUN公司收購了MySQLAB公司,開始進入開源領域。隨著重量級操作系統Solaris的開源,SUNMySQL在數據庫市場占有的份額將會進一步提高。因此,在生產環(huán)境中部署具有負載均衡功能的MySQL服務器集群,對于提高企業(yè)數據庫應用系統的速度、穩(wěn)定性及可伸縮性具有很大的現實意義,也可以有效降低應用系統的投資成本。

一、負載均衡基本思路

在一個服務器集群中,盡可能的平均負載量。通常做法是在服務器前端設置一個負載均衡器(專門的硬件設備),MySQL的負載均衡,通常都離不開數據分片(把數據分割成小塊,存儲到不同的db節(jié)點中)、復制等操作。

在一個服務器集群中,盡可能的平均負載量。通常做法是在服務器前端設置一個負載均衡器(專門的硬件設備),MySQL的負載均衡,通常都離不開數據分片(把數據分割成小塊,存儲到不同的db節(jié)點中)、復制等操作。

負載均衡的主要貢獻,除了均發(fā)數據庫請求,還可提供管理讀/寫策略。在分發(fā)請求時則確定那些節(jié)點可寫,可讀,隨即將請求發(fā)送到指定節(jié)點上執(zhí)行操作。

二、實現負載均衡的方式

1、mysql讀寫分離

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

由于備庫的復制是異步的,無法實時同步,讀寫分離的主要難點也在于備庫上的臟數據。通常如果使用備庫進行讀,一般對數據的實時性要求不能太高。對此,mysql提供了幾種常見的讀寫分離方式,例如基于查詢的讀寫分離、基于臟數據、基于會話等,有興趣可繼續(xù)研究。

mysql設置的讀寫分離,減少了主庫的請求量,將大量讀的操作發(fā)送給備庫,實現負載均衡。

2、修改DNS

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

3、引入中間件

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

4、利用mysql復制分流查詢操作

利用mysql的主從復制可以有效的分流更新操作和查詢操作,具體的實現是一個主服務器,承擔更新操作,多臺從服務器,承擔查詢操作,主從之間通過復制實現數據的同步。多臺從服務器一方面用來確??捎眯?,一方面可以創(chuàng)建不同的索引滿足不同查詢的需要。

對于主從之間不需要復制全部表的情況,可以通過在主的服務器上搭建一個虛擬的從服務器,將需要復制到從服務器的表設置成blackhole引擎,然后定義replicate-do-table參數只復制這些表,這樣就過濾出需要復制的binlog,減少了傳輸binlog的帶寬。因為搭建的虛擬的從服務器只起到過濾binlog的作用,并沒有實際紀錄任何數據,所以對主數據庫服務器的性能影響也非常的有限。

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

5、采用分布式數據庫架構

mysql從5.0.3開始支持分布式事務,當前分布式事務只對Innodb存儲引擎支持。分布式的數據庫架構適合大數據量,負載高的情況,有良好的擴展性和高可用性。通過在多臺服務器之間分布數據實現在多臺服務器之間的負載平均,提高了訪問的執(zhí)行效率。具體實現的時候,可以使用mysql的Cluster功能(NDB引擎)或者自己編寫程序來實現全局事務。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • MySQL日期及時間字段的查詢

    MySQL日期及時間字段的查詢

    這篇文章主要介紹了MySQL日期及時間字段的查詢,一分享日期及時間字段的規(guī)范化查詢方法為主展開詳細內容,需要的小伙伴可以參考一下
    2022-05-05
  • mysql:ERROR?2003?(HY000)故障錯誤解決方法與思路

    mysql:ERROR?2003?(HY000)故障錯誤解決方法與思路

    這篇文章主要給大家介紹了關于mysql:ERROR?2003?(HY000)故障錯誤解決方法與思路的相關資料,error 2003 hy000是MySQL數據庫中一個常見的錯誤代碼,它通常意味著MySQL無法建立到數據庫的連接,需要的朋友可以參考下
    2024-02-02
  • MySQL Json類型字段IN查詢分組優(yōu)化

    MySQL Json類型字段IN查詢分組優(yōu)化

    這篇文章主要為大家介紹了MySQL Json類型字段IN查詢分組優(yōu)化,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-08-08
  • MySQL借助DB實現分布式鎖思路詳解

    MySQL借助DB實現分布式鎖思路詳解

    這篇文章主要給大家介紹了關于MySQL借助DB實現分布式鎖思路的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用MySQL具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-10-10
  • 在centOS 7安裝mysql 5.7的詳細教程

    在centOS 7安裝mysql 5.7的詳細教程

    這篇文章主要介紹了在centOS 7安裝mysql 5.7的詳細教程,非常不錯,具有參考借鑒價值,需要的朋友參考下吧
    2016-12-12
  • MySQL的日志基礎知識及基本操作學習教程

    MySQL的日志基礎知識及基本操作學習教程

    這篇文章主要介紹了MySQL的日志基礎知識學習教程,包括MySQL中日志相關常用的服務器變量說明,極力推薦!需要的朋友可以參考下
    2015-11-11
  • MySQL會發(fā)生死鎖的幾種情況及處理方法

    MySQL會發(fā)生死鎖的幾種情況及處理方法

    數據庫的死鎖是指不同的事務在獲取資源時相互等待,導致無法繼續(xù)執(zhí)行的一種情況,當發(fā)生死鎖時,數據庫系統會自動中斷其中一個事務,以解除死鎖,本文給大家介紹了MySQL什么情況下會死鎖,發(fā)生了死鎖怎么處理呢,需要的朋友可以參考下
    2023-09-09
  • MySQL中的臨時表與內存表

    MySQL中的臨時表與內存表

    這篇文章主要介紹了MySQL中的臨時表與內存表,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • mysql獲取指定時間段中所有日期或月份的語句(不設存儲過程,不加表)

    mysql獲取指定時間段中所有日期或月份的語句(不設存儲過程,不加表)

    最近需要用mysql獲取一個時間段中的所有月份,網上查都是要設置存儲過程或者加一個日期表的,不滿足我的需求,翻墻找資料加上自己試驗,如下代碼分享給大家
    2021-06-06
  • MySQL對數據表已有表進行分區(qū)表的實現

    MySQL對數據表已有表進行分區(qū)表的實現

    本文主要介紹對現有的一個表進行創(chuàng)建分區(qū)表,并把數據遷移到新表,可以按時間來分區(qū),具有一定的參考價值,感興趣的可以了解一下
    2021-10-10

最新評論