讨论|修改了sharding-count的值为string类型之后,还是没有生效

该讨论来自于微信群聊,搬运君会尽力为大家搬运精品讨论,也希望大家能在中文社区讨论,方便得到更好的回复。

群友 1

刚刚修改了sharding-count的值为string类型之后,还是没有生效。这是我们测试的配置,麻烦帮忙看看是不是哪里有问题?

rules:
# - !SHARDING
tables:
 # 虚拟表名称,最后登陆 proxy之后,sharding_db库下只有一张表 test(我这里只分了一个表,用于测试)
 test:
 # ds_${0..1} 分库规则,库索引从0到1,一共两个,前缀为:ds_, test,分成3张表,索引从0到2,前缀为:test_
 actualDataNodes: ds_${0..1}.test_${0..2}
 tableStrategy:
 standard:
 # 分片键
 shardingColumn: id
 shardingAlgorithmName: test_inline
 keyGenerateStrategy:
 column: id
 keyGeneratorName: snowflake
 goods_collection:
 actualDataNodes: ds_${0..1}.goods_collection_${0..15}
 databaseStrategy:
 node:
 tableStrategy:
 standard:
 shardingColumn: user_id
 shardingAlgorithmName: standard_hash
 keyGenerateStrategy:
 column: id
 keyGeneratorName: ptn_16_snowflake
 # 默认数据库分片规则
 defaultDatabaseStrategy:
 standard:
 # 依据 id 进行分片
 shardingColumn: id
 shardingAlgorithmName: database_inline
 defaultTableStrategy:
 none:
shardingAlgorithms:
 database_inline:
 type: INLINE
 props:
 # 数据库分片规则, id取模2,结果有 0 和 1,路由到 0 和 1这两个数据库
 algorithm-expression: ds_${id % 2}
 test_inline:
 type: INLINE
 props:
 # 数据库表分表规则:id 模 3,结果有:0、1、2, 得到 test_0、test_1、test_2这三张表
 algorithm-expression: test_${id % 3}
 standard_hash:
 type: HASH_MOD
 props:
 sharding-count: "16"
keyGenerators:
 snowflake:
 type: SNOWFLAKE
 props:
 worker-id: 123
 ptn_16_snowflake:
 type: SNOWFLAKE
 props:
 worker-id: 123
 max-vibration-offset: 15

其中 goods_collection 这个表的配置 使用了 HASH_MODE

我们又尝试了把分片数量调小的情况,

修改项:

actualDataNodes: ds_${0..1}.goods_collection_${0..3}

sharding-count: "4"。

结果是可以在ds_0库生成了4张分表,但是ds_1中没有生成。

群友 2

配置错了,应该配置到 autoTables 属性里面取

https://mp.weixin.qq.com/s/KsW6tXyjFQSPTp3cRXBeLw 可以参考下这篇文章,介绍了 autoTables 的配置

群友 1

我们参考这篇文章修改配置后,重新建表,还是只在ds_0里面创建了4张表,ds_1里面没有创建。

我们期望是能把16张表分散到ds_0和ds_1中。

目前比较疑惑,麻烦有空帮忙审一下是不是哪里的配置还有问题,谢谢。

rules:
!SHARDING
 autoTables:
 goods_collection:
 actualDataSources: ds_0, ds_1
 shardingStrategy:
 standard:
 shardingColumn: user_id
 shardingAlgorithmName: auto_mode
 keyGenerateStrategy:
 column: id
 keyGeneratorName: ptn_16_snowflake
shardingAlgorithms:
auto_mode:
 type: HASH_MOD
 props:
 sharding-count: 16
keyGenerators:
ptn_16_snowflake:
 type: SNOWFLAKE
 props:
 worker-id: 123
 max-vibration-offset: 15

群友 2

我刚使用你提供的配置,测试理由正常的

群友 1

这个日志可以在哪里查看呢?

群友 2

sql-show: true

开启下日志

群友 3

@ 群友2 和数据库版本有关系吗?我看您这边是5.7 ,我们这边是8.0

群友 2

这个应该没关系的,底层数据库不影响分片功能

群友 3

@ 群友2 sql-show: true加在这个位置没问题吧。我们重启报错

群友 2

配置到 server.yaml 里面

群友 3

@群友2 我们已经配置了上去了

但是没有创建日志

群友 2

执行了没有日志?

mode 有开启吗?

群友 3

ok 这个刚才是false,我现在开启一下

群友 2

是不是之前配置的是 false,然后这边 overwrite 也是 false,导致没法覆盖

overwrite: true 会用本地的配置文件,覆盖注册中心的配置

京ICP备2021015875号