myCat 分库分表

1. 下载

http://www.mycat.io/

2. Mycat解压、启动 (windows )

前置条件:mycat 解析在 D:\myapp\mycat

启动

bin\startup_nowrap.bat (先配置好,再双击启动)

开始配置了~`~

3. conf : 环境配置文件server.xml 

conf\server.xml  (DB账号及数据库配置)

mycat 启动端口 ,默认8066(没有配置项,内置默认的),我现在改成了6066

<property name="serverPort">6066</property>

修改root账号密码 (我现在的密码是12345678)

这个时候你可以启动了(不改配置也是可以启动)

启动和连接测试

连接:(前面我改了端口6066和密码12345678)

打开之后

有一个TESTDB的数据库

修改个数库名字 (标准叫法schema)

我不喜欢这个名字,我要把TESTDB 改成我喜欢的库名 mycatDB

配置文件:schema.xml

改这是不够的。账号的权限也要改,改账号权限在 server.xml ,就是改密码的地方

现在有两个账号root和user (内置了两个账号,加账号就是这里 ) ,启动不了,schemas不对,我只配置了mycatDB,所以现在只能改成这个。

重启 ( 关了、再双击)

打开连接,打开DB有两个表,明显我不喜欢

前置条件:本地有两个数据库( mydb1,mydb2) 两个数据库中都有 user和user_log两个表,每个表增加一个字段mod_id (int) 用于分区分表(后面会用到这个字段)

我的表user和user_log ( 修改配置文件要重启才能生效,后面我就不说了)

4 配置库表 conf\schema.xml

前置场景

我修改了mycat数据库的名字 (我改成了叫MYDB)我修改了表(我要用user和user_log),重启后生效。同时我也修改了分区的规则 我用的是my_mod-long_mod

配置rule.xml

要分表了,我要自定的一个规则

名称:my-mod-long

字段:mod_id (我前面说了要加的这个字段)

算法: mod-log (内置的,就是取模 )

我的想法说是根据,我对字段mod_id来取模,然后分配到不同的库

我现在只有2个库,所以我只需要有2个dn (默认是dn1、dn2、dn3) 这里删除了1个,这个时候你是启不来的。

原因是 rule.xml 这是配置的是3个 ( 默认就是这个3,对不上,报错了 ,如果只有2个,可以改成2)

( 这样的坑多,用规则的时候需要注意一下 )

一切OK,重启 ,测试

在mycatDB中打开表 ,在mod_id中输入不同的值,在对应的数据库中查看数据,即对数据自动进行了分区

同库分表

前置条件

创建表

user_access_log ( 主键 lid ,分区字段 mod_id 

复制3份,命名(加个数字)

user_access_log1

user_access_log2

user_access_log3

开始配置

schama.xml 配置表

<table name="user_access_log" primaryKey="lid" dataNode="dn1" autoIncrement="false" subTables="user_access_log$1-3" rule="my-mod-long-3" />

rule.xml 配置规则

my-mod-long-3 (3个表,所以取模为3)

<tableRule name="my-mod-long-3">
    <rule>
        <columns>mod_id</columns>
        <algorithm>mod-long-3</algorithm>
    </rule>
</tableRule>

mod-long-3 (算法) 主要是这个3

<function name="mod-long-3" class="io.mycat.route.function.PartitionByMod"> <!-- how many data nodes --> <property name="count">3</property> </function>

配置完成,重启

往mycatDB user_access_log插入数据,自动分配到其它分表 

完美~~

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值