Mycat 安裝使用教程

Mycat配置和基本用法

首先,確保已安裝JDK和Mysql,JDK至少爲1.7及以上版本,Mysql版本最好爲5.7,我在這個問題上吃了虧,後續會說明,安裝教程網絡很多,可自行選擇安裝。然後下載Mycat的資源文件,Mycat 下載地址1或者Mycat 下載地址2。根據需要進行下載,我下載的爲1.6版本,選擇windows下的運行程序:Mycat-server-1.5.1-RELEASE-20161130213509-win.tar.gz。將壓縮包解壓至無中文字符的路徑下。我的解壓縮目錄爲E:\MYCAT\mycat。

在這裏插入圖片描述

配置環境變量

在這裏插入圖片描述
在這裏插入圖片描述

據上述圖片添加並保存。

mycat/conf下的配置文件

首先要將wrapper.conf的wrapper.java.command修改爲自己的jdk的路徑。

在這裏插入圖片描述

忘記這一步可能會出現錯誤。

另外還有幾個最重要的配置文件:server.xml、schema.xml、rule.xml。

  1. 修改server.xml

user標籤表示一個用戶,mycat作爲數據庫中間件,可通過更改name和passowrd去連接mycat,schemas是邏輯庫。可以用Navicat創建Mysql連接,用戶下可看到TESTDB數據庫。我將name和password都改爲了test。

    <user name="test">
        <property name="password">test</property>
        <property name="schemas">TESTDB</property>
    </user>
  1. 修改schema.xml

下面是分庫的表和數據庫的名字,這些對應着mysql實際存在的表和數據庫,mycat相當於一個虛擬的mysql.把這些分佈在db1.db2,db3的表合起來了.

在這裏插入圖片描述
在這裏插入圖片描述
在scheme中的配置mysql數據庫的地址,按自己的寫就好了。我這裏是本地的數據庫.用戶名和密碼寫mysql的。即url="localhost:3306"的位置user和password更改爲自己的mysql數據庫的用戶名和密碼即可。

    <dataHost name="localhost1" 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="localhost:3306" user="root"
                   password="123456">
        <!-- can have multi read hosts -->
        </writeHost>
        <!-- <writeHost host="hostM2" url="localhost:3316" user="root" password="123456"/> -->
    </dataHost>

###測試

在本地數據庫建3個數據庫,連接是schema.xml 中的標籤中的連接。

在這裏插入圖片描述

啓動mycat。可以選擇運行bin下的startup_nowrap.bat,也可以在cmd下運行mycat.bat。我使用的方式是運行mycat.bat。

將mycat加到系統服務:

  • 安裝:mycat.bat install

  • 啓動:mycat.bat start

  • 停止:mycat.bat stop

  • 狀態: mycat.bat status

先進行安裝:
在這裏插入圖片描述

然後啓動:
在這裏插入圖片描述

連接mycat,在navicat中新建一個mysql連接,mycat的默認端口是8066。用戶名和密碼與在server.xml中user標籤下的配置一致。

在這裏插入圖片描述

連接成功打開連接,可看到TESTDB下的customer表中存儲了db1和db2的數據。這是由schema.xml文件中的數據所表示的。

<table name="customer" primaryKey="ID" dataNode="dn1,dn2" rule="sharding-by-intfile">

在這裏插入圖片描述

可能出現的錯誤

我把大部分可能出現的坑都給踩了,出現錯誤和解決方案如下。

Mycat啓動問題1

在啓動MyCat時出現問題,如下圖所示:

在這裏插入圖片描述

查看mycat/logs/wrapper.log,根據日誌可知錯誤爲“Unable to execute Java command. 系統找不到指定的文件。 (0x2)”。

在這裏插入圖片描述

根據網上搜索解決方案可知應將mycat/conf/下的wrapper.conf文件中的wrapper.java.command=java更改爲本機java所在位置,因此,更改結果如下所示:

在這裏插入圖片描述

更改後能夠成功啓動.

Mycat啓動問題2

更改server.xml和schema.xml配置後,重新啓動start.bat,又出現了之前出現的failed to start錯誤。查看logs,發現此時mycat.log 爲空,wrapper.log可找到錯誤原因。

在這裏插入圖片描述

再次上網搜索解決方案,可找到應該把user都不配置defaultAccount,纔不報錯。因此我將原來的user中的defaultAccount刪除。

在這裏插入圖片描述

重新運行後,能夠成功啓動。

navicat開啓連接錯誤1

如果連接出現錯誤:

在這裏插入圖片描述

根據查詢解決方案可知,應該在conf下的index_to_charset.properties文件末尾加上“255=utf8mb4”即可。

navicat開啓連接錯誤2

如果出現錯誤:

ERROR 3009 (HY000): java.lang.IllegalArgumentException: Invalid DataSource:0

首先先檢查自己的schema.xml是否有錯誤,mysql是否開啓了遠程連接權限,防火牆是否設置正確,用戶名和密碼是否正確。在排查完錯誤之後還是無法正常連接。網絡上的一些方法也無法解決問題。偶然看到一篇文章說道自己在8.0版本的Mysql上出錯,但是換成5.7版本的Mysql正常運行。因此我卸載現有的Mysql換成5.7版本。參考教程1 參考教程2

navicat開啓連接錯誤3

如果出現錯誤:

在這裏插入圖片描述

上網查詢資料應該修改schema.xml的 checkSQLschema=“false”,改爲true即可。

是因爲當該值爲true時,例如我們執行語句select * from TESTDB.company 。mycat會把語句修改爲 select * from company 去掉TESTDB。

推薦一個博主的Mycat使用教程。前文可在博客尋找。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章