mysql mycat单库分表_使用mycat实现单库分表和多库分表

前置条件:

分库分表的测试Mycat版本换成1.6.5-release;

mycat只支持的mysql的版本是5.5和5.6,因此高版本很多不支持;

测试过程中遇到的问题:

1. 使用单库分表测试,比如把t_user表分为10张表,在配置文件schema.xml中,已经配置了:

也配置好了sequence_db_conf.properties和rule.xml文件,依然启动失败,报dataNode个数与规则分片个数不一致问题:

table [ T_BET_ORDER ] rule function [ mod-long ] partition size : 10 > table datanode size : 1, please make sure table datanode size = function partition size

经过检查,是因为使用的是mycat-1.6-release版本,换成1.6.5-release版本就可以了。

2. 程序可以启动成功,但是插入数据时,报告,no table sequence NollPointException异常错误:

是因为配置了主键生成方式但是没有在sequence_db_conf.properties文件中标注大写的表明=dataNode名称。

3. 启动程序链接mycat但是出现表不存在的问题,导致应用程序无法启动:

是因为没有在sequence_db_conf.properties文件中标注大写的表明=dataNode名称或者没有在配置文件schema.xml中,

配置dataNode="dn1"导致无法扫描到表。

4. 启动mycat失败,查看日志出现的一些问题:

可能是注解不完整,或者某些标签缺少必要的属性导致启动失败。

5. 在分库分表当中,单库只需根据id均衡分表就可以了,但是需要提前创建好表使用subTables="t_user$1-10"标注好,配置好rule.xml文件,在多库分表中可能需要分库进行创建,这时候只需要创建好数据库,使用多个dataNode节点就可以了,比如根据时间分表。

这种根据时间分库分表的前提是使用mycat-1.6.5-release进行切分,而mycat-1.6-release不支持,即使通过日志提示配置多个dataNode和分片数量保持一致,只想同一个database,在插入数据时,还会出问题,报bad insert sql sharding column:ID not provided这个错误,所以如果需要使用id均分的话,不能使用mycat-1.6-release版本。

6. mycat1.6-release可以做根据时间分库分表,例如t_bet_order表根据指定字段分3个表,因为这种分表必须分库所有分为3个库:

具体配置:

schema.xml

rule.xml

BET_TIME

sharding-by-date

yyyy-MM-dd

2018-07-01

10

注:不要在schema 标签中添加 primaryKey="ID" autoIncrement="true" 否则会插入很慢

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值