資料庫熱備份
說明: 可以實作資料庫實時的備份,保證資料盡可能不丟失.
備份原理:

資料庫備份原理:
1.當資料庫主庫執行更新操作時,會將更新的內容寫入到二進制日志檔案中. 并且寫入二進制檔案的程序是一個異步的程序.
2.從庫會開啟IO執行緒去讀取主庫的二進制日志檔案,之后寫入中繼(臨時存盤)日志中.
3.從庫會開啟SQL執行緒去讀取中繼日志中的資訊.之后將資料同步到從庫中.
上述的操作是由從庫向主庫獲取資料, 所以從庫理論上可以配置無數個(一般2-3臺即可);
安裝從庫mysql
根據安裝主庫的順序安裝從庫,之后將主庫資訊備份到從庫
1.資料庫主從配置
1.1 資料庫掛載原理
1.1.1 檢查主庫的狀態

1.1.2 開啟資料庫二進制檔案
修改主庫核心組態檔 my.cnf
vim /etc/my.cnf

1.1.3 重啟mysql資料庫
說明:當修改好my.cnf檔案之后,需要重啟資料庫,檢查二進制日志檔案是否存在.

1.1.4 檢查主庫狀態

1.1.5 修改從庫二進制檔案

修改之后重啟mysql資料庫
命令:

檢查從庫狀態:

1.2 實作主從的掛載
1.2.1 掛載分析
說明: 從庫掛載主庫 主庫IP地址/主庫埠號/登錄用戶名/登錄的密碼/二進制日志檔案/讀取位置.
1.2.2 實作主從掛載
/*我是從庫資訊 130*/
SHOW MASTER STATUS;
/*實作主從的掛載*/
CHANGE MASTER TO MASTER_HOST="192.168.126.129",
MASTER_PORT=3306,
MASTER_USER="root",
MASTER_PASSWORD="root",
MASTER_LOG_FILE="mysql-bin.000001",
MASTER_LOG_POS=245
/*啟動主從服務*/
START SLAVE
/*檢查主從的狀態*/
SHOW SLAVE STATUS
/*如果報錯 則重新配置*/
STOP SLAVE
/*重新搭建主從將上述命令重新執行一遍*/
1.2.3 主從同步測驗
修改主庫中的資料,檢查從庫資料是否同步即可

1.3 Mycat介紹


mycat2005版本的壓縮包
鏈接:https://pan.baidu.com/s/1p-xY8vsgw4Dno-BIWpnaHA
提取碼:fvbe
1.4 實作資料庫讀寫分離機制
1.4.1 實作原理圖

1.4.2上傳 mycat服務

(下面配置視頻在4階段11)
1.4.3 編輯組態檔-server.xml
說明: 用戶與代理資料庫的鏈接通過server.xml檔案進行配置. IP/PORT/USER/PASSWORD
埠號配置:
<property name="serverPort">8066</property>
<!--用戶標簽-->
<user name="root">
<property name="password">root</property>
<!--與schema.xml中的配置相同 注意資料庫的大小寫-->
<property name="schemas">jtdb</property>
</user>
<user name="user">
<property name="password">user</property>
<property name="schemas">jtdb</property>
<property name="readOnly">true</property>
</user>
1.4.4 編輯schema組態檔
<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">
<!--name屬性是自定義的 dataNode表示資料庫的節點資訊 jtdb表示邏輯庫-->
<schema name="jtdb" checkSQLschema="false" sqlMaxLimit="100" dataNode="jtdb"/>
<!--定義節點名稱/節點主機/資料名稱-->
<dataNode name="jtdb" dataHost="localhost1" database="jtdb" />
<!--引數介紹 UTF-8 中文報錯-->
<!--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.129:3306" user="root" password="root">
<!--讀資料庫1-->
<readHost host="hostS1" url="192.168.126.130:3306" user="root" password="root" />
<!--讀資料庫2-->
<readHost host="hostS2" url="192.168.126.129:3306" user="root" password="root" />
</writeHost>
<!--定義第二臺主機 由于資料庫內部已經實作了雙機熱備.-->
<!--Mycat實作高可用.當第一個主機137宕機后.mycat會自動發出心跳檢測.檢測3次.-->
<!--如果主機137沒有給Mycat回應則判斷主機死亡.則回啟東第二臺主機繼續為用戶提供服務.-->
<!--如果137主機恢復之后則處于等待狀態.如果141宕機則137再次持續為用戶提供服務.-->
<!--前提:實作雙機熱備.-->
<!--<writeHost host="hostM2" url="192.168.126.130:3306" user="root" password="root">
<readHost host="hostS1" url="192.168.126.130:3306" user="root" password="root" />
<readHost host="hostS2" url="192.168.126.129:3306" user="root" password="root" />
</writeHost>-->
</dataHost>
</mycat:schema>
1.4.5 替換組態檔

