tar -xvf Mycat-server-1.6.7.1-release-20190627191042-linux.tar.gz
mv mycat /usr/local/mycat
cd /usr/local/mycat/bin
./mycat start
参数: ./mycat { console | start | stop | restart | status | dump }
第一种:查看端口号,默认端口:8066
netstat -tunlp|grep 8066
第二种:Mycat的命令
./mycat status
这个文件是Mycat最重要的配置文件,负责管理库、表、分片规则、DataNode、DataSource。
<schema name="MYCATDB" checkSQLschema="false" sqlMaxLimit="100">
<table name="tb_user" dataNode="dn1,dn2,dn3" rule="mod-long"/>
</schema>
<dataNode name="dn1" dataHost="localhost1" database="db1"/>
<dataNode name="dn2" dataHost="localhost1" database="db2"/>
<dataNode name="dn3" dataHost="localhost1" database="db3"/>
<dataHost name="localhost1" maxCon="1000" minCon="10" balance="0" writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">
<heartbeat>select user()</heartbeat>
<writeHost host="hostS1" url="localhost:3306" user="root" password="root"/>
</dataHost>
属性 | 释义 |
---|---|
checkSQLschema | 是否去掉表前面的数据库的名称,默认false |
sqlMaxLimit | 相当于SQL加上limit 语句 |
heartbeat | 用于和后端数据库进行心跳检查的语句 |
Server.xml保存了Mycat需要的所有的系统配置信息,代码映射为SystemConfig类。
<system>
<property name="charset">utf8</property>
<property name="defaultSqlParser">druidparser</property>
<property name="mutiNodeLimitType">1</property>
<property name="serverPort">8066</property>
<property name="managerPort">9066</property>
<property name="bindIp">0.0.0.0</property>
</system>
<user name="mycat">
<property name="password">mycat</property>
<property name="schemas">MYCATDB</property>
</user>
属性 | 释义 |
---|---|
charset | 字符集 |
processors | 处理线程数量,默认是cpu数量 |
processorBufferChunk | 每次读取buffer的数量,默认4096 |
sequnceHandlerType | 全局ID生成方式。(0:本地文件方式,1:数据库方式;2:时间戳序列方式;3:ZK生成ID;4:ZK递增ID生成) |
idleTimeout | 指定连接的空闲超时时间,默认 30 分钟 |
sqlExecuteTimeout | SQL 执行超时的时间,Mycat 会检查连接上最后一次执行 SQL 的时间,若超过这个时间则会直接关闭这连接。默认时间为 300 秒,单位秒 |
bindIp | Mycat 服务监听的 IP 地址 |
serverPort | Mycat 的使用端口 |
managerPort | Mycat 的管理端口 |
useSqlStat | 是否开启实时统计。1:开启;0:关闭 |
useGlobleTableCheck | 是否开启全局表一致性检测。1:开启;0:关闭 |
handleDistributedTransactions | 分布式事务开关。0:不过滤分布式事务;1:过滤分布式事务;2 :不过滤分布式事务,但是记录分布式事务日志 |
rule.xml 里面就定义了我们对表进行拆分所涉及到的规则定义。
<tableRule name="mod-long">
<rule>
<columns>id</columns>
<algorithm>mod-long</algorithm>
</rule>
</tableRule>
<function name="mod-long" class="io.mycat.route.function.PartitionByMod">
<property name="count">3</property>
</function>
属性 | 释义 |
---|---|
columns | 要拆分的列名称 |
algorithm | 使用function标签中name属性,连接表规则的路由算法 |
目前Mycat仍主要面对MySQL 5.5、5.6、 5.7版,对最新的MySql 8尚未完全支持,需要用户对MySQL 8和Mycat的配置进行一系列的修改。 1、Mycat的加密方式为mysql_native_password,MySQL 8的默认加密方式为caching_sha2_password。 解决方案:看了很多别人的办法,改驱动jar包、改my.cnf、改url连接,太麻烦了! 下面这个方法我觉得最方便!其实就是单独创建一个mycat用户做连接,设置其加密方式为mysql_native_password,并赋予权限。
CREATE USER 'mycat'@'%' IDENTIFIED BY 'mycat';
ALTER USER 'mycat'@'%' IDENTIFIED WITH mysql_native_password BY 'mycat';
GRANT ALL PRIVILEGES ON *.* TO 'mycat'@'%';
FLUSH PRIVILEGES;
2、Mycat使用图形化工具创建表报错 解决方案:使用SQL语句建表
3、使用命令连接Mycat报错 解决方案:增加加密方式参数,如:mysql -umycat -p -P8066 -h127.0.0.1 --default-auth=mysql_native_password。