欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

mycat完成分库分表【水平】

程序员文章站 2022-05-08 19:41:55
...

1、前提

需要完成mycat的安装:https://mp.weixin.qq.com/s/7d05OmBLcK34DXjL2lm4uA

 

2、修改配置文件

查看文件内容:mycat\conf\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>     <user name="user">        <property name="password">user</property>        <property name="schemas">TESTDB</property>        <property name="readOnly">true</property>    </user>

即有两个账号,一个是root/123456,另外一个是user/user,对应的数据库实例就是TESTDB,而这个TESTDB就是真正的mysql实例映射而成的。

mycat完成分库分表【水平】

我将名字改为了cool,所以现在看到的是cool的名字

继续修改mycat\conf\schema.xml

<?xml version="1.0"?><!DOCTYPE mycat:schema SYSTEM "schema.dtd"><mycat:schema xmlns:mycat="http://io.mycat/">  <schema name="cool" checkSQLschema="true" sqlMaxLimit="100">    <table name="t1" primaryKey="id" dataNode="dn1,dn2" rule="rule1" />   </schema>    <dataNode name="dn1" dataHost="db1" database="db01" />    <dataNode name="dn2" dataHost="db1" database="db02" />  <dataHost name="db1" maxCon="1000" minCon="10" balance="0"        writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">    <heartbeat>select user()</heartbeat>    <writeHost host="127.16.10.51" url="172.16.10.51:3306" user="root"      password="root">      <readHost host="172.16.10.52" url="172.16.10.52:3306" user="root" password="root" />    </writeHost>  </dataHost>   </mycat:schema>

修改mycat\conf\rule.xml

  <tableRule name="rule1">    <rule>      <columns>id</columns>      <algorithm>mod-long</algorithm>    </rule>  </tableRule>    <function name="mod-long" class="io.mycat.route.function.PartitionByMod">    <!-- how many data nodes -->    <property name="count">2</property>  </function>

启动mycat​:

./mycat restart

查看启动状态​:

ps -ef |grep mycat

 

mycat完成分库分表【水平】

启动成功​!

然后开始在自己的主节点创建数据库和表​:

create database db01;use db01;create table t1(id int,name varchar(20));create database db02;use db02;create table t1(id int,name varchar(20));

然后登录mycat数据库​:

mycat完成分库分表【水平】

登录后看到表结构​:

mycat完成分库分表【水平】

然后我们通过mycat插入几条数据​:

insert into t1(id,name) values(1,'ali');insert into t1(id,name) values(2,'elvis');insert into t1(id,name) values(2,'JackRen');insert into t1(id,name) values(3,'nihao');

mycat中数据​:

mycat完成分库分表【水平】

然后我们登录主节点数据库​查看数据:

mycat完成分库分表【水平】

然后去从数据库查看​:

mycat完成分库分表【水平】

和主数据库是一样的,可见我们mycat实现的分库分表+读写分离已经实现!

​若有疑问可留言公众号