1.5 啟動mycat服務
1).先啟動mycat服務器.之后檢查狀態資訊.
2).通程序式測驗是否正確

1.6 Mysql實作高可用
1.6.1 高可用說明(HA)
說明:根據規則 當服務器發生宕機現象時,可以自動的實作程度的故障的遷移稱之為高可用.
1.6.2資料庫雙主模式說明
說明:在作業中一般采用雙主模式來實作資料庫高可用. 本質上來講2臺資料庫都是主機.只是人為的進行了主從的劃分.

1.6.3 實作資料庫雙向系結.
上午配置: 由主庫129 將資料同步給從庫130
下午配置: 由從庫130 將資料同步給主庫129
1).檢查主庫的狀態

2).實作主從的搭建
/*實作主從的掛載 */
CHANGE MASTER TO MASTER_HOST="192.168.126.130",
MASTER_PORT=3306,
MASTER_USER="root",
MASTER_PASSWORD="root",
MASTER_LOG_FILE="mysql-bin.000001",
MASTER_LOG_POS=477
/*啟動主從服務 */
START SLAVE
SHOW SLAVE STATUS;

1.6.4 Mycat實作資料庫高可用配置
<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">
<!--name屬性是自定義的 dataNode表示資料庫的節點資訊 jtdb表示邏輯庫-->
<schema name="jtdb" checkSQLschema="false" sqlMaxLimit="100" dataNode="jtdb"/>
<!--定義節點名稱/節點主機/資料名稱-->
<dataNode name="jtdb" dataHost="localhost1" database="jtdb" />
<!--引數介紹 UTF-8 中文報錯-->
<!--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.129:3306" user="root" password="root">
<!--讀資料庫1-->
<readHost host="hostS1" url="192.168.126.130:3306" user="root" password="root" />
<!--讀資料庫2-->
<readHost host="hostS2" url="192.168.126.129:3306" user="root" password="root" />
</writeHost>
<!--定義第二臺主機 由于資料庫內部已經實作了雙機熱備.-->
<!--Mycat實作高可用.當第一個主機137宕機后.mycat會自動發出心跳檢測.檢測3次.-->
<!--如果主機137沒有給Mycat回應則判斷主機死亡.則回啟東第二臺主機繼續為用戶提供服務.-->
<!--如果137主機恢復之后則處于等待狀態.如果141宕機則137再次持續為用戶提供服務.-->
<!--前提:實作雙機熱備.-->
<writeHost host="hostM2" url="192.168.126.130:3306" user="root" password="root">
<readHost host="hostS1" url="192.168.126.130:3306" user="root" password="root" />
<readHost host="hostS2" url="192.168.126.129:3306" user="root" password="root" />
</writeHost>
</dataHost>
</mycat:schema>
1.6.5 配置Mycat
1).關閉mycat服務

2).上傳組態檔

3).重啟mycat配置

1.6.6 資料庫高可用測驗
1.啟動window中的服務器測驗mycat服務是否正確.
2.將資料庫主庫關閉,檢查服務是否正確.
3.將資料庫主庫啟動,檢查資料是否同步.
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/160039.html
標籤:其他
上一篇:MySQL——主從復制
下一篇:MySQL——主從復制與讀寫分離
