06-mycat完成分库分表【水平】

前两篇文章,我们了解了mysql的主从同步以及mycat对读写分离的管理。本文将阐述使用mycat完成分库分表。分表一般会导致分库,分表的目的就是把表一分多,提升查询效率。分表有两种方式,一是水平分表【按行】,一是垂直分表【按列】。我们先看一下水平分表。

1、前提约束

2、修改配置文件

  • 修改C:\Program Files\mycat\conf\schema.xml
<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">
    <schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100">
        <table name="t1" primaryKey="id"  dataNode="dn1,dn2" rule="role1"/> 
    </schema>
    <dataNode name="dn1" dataHost="localhost1" database="db01" />
    <dataNode name="dn2" dataHost="localhost1" database="db02" />
    <dataHost name="localhost1" maxCon="1000" minCon="10" balance="1"
              writeType="0" dbType="mysql" dbDriver="native" switchType="0"  slaveThreshold="100">
        <heartbeat>select user()</heartbeat>
        <writeHost host="192.168.100.134" url="192.168.100.134:3306" user="root"
                   password="zhangli">
            <readHost host="192.168.100.136" url="192.168.100.136:3306" user="root" password="zhangli" />
        </writeHost>
    </dataHost>
</mycat:schema>

注意:其中的role1就是rule.xml定义的如下内容,即对2取余

    <tableRule name="role1"> 
        <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。

3、登录主机134,创建db02实例、创建t1表

mysql -uroot -pzhangli -h 192.168.100.134
create database db02;
use db02;
create table t1(id int,name varchar(20));

4、登录mycat、删除之前数据、加入新数据

mysql -uroot -p123456 -P8066 
use TESTDB;
delete from t1;
insert into t1(id,name) values(1,'ali');
insert into t1(id,name) values(2,'zhangli');

5、登录从机136,查看db01、db02中的t1表数据

mysql -uroot -pzhangli -h 192.168.100.136
use db01;
select * from t1;
use db02;
select * from t1;

我们看到两条数据分别位于db01和db02,这就是id对2取模存储的结果。
至此,我们完成了mycat的水平分库分表。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值