SpringBoot sharding 分库分表使用及配置
官方提供配置方式有哪些?
JAVA配置
YAML配置
SpringBoot配置
Spring命名空间配置
无论哪种方式最后底层都包装成JAVA代码方式配置,今天主要以SpringBoot-sharding自动状态开始玩!
了解分库分表策略场景
StandardShardingStrategy 标准分片
1.只支持单个字段进行分片分库,自定义必须实现PreciseShardingAlgorithm 处理 = 和in分片,RangeShardingAlgorithm非必需,遇到BETWEEN AND分片如果不配置,会全表路由
ComplexShardingStrategy 复合分片 支持多分片
1.需要实现ComplexKeysShardingAlgorithm接口,支持in、=、和BETWEEN AND场景
InlineShardingStrategy 表达式分片 只支持单片
1.Inline表达式分片策略。使用Groovy的Inline表达式
HintShardingStrategy Hint分片
1.需要实现HintShardingAlgorithm接口自定义逻辑分片
NoneShardingStrategy 不分片
配置数据源
1.数据源Mysql配置主从同步,所以配置时加了读写分离数据源配置。
spring:
application:
name: sharding-mysql
shardingsphere:
datasource: # 数据源配置
## 数据库逻辑名称声明
names: u0,u1,u0-slave,u1-slave
u0:
type: com.zaxxer.hikari.HikariDataSource
driver-class-name: com.mysql.jdbc.Driver # mysql8 com.mysql.cj.jdbc.Driver
jdbc-url: jdbc:mysql://0.0.0.0:3306/demo0?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
username: backup
password: backup
u0-slave:
type: com.zaxxer.hikari.HikariDataSource
driver-class-name: com.mysql.jdbc.Driver
jdbc-url: jdbc:mysql://0.0.0.0:3307/demo0?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
username: root
password: root
u1:
type: com.zaxxer.hikari.HikariDataSource
driver-class-name: com.mysql.jdbc.Driver
jdbc-url: jdbc:mysql://0.0.0.0:3306/demo1?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
username: backup
password: backup
u1-slave:
type: com.zaxxer.hikari.HikariDataSource
driver-class-name: com.mysql.jdbc.Driver # mysql8 com.mysql.cj.jdbc.Driver