mycat 安装和配置
1、安装
1.1、安装jdk8
下载:https://www.oracle.com/cn/java/technologies/javase/javase-jdk8-downloads.html
tar -zvxf jdk-8u20-linux-x64.tar.gz //解压 mv jdk1.8.0_20 /usr/local/java //移动
vim /etc/profile //配置环境变量
export JAVA_HOME=/usr/local/java export CLASSPATH=.:${JAVA_HOME}/jre/lib/rt.jar:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jar export PATH=$PATH:${JAVA_HOME}/bin
source /etc/profile //刷新环境配置使其生效
2、安装mycat(开箱即用)
下载:https://github.com/MyCATApache/Mycat-download
tar -zvxf Mycat-server-1.6.7.3-release-20190828135747-linux.tar.gz mv mycat /usr/local/mycat
cd /usr/local/mycat/bin

mycat 命令

Mycat start //启动mycat 后台进程方式启动 Mycat restart //重启 mycat Mycat stop //停止 mycat Mycat console //启动并控制台打印日志 Mycat dump //数据导出
连接命令
mysql -uroot -p -h127.0.0.1 -P8066 -DTESTDB --default_auth=mysql_native_password //mycat默认密码123456
(由于Mysql 8的缺省加密方式已经改为caching_sha2_password,而MyCat对此尚不支持。为此,需加上--default_auth=mysql_native_pasowrd选项)
2、Mycat配置文件
cd /usr/local/mycat/conf

一般只修改 server.xm 、schema.xml 、rule.xml 这三个文件
2.1、server.xml 定义登录 mycat 的用户和权限

2.2、schema.xml
schema.xml 作为 MyCat 中重要的配置文件之一,管理着 MyCat 的逻辑库、表、分片规则、DataNode 以 及 DataSource。
2.2.1、配置表的分片数,切分规则
<table name="order" primaryKey="ID" subTables="order$0-9" dataNode="dn1" rule="mod-long" />
2.2.2、配置表数据节点
<dataNode name="dn1" dataHost="localhost1" database="db1" />
2.2.3、配置表数据来源
<!--数据源-->
<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 -->
<readHost host="hostS2" url="192.168.1.200:3306" user="root" password="xxx" />
</writeHost>
<writeHost host="hostS1" url="localhost:3316" user="root"
password="123456" />
<!-- <writeHost host="hostM2" url="localhost:3316" user="root" password="123456"/> -->
</dataHost>
2.3、rule.xml 规则
rule.xml 里面就定义了我们对表进行拆分所涉及到的规则定义。可以灵活的对表使用不同的分片算法, 或者对表使用相同的算法但具体的参数不同。这个文件里面主要有 tableRule 和 function 这两个标签。在具体使 用过程中可以按照需求添加 tableRule 和 function。
<tableRule name="mod-long"> <rule> <columns>id</columns> <algorithm>mod-long</algorithm> </rule> </tableRule>
3、例子
3.1、一库多表

3.1.1、mycat 配置文件修改
修改server.xml文件
<user name="root" defaultAccount="true"> <property name="password">123456</property> <property name="schemas">TESTDB</property> <!-- 表级 DML 权限设置 --> <!-- <privileges check="false"> <schema name="TESTDB" dml="0110" > <table name="tb01" dml="0000"></table> <table name="tb02" dml="1111"></table> </schema> </privileges> --> </user>
修改schema.xml文件
<table name="users" primaryKey="id" subTables="user$0-2" dataNode="dn1" rule="mod-long" /> //配置表分片数和分片规则 //表名 users //表主键 id //分片表 user$0-2 【user0,user1,user2】 //节点名 dn1 //分片规则 mod-long
<dataNode name="dn1" dataHost="localhost1" database="test" /> //配置表节点 //节点名 dn1 //数据源名 location1 // 数据库名 test
<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="192.168.0.182:3306" user="root" password="yang0128"> <!-- can have multi read hosts --> <readHost host="hostS2" url="192.168.0.182:3306" user="root" password="yang0128" /> </writeHost> <!-- <writeHost host="hostM2" url="localhost:3316" user="root" password="123456"/> --> </dataHost>
修改rule.xml文件
<tableRule name="mod-long"> <rule> <columns>id</columns> //根据id取模规则 <algorithm>mod-long</algorithm> </rule> </tableRule>
<function name="mod-long" class="io.mycat.route.function.PartitionByMod"> <!-- how many data nodes --> <property name="count">3</property> //用3取模【分片表数一样】 </function>
3.1.1、mycat 启动
cd /usr/local/mycat/bin

./mycat console //启动并控制台打印日志,检测完用 ./mycat start 启动

3.1.2、连接mycat并操作测试
mysql -uroot -p -h192.168.0.182 -P8066 -DTESTDB --default_auth=mysql_native_password

use TESTDB; explain select * from users;

//插入4条数据 insert into users (id,username,password) value(1,1,123); insert into users (id,username,password) value(10,'yang',123456); insert into users (id,username,password) value(6,'abc',123456); insert into users (id,username,password) value(5,555,5555);



浙公网安备 33010602011771号