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);

 

 

posted @ 2021-05-04 19:20  08ruanjian306  阅读(236)  评论(0)    收藏  举报