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
<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
启动成功!
然后开始在自己的主节点创建数据库和表:
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插入几条数据:
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完成分库分表水平的主要内容,如果未能解决你的问题,请参考以下文章