1. 程式人生 > >Mycat的安裝啟動和讀寫分離

Mycat的安裝啟動和讀寫分離

介紹:

  Mycat作為資料庫中介軟體,用來實現讀寫分離、資料分片(垂直拆分/水平拆分)、多資料來源整合等功能。

原理:

  Mycat通過攔截使用者發過來的SQL語句,並對其進行特定的分析,如分片分析、路由分析、讀寫分離分析、快取分析等,然後將此SQL發往後端對應的資料庫,並將返回的結果做適當的處理,最終返回給使用者。

安裝啟動:

  1、將Mycat的tar.gz格式的壓縮包拷貝到Linux系統下的opt目錄下

  2、使用Linux的編輯指令碼(如Xshell),進入到opt目錄下解壓壓縮檔案(tar -zxvf 檔名)

  3、將解壓後的檔案複製到/usr/local目錄下(cp -rv mycat /usr/local)

  4、啟動前先修改schema.xml

    <?xml version="1.0"?>
    <!DOCTYPE mycat:schema SYSTEM "schema.dtd">
    <mycat:schema xmlns:mycat="http://io.mycat/">
      <!--邏輯庫 name名稱, checkSQLschema sqlMaxLimit 末尾是否要加 limit xxx-->
      <schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1"> </schema>
        <!--邏輯庫 name名稱, dataHost 引用的哪個dataHost database:對應mysql的database-->
        <dataNode name="dn1" dataHost="host1" database="資料庫名" />
          <dataHost name="host1" maxCon="1000" minCon="10" balance="0"
            writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">
            <heartbeat>select user()</heartbeat>
            <!-- can have multi write hosts -->
            <writeHost host="hostM1" url="寫主機ip:3306" user="xxx" password="xxx">

              <readHost host="hostM2" url="讀主機ip:3306" user="xxx" password="xxx">
            </writeHost>
          </dataHost>
    </mycat:schema>

  5、驗證資料庫的訪問情況(讀寫主機都需要使用遠端訪問的形式進行驗證是否連通)

    mysql -u使用者名稱 -p密碼 -h對應ip地址 -P3306(寫主機)

    mysql -u使用者名稱 -p密碼 -h對應ip地址 -P3306(讀主機)

    注:

      如本機遠端訪問報錯,請建對應使用者(mysql -u使用者名稱 -p密碼)
      grant all privileges on *.* to [email protected]'缺少的host' identified by '密碼';

  6、先使用前臺啟動,確認是否能啟動成功。去mycat/bin 目錄下執行 ./ mycat console。

  7、(可選擇性更改,ctrl+c關閉之後修改,改後再啟動)為了區分mycat和mysql的使用者名稱可以進行配置檔案的修改server.xml

     <user name="mycat">
      <property name="password">123456</property>
      <property name="schemas">TESTDB</property>
     </user>

  8、登入mysql -umycat -p123456 -P8066 -h 主機ip

  9、後續一系列操作show databases、use TESTDB、show tables

  10、配置讀寫分離,修改schema.xml的balance(配置成3)

    負載均衡型別,目前的取值有4 種:

    (1)balance="0", 不開啟讀寫分離機制,所有讀操作都發送到當前可用的 writeHost 上。
    (2)balance="1",全部的 readHost 與 stand by writeHost 參與 select 語句的負載均衡,簡單的說,當雙主雙從模式(M1->S1,M2->S2,並且 M1 與 M2 互為主備),正常情況下,M2,S1,S2 都參與 select 語句的負載均衡。
    (3) balance="2",所有讀操作都隨機的在 writeHost、readhost 上分發。
    (4) balance="3",所有讀請求隨機的分發到 readhost 執行,writerHost 不負擔讀壓力