shardingsphere-jdbc5.5.2踩坑记录
最近正在研究拆表,随手从官网拿来了shardingsphere-jdbc进行使用。本以为按照官网文档手到擒来~毕竟10年的老开发了。没想到~xxxx
直接说结论
1.配置分表规则时,使用shardingsphere-jdbc 5.5.2的版本,除了配置基本的- !SHARDING 以外,还得额外配置!Single。否则sharding分表执行未配置分表规则的表sql时会报找不到表!!!
rules:
- !SINGLE
tables:
- "ds.*"
defaultDataSource: ds
- !SHARDING
tables:
business1:
actualDataNodes: ds.business1_$->{0..3000},ds.business1
tableStrategy:
complex:
shardingColumns: group_id
shardingAlgorithmName: group-sharding
请一定要注意这个
- !SINGLE 说多了都是泪。好了,当到这一步时,我已经兴高采烈的去执行了。心想着还行吧,小问题。毕竟网上都有答案。
2.严重坑,需要注意。
首先说状况,在rule的SHARDING配置里的配置的逻辑表名,如我上文的business1,居然说不存在!???
我再三确认我数据库中是存在business1的。网上找了一堆资料都没有结论,没有办法只能跟源码。这里我直接说答案,
注意:在actualDataNodes里的第一个节点,一定要在数据库中存在对应的表,不然会被过滤掉
由于我数据库中的表叫business1,其它的表是以后再加的,因为我这的业务不希望全部数据都分。可能只有一小部分数据按业务分
所以这里需要调整顺序,把business1这个放前面,如下
rules:
- !SINGLE
tables:
- "ds.*"
defaultDataSource: ds
- !SHARDING
tables:
business1:
actualDataNodes: ds.business1, ds.business1_$->{0..3000}
tableStrategy:
complex:
shardingColumns: group_id
shardingAlgorithmName: group-sharding
好了,启动~成功!!!
再见!!!