MySql主從拓展2

來源:互聯網
上載者:User

標籤:sql   記錄   gpo   搭建   情境   最簡   post   mysql架構   生產環境   

mysql架構由小變大的演變過程

第一階段

網站訪問量日pv量級在1w以下。單台機器跑web和db,不需要做架構層調優。此時,資料往往都是每日冷備份的,但有時候如果考慮資料安全性,會搭建一個mysql主從

 

第二階段

網站訪問量日pv達到幾萬。此時單台機器已經有點負載,需要我們把web和db分開,需要搭建memcached服務作為緩衝。也就是說,在這個階段,我們還可以使用單台機器跑mysql去承擔整個網站的資料存放區和查詢。如果做mysql主從,目的也是為了資料安全性。

 

第三階段

網站訪問量日pv達到幾十萬。單台機器雖然也可以支撐,但是需要的機器配置要比之前的機器好很多。如果經費允許,可以購買配置很高的機器來跑mysql服務,但是並不是說,配置翻倍,效能也翻倍,到了一定階段配置增加已經不能帶來效能的增加。所以,此階段,我們會想到做mysql服務的叢集,也就是說我們可以拿多台機器跑mysql。但,mysql的叢集和web叢集是不一樣的,我們需要考慮資料的一致性,所以不能簡單套用做web叢集的方式(lvs,nginx代理)。可以做的架構是,mysql主從,一主多從。為了保證架構的健壯和資料完整,主只能是一個,從可以是多個。
還有一個問題,我們需要想到,就是在前端web層,我們的程式裡面指定了mysql機器的ip,那麼當mysql機器有多台時,程式裡面如何去配置?discuz,其實有一個功能,支援mysql讀寫分離。即,我們可以拿多台機器跑mysql,其中一台寫,其他多台是讀,我們只需要把讀和寫的ip分別配置到程式中,程式自動會去區分機器。當然,如果不使用discuz內建的配置,我們還可以引用一個軟體叫做 mysql-proxy, 使用他來實現讀寫分離。它支援一主多從的模式。

 

第四階段

網站訪問量日pv到幾百萬。之前的一主多從模式已經遇到瓶頸,因為當網站訪問量變大,讀資料庫的量也會越來越大,我們需要多加一些從進來,但是從的數量增加到數十台時,由於主需要把bin-log全部分發到所有從上,那麼這個過程本身就是一件很繁瑣的事情,再加上頻繁讀取,勢必會造成從上同步過來的資料有很大延遲。所以,我們可以做一個最佳化,把mysql原來的一主多從變為一主一從,然後從作為其他從的主,而前面的主只負責網站業務的寫入,而後面的從不負責網站任何業務,只負責給其他從同步bin-log。這樣還可以繼續多疊加幾個從庫。

 

第五階段
網站訪問量日pv到1千萬的時候,我們發現,網站的寫入量非常大,我們之前架構中只有一個主,這裡的主已經成為瓶頸了。所以,需要再近一步做出調整。比如,我們可以把業務分模組,把使用者相關的單獨分離出來,把許可權、積分等也可以分離出來單獨跑一個庫,然後再做主從,也就是所謂的分庫。當然也可以換一個緯度,把訪問量或者寫入量大的表單獨分離出來,跑在一台伺服器上,也可以把一個表分成多個小表。這一步操作,涉及到一些程式上的改動,所以需要事先和開發同事做好溝通和設計。總之,這一步要做的就是分庫分表。

 

使用mysql-proxy快速實現mysql叢集 讀寫分離

目前常見的mysql讀寫分離有兩種:

1、基於程式碼內部實現:在代碼中對select操作分發到從庫;其他動作主庫執行;這類方法也是目前生產環境應用最廣泛。優點是是效能較好,因為在程式碼中實現,不需要增加額外的裝置作為硬體開支。缺點是需要開發人員來實現,營運人員無從下手。

2.基於中間代理層實現:代理一般是位於用戶端和伺服器之間,Proxy 伺服器接到用戶端請求後通過判斷然後轉寄到後端資料庫。

 

 

 

mycat實現MySQL讀寫分離mycat是什麼

Mycat是一個開源的分散式資料庫系統,但是由於真正的資料庫需要儲存引擎,而Mycat並沒有儲存引擎,所以並不是完全意義的分散式資料庫系統。Mycat是資料庫中介軟體,就是介於資料庫與應用之間,進行資料處理與互動的中間服務。對資料進行分區處理之後,從原有的一個庫,被切分為多個分區資料庫,所有的分區資料庫叢集構成了整個完整的資料庫儲存。

Mycat的幾個典型的應用情境:

單純的讀寫分離,此時配置最為簡單,支援讀寫分離,主從切換;

分表分庫,對於超過1000萬的表進行分區,最大支援1000億的單表分區;

多租戶應用,每個應用一個庫,但應用程式只串連Mycat,從而不改造程式本身,實現多租戶化;

表系統,藉助於Mycat的分表能力,處理大規模報表的統計;

代替Hbase,分析大資料;

作為海量資料即時查詢的一種簡單有效方案,比如 100億條頻繁查詢的記錄需要在3秒內查詢出來結果,除了基於主鍵的查詢,還可能存在範圍查詢或其他屬性查詢,此時Mycat可能是最簡單有效選擇;

單純的MyCAT讀寫分離,配置最為簡單,支援讀寫分離,主從切換分表分庫,對於超過1000萬的表進行分區,最大支援1000億的單表分區;

多租戶應用,每個應用一個庫,但應用程式只串連Mycat,從而不改造程式本身,實現多租戶化;

報表系統,藉助於Mycat的分表能力,處理大規模報表的統計替代Hbase,分析大資料,作為海量資料即時查詢的一種簡單有效方案,比如100億條頻繁查詢的記錄需要在3秒內查詢出來結果,除了基於主鍵的查詢,還可能存在範圍查詢或其他屬性查詢,此時Mycat可能是最簡單有效選擇。

MySql主從拓展2

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.