1.Mycat簡介
[1].Mycat是什麼
Mycat 是資料庫中介軟體
[2].why使用Mycat
①.Java與資料庫緊耦合
②.高訪問量高併發對資料庫的壓力
③.讀寫請求資料不一致
[3].資料庫中介軟體
[3].Mycat官網
[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/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 |