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使用教程。前文可在博客寻找。

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