application.yml
spring:
shardingsphere:
props:
sql-show: true
datasource:
names: db0,db1
db0:
type: com.zaxxer.hikari.HikariDataSource
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/order?characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai
username: root
password: 123456
db1:
type: com.zaxxer.hikari.HikariDataSource
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/booking?characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai
username: root
password: 123456
rules:
sharding:
key-generators:
alg-snowflake:
type: SNOWFLAKE
sharding-algorithms:
database-inline:
type: INLINE
props:
algorithm-expression: db$->{id % 2}
table-inline:
type: CLASS_BASED
props:
strategy: STANDARD
algorithmClassName: com.common.log.sharding.TableShardingAlgorithm
tables:
t_log:
# 主键:分布式序列
key-generate-strategy:
column: id
key-generator-name: alg-snowflake
# 节点
actual-data-nodes: db$->{0..1}.t_log_$->{2025..2026}
# 分库策略
database-strategy:
standard:
sharding-column: id
sharding-algorithm-name: database-inline
# 分表策略
table-strategy:
standard:
sharding-column: create_time
sharding-algorithm-name: table-inline
mybatis-plus:
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
application.properties
# 1)===============数据源配置
# 定义多个数据源
spring.shardingsphere.datasource.names = db0,db1
#数据源1
spring.shardingsphere.datasource.db0.type = com.zaxxer.hikari.HikariDataSource
spring.shardingsphere.datasource.db0.driver-class-name = com.mysql.jdbc.Driver
spring.shardingsphere.datasource.db0.url = jdbc:mysql://127.0.0.1:3306/order?characterEncoding=UTF-8&useSSL=false
spring.shardingsphere.datasource.db0.username = root
spring.shardingsphere.datasource.db0.password = 123456
#数据源2
spring.shardingsphere.datasource.db1.type = com.zaxxer.hikari.HikariDataSource
spring.shardingsphere.datasource.db1.driver-class-name = com.mysql.jdbc.Driver
spring.shardingsphere.datasource.db1.url = jdbc:mysql://127.0.0.1:3306/base?characterEncoding=UTF-8&useSSL=false
spring.shardingsphere.datasource.db1.username = root
spring.shardingsphere.datasource.db1.password = 123456
# 2)===============数据节点配置
# 分库分表规则 : 由数据源名 + 表名组成,以小数点分隔。多个表以逗号分隔,支持 inline 表达式。 `$->{begin..end}` 表示范围区间
spring.shardingsphere.rules.sharding.tables.t_log.actual-data-nodes=db$->{0..1}.t_log_$->{2025..2026}
#(3)===============分片策略
# 分库策略:使用 id 字段 路由到 db0/db1
spring.shardingsphere.rules.sharding.tables.t_log.database-strategy.standard.sharding-column=id
spring.shardingsphere.rules.sharding.tables.t_log.database-strategy.standard.sharding-algorithm-name=database-inline
# 分库算法:按 id % 2 分库
spring.shardingsphere.rules.sharding.sharding-algorithms.database-inline.type=INLINE
spring.shardingsphere.rules.sharding.sharding-algorithms.database-inline.props.algorithm-expression=db$->{id % 2}
#自定义
#spring.shardingsphere.rules.sharding.sharding-algorithms.database-inline.type=CLASS_BASED
#spring.shardingsphere.rules.sharding.sharding-algorithms.database-inline.props.strategy=STANDARD
#spring.shardingsphere.rules.sharding.sharding-algorithms.database-inline.props.algorithmClassName=com.common.log.sharding.DatabaseShardingAlgorithm
# 分表策略:使用 create_time 字段 路由到 t_log_2025/t_log_2026
spring.shardingsphere.rules.sharding.tables.t_log.table-strategy.standard.sharding-column=create_time
spring.shardingsphere.rules.sharding.tables.t_log.table-strategy.standard.sharding-algorithm-name=table-inline
# 分表算法:按年份取模分表 INLINE / CLASS_BASED
#spring.shardingsphere.rules.sharding.sharding-algorithms.table-inline.type=INLINE
#spring.shardingsphere.rules.sharding.sharding-algorithms.table-inline.props.algorithm-expression=t_log_$->{String.valueOf(create_time).substring(0,4)}
#自定义
spring.shardingsphere.rules.sharding.sharding-algorithms.table-inline.type=CLASS_BASED
spring.shardingsphere.rules.sharding.sharding-algorithms.table-inline.props.strategy=STANDARD
spring.shardingsphere.rules.sharding.sharding-algorithms.table-inline.props.algorithmClassName=com.common.log.sharding.TableShardingAlgorithm
#4.分布式序列配置
spring.shardingsphere.rules.sharding.tables.t_log.key-generate-strategy.column=id
spring.shardingsphere.rules.sharding.tables.t_log.key-generate-strategy.key-generator-name=alg-snowflake
spring.shardingsphere.rules.sharding.key-generators.alg-snowflake.type=SNOWFLAKE
spring.shardingsphere.props.sql-show=true