1 資料庫高可用實現
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.檢測主從的狀態
說明:如果出現2個yes表示主從配置成功
#檢測主從狀態
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 實現資料庫的高可用
3.1 高可用的原則
3.1.1 分析
說明:上圖中已經實現了資料庫的主從複製,但是如果主資料當機後,這時整個服務將會停止!!!
升級:通過某些技術手段可以實現高可用.但是會遇到資料如何同步的問題???
說明:當主庫當機後,由從庫代替主庫完成更新操作,如果主資料庫成功啟動,這時會出現從資料庫和主資料庫中的內容不匹配的現象??如何處理???
3.2 雙機熱備模式
3.2.1 雙機熱備模式說明
說明:為了滿足資料庫高可用後出現資料不同步的問題,採用雙機熱備的形式解決該問題.
圖例:
說明:雙機熱別的形式,是實現資料庫高可用的前提條件.當A當機後,通過mycat實現高可用自動切換到B.這時B持續為使用者提供服務,並且將”更新”的資訊寫入二進位制日誌檔案中,當A資料庫啟動後會自動的同步資料,最終實現高可用!
3.2.2 雙機熱備的配置
之前:A主----B從機
現在:B主機---A從機
- 查詢主庫的狀態
- 從庫掛載主庫
#掛載從機
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
- 測試結果
向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啟動是否成功
- Mycat對外報錯的埠是8066
3.4.7 Mycat測試
說明:將主資料庫關閉後,測試應用是否正常.再次開啟主資料庫後檢測資料是否實現資料同步.