集羣之MYsql主從服務之引申出Mysql互爲主從(環形結構)外加簡單實現本身我的的負載均衡器(3)

備註:mysql

本人資歷很淺,說的不對話,萬望各位前輩不要計較,
另關於環形的問題,我在後面的評論給予回覆,
其實環形,解決多地域問題比較好的選擇
關於配置步驟我從新整理了一下(主從AND環形)的配置步驟
在我博客中,有興趣的朋友能夠看一下,sql

http://my.oschina.net/u/1246814/blog/267518數據庫

多謝你們的指導.服務器

好比 我有主的1臺mysql服務器,倆從服務服務器   外加一個負載均衡器(若是把負載均衡器很是簡單的來講話其實就DNS的轉發,很是簡單來講,其實 IP的輪換嘛)
架構

我讀數據的也就(查詢)數據 也就(Select)語句時候,我只是在 仨臺從服務器中讀取數據負載均衡

主服務器負責(增,刪,改)這個一系列操做
socket

順便嘮叨一下, 爲啥 Select 咱們建仨服務器或者多個呢?優化

由於距統計,大概B/S架構70%以上的操做都是以查爲主(說白了就是展現嘛)spa

咱們執行了DML語句那麼負載均衡器,.net

就會把請求轉發到主mysql服務器上,

這裏有個問題?

咱們已經向主服務器插入數據,或者刪除數據,或者更新了數據,

那麼是否是意味從服務裏數據也應該發生變化呢

是的,從服務器確定要發生變化的,否則就出現問題,

好比說,我刪除了一個用戶,

我查詢一下被刪除的用戶, 丫的發現這個用戶壓根就沒被刪除,這不是搞笑了嘛,

那麼就有了主從配置一說

 主從原理:mysql中有一種日誌叫作bin日誌(二進制日誌),
       這個日誌會記錄下全部對MYSQL進行修改的SQL語句。當向主服務器執行SQL語句時,這條SQL語句會被傳遞到從服務器上再執行一遍。

說白了,就是Bin日誌記錄下Dml語句,直接到從服務器執行執行一遍相同的Dml操做,這個方式是以二進制,全部效率很好

至於何時用主從

1. 備份(若是數據庫出現問題,立刻再頂上)

2.優化(分流 讀寫分離) 

Look看圖


若是是Dml語句其實也能夠直接訪問主數據庫,沒必要通過負載均衡器,那麼這塊從

話說回來哈, 負載均衡其實說白了吧,就是dns輪換,IP輪換嘛

若是能夠話,其實咱們本身也能夠相對簡單實現的,但這要分狀況哈,

我提一個思路, 以MVC爲例子 我粗狂簡單的舉一下列子,

1.在父類Model中對用戶請求的sql語句進行分類。

1.1dml語句(update,insert,delelte)
1.2select語句
1.3dcl語句(數據控制語句)
1.4dtl語句(數據事務語句 )
1.5ddl語句(數據定義語句 )

2.我就以經常使用的dml 與select 語句爲列子並拿3個臺mysql服務器1臺主mysql 2臺從Mysql  與Linux系統爲例子

  對用戶請求數據庫的Sql指令進行進行統一分類,管理

主服務器IP: 192.168.0.1

從服務器IP: 192.168.0.2

從服務器IP: 192.168.0.2

3. 對用sql指令分析

  若是是dml直接鏈接  192.168.0.1這臺服務器

   若是是select語句 怎麼辦呢?

 1.咱們首先要肯定一個件事情要判斷兩臺從服務器的負載大小

咱們確定要把請求發到負載比較小的服務器上是吧

那麼我用socket用鏈接分別鏈接兩臺服務器,搞個相似遠程控制客服端,

並利用top指令,對兩臺服務器的CPU內存等一些負載數據進行獲取,

而後經過一些計算與比較最後把查詢請求鏈接其中一個從服務器上。

而後就over
迴歸正題

關於Mysql環形結構也就mysql服務器互相爲主從關係

雖然根據有關平臺統計,B/S架構的平臺70%以上都是都Select爲主

那麼若是我這個平臺,就是(增,刪,該)很是多,很是頻繁怎麼辦呢?

若是是主從配置,那麼我處理dml語句的就一臺服務器,這不夠嘛,這樣主從服務器的缺點就暴露出來了

那麼mysql的環形結構配置就能解決這樣相似問題 

原理也是利用bin日誌來作

如今3個mysql服務器

咱們隨便向其中任何一臺服務服務器執行dml語句,

那麼Bin日誌記錄下Dml語句,

直接到其餘服務器執行執行一遍相同的Dml語句操做

look圖


完結

相關文章
相關標籤/搜索