8、MySQL主從資料庫配置

項羽齊發表於2018-03-26

資料庫高可用實現

1.1 主從複製搭建

1.1.1 編輯主資料庫

 

搭建步驟:

1.為資料庫建立服務ID號標識資料庫

2.需要開啟二進位制日誌檔案

3.查詢資料的二進位制日誌狀態(檔名稱+檔案的位置)

4.從庫引入主庫的檔案進行配置

4.1為從庫指定主庫的位置

    1.IP

    2.3306

    3.使用者名稱和密碼

4.二進位制檔名稱和位置

     4.2 啟動主從模式

1.2 具體實現過程

1.2.1 開啟二進位制檔案

1.編輯mysql的配置檔案

 

 

2.配置id和檔名稱

 

 

3.重啟Mysql服務

 

 

4.檢測二進位制日誌檔案是否生效

cd /var/lib/mysql

 

 

1.2.2 查詢主庫的狀態

說明:通過查詢主庫的狀態獲取二進位制日誌檔案的名稱和資料位置

 

 

 

1.3 配置從資料庫

1.3.1 配置從庫的標號

說明:編輯從庫Id.

 

 

2.編輯日誌檔案

 

 

3.重啟資料庫

service mysql restart

 

 

4.檢測日誌檔案

cd /var/lib/mysql/

  

1.4 實現主從

1.4.1 實現主從掛載

1.實現掛載

CHANGE MASTER TO MASTER_HOST="192.168.126.137",
MASTER_PORT=3306,MASTER_USER="root",
MASTER_PASSWORD="root",
MASTER_LOG_FILE="mysql-bin.000001",
MASTER_LOG_POS=120
 

 

2.開啟主從服務

#開啟主從服務

START SLAVE

 

3.檢測主從的狀態

說明:如果出現2yes表示主從配置成功

#檢測主從狀態

SHOW SLAVE STATUS

 

4.主從測試

說明:修改主庫的資料,查詢從庫的資料是否修改

 

 

 

1.4.2 掛載錯誤

CHANGE MASTER TO MASTER_HOST="192.168.126.137",
MASTER_PORT=3306,MASTER_USER="root",
MASTER_PASSWORD="root",
MASTER_LOG_FILE="mysql-bin.000001",
MASTER_LOG_POS=120

#開啟主從服務
START SLAVE

#檢測主從狀態
SHOW SLAVE STATUS

#如果出現yes/no  no/yes
STOP SLAVE

#將主庫重啟 從庫重啟 依次執行上述語句

 

1.5 掛載錯誤集

1.5.1 關於二進位制日誌檔案多個問題

說明:當重啟主資料庫時,Mysql會自動的生成一個新的二進位制日誌檔案,並且名稱是累加的.這時如果實現主從掛載時,應該以show master status 為準

1.5.2 切記不要複製mysql虛擬機器

/var/lib/mysql/auto.cnf

 

 

 

1.5.3 關閉防火牆

如果不關閉防火牆,會出現一直在等待的狀態.

 

1.5.4 檢視IO異常資訊

 

1.5.5 回滾mysql

說明:linux回滾,回滾之後重新配置

 

 

實現資料庫的高可用

3.1 高可用的原則

3.1.1 分析

 

 

說明:上圖中已經實現了資料庫的主從複製,但是如果主資料當機後,這時整個服務將會停止!!!

升級:通過某些技術手段可以實現高可用.但是會遇到資料如何同步的問題???

說明:當主庫當機後,由從庫代替主庫完成更新操作,如果主資料庫成功啟動,這時會出現從資料庫和主資料庫中的內容不匹配的現象??如何處理???

3.2 雙機熱備模式

3.2.1 雙機熱備模式說明

說明:為了滿足資料庫高可用後出現資料不同步的問題,採用雙機熱備的形式解決該問題.

圖例:

 

 

說明:雙機熱別的形式,是實現資料庫高可用的前提條件.A當機後,通過mycat實現高可用自動切換到B.這時B持續為使用者提供服務,並且將”更新”的資訊寫入二進位制日誌檔案中,A資料庫啟動後會自動的同步資料,最終實現高可用!

