1、MyCat入門

HOsystem發表於2020-12-15

1.Mycat簡介

[1].Mycat是什麼

  Mycat 是資料庫中介軟體

[2].why使用Mycat

  ①.Java與資料庫緊耦合

  ②.高訪問量高併發對資料庫的壓力

  ③.讀寫請求資料不一致

[3].資料庫中介軟體

 

[3].Mycat官網

   http://www.mycat.org.cn/

[4].Mycat作用

(1).讀寫分離

 

(2).資料分片

  垂直拆分(分庫)、水平拆分(分表)、垂直+水平拆分(分庫分表)

 

(3).多資料來源整合

 

[5].Mycat原理

  Mycat 的原理中最重要的一個動詞是“攔截”,它攔截了使用者傳送過來的 SQL 語句,首先對SQL語句做了一些特定的分析:如分片分析、路由分析、讀寫分離分析、快取分析等,然後將此 SQL 發往後端的真實資料庫,並將返回的結果做適當的處理,最終再返回給使用者。

 

  這種方式把資料庫的分散式從程式碼中解耦出來,程式設計師察覺不出來後臺使用 Mycat 還是MySQL。

2.Mycat安裝啟動

[1].解壓後即可使用

  解壓縮檔案拷貝到 linux 下 /usr/local/

(1)將tar包放到Linux的/opt 

(2)解壓Mycat

[root@pluto opt]# cd /opt/

[root@pluto opt]# tar -zxvf Mycat-server-1.6.7.1-release-20190627191042-linux.tar.gz

(3)複製Mycat到/usr/local/

  因為mycat是目錄,所以我們需要-r遞迴引數

[root@pluto mycat]# cp -r /opt/mycat/ /usr/local/

(4)配置檔案

  schema.xml:定義邏輯庫,表、分片節點等內容

  rule.xml:定義分片規則

  server.xml:定義使用者以及系統相關變數,如埠等

1)server.xml

  修改使用者資訊,與MySQL區分

        <user name="mycat" defaultAccount="true">

                <property name="password">123456</property>

                <property name="schemas">TESTDB</property>

        </user>

2)schema.xml

  刪除<schema>標籤間的表資訊,<dataNode>標籤只留一個,<dataHost>標籤只留一個,<writeHost> <readHost>只留一對

[root@pluto 桌面]# vim /usr/local/mycat/conf/schema.xml

<?xml version="1.0"?>

<!DOCTYPE mycat:schema SYSTEM "schema.dtd">

<mycat:schema xmlns:mycat="http://io.mycat/">

 

        <schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1">

        </schema>

        <dataNode name="dn1" dataHost="host1" database="testdb" />

        <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="192.168.188.188:3306" user="root"

                                   password="123456">

                        <!-- can have multi read hosts -->

                        <readHost host="hostS2" url="192.168.188.189:3306" user="root" password="123456" />

                </writeHost>

        </dataHost>

</mycat:schema>

3).驗證資料庫

  Mycat 作為資料庫中介軟體要和資料庫部署在不同機器上,所以要驗證遠端訪問情況。

mysql -uroot -p123123 -h 192.168.188.188 -P 3306

mysql -uroot -p123123 -h 192.168.188.189 -P 3306

 

#如遠端訪問報錯,請建對應使用者

grant all privileges on *.* to root@'%' identified by '123456';

%代表全部使用者

[2].啟動mycat

[root@pluto bin]# pwd

/usr/local/mycat/bin

[root@pluto bin]# ./mycat console

 

啟動mycat遇到的問題

 

https://blog.csdn.net/MAMAIMAI/article/details/104664129

https://blog.csdn.net/weixin_44666068/article/details/105792473

https://www.cnblogs.com/orcl-2018/p/13153865.html

https://blog.csdn.net/chtjava/article/details/87078154

http://www.xwood.net/_site_domain_/_root/5870/5874/t_c279894.html

 

 

https://blog.csdn.net/chtjava/article/details/87078154

[3].登入mycat

(1).登入資料視窗

  此登入方式用於通過 Mycat 查詢資料,我們選擇這種方式訪問 Mycat

[root@host79 ~]# mysql -umycat -p123456 -h 192.168.188.188 -P 8066

 

(2).登入後臺管理視窗

[root@host79 ~]# mysql -umycat -p123456 -h 192.168.188.188 -P 9066