分库分表,可以参考官方的文档:
1.引入maven依赖
<dependency>
<groupId>io.shardingjdbc</groupId>
<artifactId>sharding-jdbc-core</artifactId>
<version>${sharding.jdbc.version}</version>
</dependency>
<dependency>
<groupId>org.apache.shardingsphere</groupId>
<artifactId>sharding-jdbc-core</artifactId>
<version>${sharding.sphere.version}</version>
</dependency>
2.配置yml
dataSources:
# 数据源1
ds0: !!com.alibaba.druid.pool.DruidDataSource
driverClassName: com.mysql.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/sp1?useUnicode=true&characterEncoding=UTF-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC
username: root
password: root
#数据源2
ds1: !!com.alibaba.druid.pool.DruidDataSource
driverClassName: com.mysql.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/sp2?useUnicode=true&characterEncoding=UTF-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC
username: root
password: root
shardingRule:
tables:
# sys_user表的分库分表规则
sys_user:
# 可能存在ds0/ds1数据库中的sys_user1或者sys_user2或者sys_user3
actualDataNodes: ds${0..1}.sys_user${1..3}
tableStrategy:
inline:
# 按ID做为分表依据
shardingColumn: id
algorithmExpression: sys_user${id % 3}
databaseStrategy:
inline:
# 同时按ID作为分库依据
shardingColumn: id
algorithmExpression: ds${id % 2}
# 需要使用ID生成器生成的列,分布式数据库中,ID应统一分配
keyGeneratorColumnName: id
# 自定义的ID生成器,如不指定,会默认使用sharding提供的雪花算法生成器
keyGeneratorClass: com.susu.sharding.key.UserIdGenerator
# 绑定的表列表
bindingTables:
- sys_user
#默认一些配置,如默认使用数据源,默认分库规则,默认分表规则
defaultDataSourceName: ds0
defaultDatabaseStrategy:
inline:
shardingColumn: id
algorithmExpression: ds${id % 2}
defaultTableStrategy:
none:
# 显示实际执行SQL
props:
sql.show: true
可以下载demo查看
链接:https://pan.baidu.com/s/18Ly1gPoF2qXZkPdYnN9GUw
提取码:a1ws