3.2.2 雙機熱備的配置

之前:A----B從機

現在:B主機---A從機

 

  1. 查詢主庫的狀態

 

 

  1. 從庫掛載主庫
#掛載從機
CHANGE MASTER TO MASTER_HOST="192.168.126.141",
MASTER_PORT=3306,MASTER_USER="root",
MASTER_PASSWORD="root",
MASTER_LOG_FILE="mysql-bin.000001",
MASTER_LOG_POS=120

#啟動主從服務
START SLAVE

#檢測主從狀態
SHOW SLAVE STATUS

 

  1. 測試結果

 B資料庫新增資訊,檢視A資料庫中是否實現資料同步.如果實現資料同步,則搭建完成

 

 

3.3 Mycat介紹

3.3.1 Mycat介紹

 

 

3.4 MyCat部署

3.4.1 配置JDK

 

 

3.4.2 上傳檔案

1.上傳檔案

 


2.解壓Mycat檔案

\

3.修改配置檔案

 

 

3.4.3 Server.xml的配置

 

 

3.4.4 配置schema.xml

<!--定義節點名稱/節點主機/資料名稱-->
    <dataNode name="jtdb" dataHost="localhost1" database="jtdb" />
        <!--引數介紹-->
        <!--balance 0表示所有的讀操作都會發往writeHost主機 -->  
        <!--1表示所有的讀操作發往readHost和閒置的主節點中-->
        <!--writeType=0 所有的寫操作都發往第一個writeHost主機-->    
        <!--writeType=1 所有的寫操作隨機發往writeHost中-->
        <!--dbType 表示資料庫型別 mysql/oracle-->
        <!--dbDriver="native"  固定引數 不變-->
        <!--switchType=-1 表示不自動切換, 主機當機後不會自動切換從節點-->
        <!--switchType=1  表示會自動切換(預設值)如果第一個主節點當機後,Mycat會進行3次心跳檢測,如果3次都沒有響應,則會自動切換到第二個主節點-->
        <!--並且會更新/conf/dnindex.properties檔案的主節點資訊 localhost1=0 表示第一個節點.該檔案不要隨意修改否則會出現大問題-->
    <dataHost name="localhost1" maxCon="1000" minCon="10" balance="1"
              writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">
        <heartbeat>select 1</heartbeat>

        <!--配置第一臺主機主要進行寫庫操作,在預設的條件下Mycat主要操作第一臺主機在第一臺主機中已經實現了讀寫分離.因為預設寫操作會發往137的資料庫.讀的操作預設發往141.如果從節點比較忙,則主節點分擔部分壓力.
        -->
        <writeHost host="hostM1" url="192.168.126.137:3306" user="root" password="root">
            <!--讀資料庫-->
            <readHost host="hostS1" url="192.168.126.141:3306" user="root" password="root" />
        </writeHost>

            <!--定義第二臺主機 由於資料庫內部已經實現了雙機熱備.-->
            <!--Mycat實現高可用.當第一個主機137當機後.mycat會自動發出心跳檢測.檢測3次.-->
            <!--如果主機137沒有給Mycat響應則判斷主機死亡.則回啟東第二臺主機繼續為使用者提供服務.-->
            <!--如果137主機恢復之後則處於等待狀態.如果141當機則137再次持續為使用者提供服務.-->
            <!--前提:實現雙機熱備.-->
        
        <writeHost host="hostM2" url="192.168.126.141:3306" user="root" password="root">
            <readHost host="hostS1" url="192.168.126.137:3306" user="root" password="root" />
        </writeHost>
    </dataHost>

 

 

3.4.6 Mycat測試

說明:啟動Mycat

命令

./mycat stop

./mycat start

 

2.檢測Mycat啟動是否成功

logs日誌下檢測Mycat啟動是否成功

 

 

  1. Mycat對外報錯的埠是8066

 

3.4.7 Mycat測試

說明:將主資料庫關閉後,測試應用是否正常.再次開啟主資料庫後檢測資料是否實現資料同步.

 

相關文章