mycat完成分库分表水平

Posted Java架构技术进阶

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mycat完成分库分表水平相关的知识,希望对你有一定的参考价值。

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实例映射而成的。

我将名字改为了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-分库分表

Mycat+分库分表

《SQL与数据库基础》21. 分库分表

mycat 垂直分库与水平分表使用详解

Mycat 读写分离+分库分表

Mycat和分库分表