该讨论来自于微信群聊,搬运君会尽力为大家搬运精品讨论,也希望大家能在中文社区讨论,方便得到更好的回复。
群友 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
会用本地的配置文件,覆盖注册中心的配置