数据按某个关键字段做分库分表,比如按userid,此处以userId为例,分为16个库(1-16),16个表(1-16)。
分库分表逻辑为:
分库:userId% 16+1(此处1-16所以要加1,如果不加1就是0-15)
分表:CRC32(userId) % 16 + 1
添加maven依赖
<!-- 依赖sharding 分库分表 -->
<dependency>
<groupId>org.apache.shardingsphere</groupId>
<artifactId>sharding-jdbc-spring-boot-starter</artifactId>
<version>4.1.1</version>
</dependency>
<dependency>
<groupId>org.apache.shardingsphere</groupId>
<artifactId>sharding-core-common</artifactId>
<version>4.1.1</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>dynamic-datasource-spring-boot-starter</artifactId>
<version>3.2.1</version>
</dependency>
配置多数据源
spring:
jackson:
time-zone: GMT+8
date-format: yyyy-MM-dd HH:mm:ss
mybatis-plus:
configuration:
# 这个配置会将执行的sql打印出来,在开发或测试的时候可以用
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
autoconfigure:
exclude:
- com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure
# 迁移需要链接的数据库
datasource:
dynamic:
primary: slave
datasource:
slave:
url: jdbc:mysql://xxx:63306/gac_order?useUnicode=true&characterEncoding=utf-8&useSSL=false&zeroDateTimeBehavior=convertToNull
username: xxx
password: xxx
type: com.alibaba.druid.pool.D

本文详细介绍了如何在SpringBoot项目中使用ApacheShardingSphere进行数据分库分表,包括分库规则(按userId取模16+1),分表规则(使用CRC32哈希),以及Maven依赖和多数据源配置。还提及了数据迁移和灰度发布的方法。
最低0.47元/天 解锁文章
4980





