1. 程式人生 > >mysql資料庫讀寫分離的分類

mysql資料庫讀寫分離的分類

一、序言

    mysql大都是我們作為開發者的第一資料庫開發工具,並且本人也是能力有限,Oracle只是瞭解,不是太熟悉,有時間再寫關於Oracle的文章,本來想直接寫mycat實現督學分離,但是突然想到,還是給大家簡單介一下,關於讀寫分離的型別吧,先有個簡單的瞭解吧,下次再將mycat實現mysql的讀寫分離。謝謝關注

   官網要求實現讀寫分離不要超過9臺,但是實際上最好不要超過5臺

二、模型及分析

   1、一主一從

   

2、一主多從

   

       1、資料存在多個映象和資料冗餘,可以防止單一主機的丟失,保證資料的安全性

       2、使用mysql 代理可以實現讀寫分離,把一些讀操作分配給Slave從伺服器,減輕Master主伺服器壓力(我們可以使用中介軟體比如mycat等可以設定Slave為只讀,Master主要工作是寫操作,當我們要求實時性比較高時,因為從Master到Slave同步時還是有網路的原因的,所以如果要求實時性比較高,直接讓使用者請求到Master上)

       3、主機宕機的時候,可以切換到從伺服器上,資料的一致性可能存在問題(非同步複製的延遲)。如果主機突然宕機,可能一些資料沒有及時同步從伺服器上。MySQL5.6提供一種半同步的複製方式

       4、我們時刻實現再從伺服器上面做備份,可以不影響主伺服器的正常執行,mysqldump備份時會加表所

       5、再slave上建立不同的索引,可以實現不同的需求

3、主主同步

   

    這種主主同步,因為之前公司就是用這種方式做的,還是比較清楚的,其實就是兩個既可以讀又可以寫,兩者始終保持一致,我瞭解到的是這種方式可以減輕mysql的伺服器壓力,可以從這兩個方面

    1、我們的公司的專案是Nginx是實現負載均衡的,兩臺伺服器上面的專案執行是一樣的,只不過通過Nginx實現輪詢,每次訪問系統時,就來回切換,每臺伺服器上面有一臺mysql,兩個mysql實現了主主同步,每個mysql可以有一半的訪問

    2、也可以實現,當操作的資料id是奇數時就存在A主機上面,為偶數時就存在B主機上面,也可實現減輕資料庫壓力

4、級聯同步

     

      這種可以減輕Master的一部分壓力(mysql client會應slave的io請求生成一個log dump 執行緒將主庫中的binlog的日誌傳到slave的從伺服器的relaylog(中繼日誌),上面很清楚的看到Master將資料同步的壓力從提供多臺的同步變成了,提供給一臺),當Master掛掉了,也可以實現Slave頂上去,但是如果中間的Slave掛掉怎麼辦,這也是一個很大的缺點吧

  5、環形同步

              

 這種很明顯,如果其中一個掛了,那整個mysql系統都會掛掉,注意,上面只是三個,其實如果是四臺的話,中間的交叉線也會雙向的箭頭,也就是說任意兩個mysql都會實現主主同步,現在已經不使用這種了

三、總結

    自己能力有限,將會的都分享給大家了,我知道自己知識淺薄,好多東西都還沒講清楚,但是我會更加努力,等有能力了再將其補全,你看小編還是很努力的,小夥伴們也不要荒廢了,祝大家有個好工作