MyCat+MySQL實(shí)現(xiàn)高可用讀寫分離(實(shí)測(cè)記錄)

一.測(cè)試環(huán)境

創(chuàng)建兩臺(tái)CentOS7虛機(jī),部署兩套MySQL數(shù)據(jù)庫配置主從同步,直接在主庫服務(wù)器安裝mycat進(jìn)行測(cè)試。

主庫:192.168.216.128 port:3306
從庫:192.168.216.129 port:3306

1.下載MyCat安裝文件上傳至主庫服務(wù)器M

Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz
百度網(wǎng)盤:https://pan.baidu.com/s/1Xeyno8pRomT__AvmzcvKnQ
提取碼:hmhc

  • 上傳成功后解壓至/home目錄下
    tar -zxvf Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz

2.配置環(huán)境變量

  • vim /etc/profile
export PATH=/home/mycat/bin:$PATH
  • source /etc/profile

3.修改MyCat配置文件

  • vim /home/mycat/conf/server.xml
      <!--讀寫權(quán)限管理員賬戶-->
        <user name="root">
                <property name="password">123456</property>
                <property name="schemas">test</property>
        </user>
     <!--只讀權(quán)限普通賬戶-->
        <user name="user">
                <property name="password">user123</property>
                <property name="schemas">test</property>
                <property name="readOnly">true</property>
        </user>
  • vim /home/mycat/conf/schems.xml
<mycat:schema xmlns:mycat="http://io.mycat/">
        <!-- 定義一個(gè)MyCat的模式,邏輯數(shù)據(jù)庫名稱TestDB -->
        <!-- “checkSQLschema”:描述的是當(dāng)前的連接是否需要檢測(cè)數(shù)據(jù)庫的模式 -->
        <!-- “sqlMaxLimit”:表示返回的最大的數(shù)據(jù)量的行數(shù) -->
        <!-- “dataNode="dn1"”:該操作使用的數(shù)據(jù)節(jié)點(diǎn)是dn1的邏輯名稱 -->
        <schema name="test" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1"/>
        <!-- 定義個(gè)數(shù)據(jù)的操作節(jié)點(diǎn),以后這個(gè)節(jié)點(diǎn)會(huì)進(jìn)行一些庫表分離使用 -->
        <!-- “dataHost="localhost1"”:定義數(shù)據(jù)節(jié)點(diǎn)的邏輯名稱 -->
        <!-- “database="test"”:定義數(shù)據(jù)節(jié)點(diǎn)要使用的數(shù)據(jù)庫名稱 -->
        <dataNode name="dn1" dataHost="localhost1" database="test" />
        <!-- 定義數(shù)據(jù)節(jié)點(diǎn),包括了各種邏輯項(xiàng)的配置 -->
        <dataHost name="test" maxCon="1000" minCon="10" balance="1" writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">
            <!-- 配置真實(shí)MySQL與MyCat的心跳 -->
            <heartbeat>select user()</heartbeat>
            <!-- 配置真實(shí)的MySQL的連接路徑 -->
            <writeHost host="hostM1" url="192.168.216.128:3306" user="root" password="123456">
                <readHost host="hostS1" url="192.168.216.129:3306" user="root" password="123456"/>
            </writeHost>
            <writeHost host="hostM2" url="192.168.216.129:3306" user="root" password="123456">
            </writeHost>
        </dataHost>
</mycat:schema>

4.啟動(dòng)MyCat : mycat start

二.關(guān)鍵配置項(xiàng)

mycat/conf目錄下 MyCat的核心配置文件schems.xml

屬性 狀態(tài) 說明
balance 表示負(fù)載模式
balance 0 不開啟讀寫分離機(jī)制,所有讀操作都發(fā)送到當(dāng)前可用的writeHost上。
balance 1 全部的readHost與stand by writeHost參與select語句的負(fù)載均衡。簡(jiǎn)單的說當(dāng)雙主雙從模式(M1->S1,M2->S2,并且M1與M2互為主備),正常情況下,M2,S1,S2都參與select語句的負(fù)載均衡。
balance 2 所有讀操作都隨機(jī)的在writeHost、readhost上分發(fā)。
balance 3 所有讀請(qǐng)求隨機(jī)的分發(fā)到wiriterHost對(duì)應(yīng)的readhost執(zhí)行,writerHost不負(fù)擔(dān)讀壓力
writeType 表示寫模式
writeType 0 所有的操作發(fā)送到配置的第一個(gè)writehost
writeType 1 隨機(jī)發(fā)送到配置的所有writehost
writeType 2 不執(zhí)行寫操作
switchType 指的是切換模式,目前的取值也有4種。
switchType -1 表示不自動(dòng)切換
switchType 1 默認(rèn)值,表示自動(dòng)切換
switchType 2 基于MySQL主從同步的狀態(tài)決定是否切換,心跳語句為show slave status
switchType 3 基于MySQL galary cluster的切換機(jī)制(適合集群)(1.4.1),心跳語句為show status like ‘wsrep%‘。

三.測(cè)試記錄

采用 banlance =1,writeType = 0 ,switchType = 1的配置模式

1.使主庫宕機(jī) service mysql stop;
結(jié)果:讀寫轉(zhuǎn)移至從庫,mycat正常連接。
2.恢復(fù)主庫運(yùn)行service mysql start
結(jié)果:mycat依舊采用從庫進(jìn)行讀寫未重新接入主庫

四.參考

配置屬性詳解-https://www.cnblogs.com/alan319/p/10556995.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容