sharding-jdbc读写分离与分表

# 数据库名称master1为写库,slave0为读库
sharding.jdbc.datasource.names=master1,slave0

#主从服务器分布在2台服务器上
# 主数据库配置
sharding.jdbc.datasource.master1.type=com.alibaba.druid.pool.DruidDataSource
sharding.jdbc.datasource.master1.driver-class-name=com.mysql.jdbc.Driver
sharding.jdbc.datasource.master1.url=jdbc:mysql://127.0.0.1:3306/anti_fake?useSSL=false&useUnicode=true&characterEncoding=utf-8&useLegacyDatetimeCode=false&serverTimezone=GMT%2b8
sharding.jdbc.datasource.master1.username=root
sharding.jdbc.datasource.master1.password=root
# 从数据库配置
sharding.jdbc.datasource.slave0.type=com.alibaba.druid.pool.DruidDataSource
sharding.jdbc.datasource.slave0.driver-class-name=com.mysql.jdbc.Driver
sharding.jdbc.datasource.slave0.url=jdbc:mysql://127.0.0.1:3306/anti_fake?useSSL=false&useUnicode=true&characterEncoding=utf-8&useLegacyDatetimeCode=false&serverTimezone=GMT%2b8
sharding.jdbc.datasource.slave0.username=root
sharding.jdbc.datasource.slave0.password=root
# 配置读写分离
# 配置从库选择策略,提供轮询与随机,这里选择用轮询
sharding.jdbc.config.masterslave.load-balance-algorithm-type=round_robin
# 主数据库0
sharding.jdbc.config.sharding.master-slave-rules.sdkcms.master-data-source-name=master1
# 从数据库0
sharding.jdbc.config.sharding.master-slave-rules.sdkcms.slave-data-source-names=slave0

sharding.jdbc.config.masterslave.name=ms


# 水平分表配置--自定义【START】

# 白名单用户
# 分表策略 其中t_product为逻辑表 分表主要取决于表字段(如:id)
#t_product,{0..3}表示表有0,1,2,3
sharding.jdbc.config.sharding.tables.t_product.actual-data-nodes=sdkcms.t_product_$->{0..3}
sharding.jdbc.config.sharding.tables.t_product.table-strategy.inline.sharding-column=id
# 分片算法表达式
sharding.jdbc.config.sharding.tables.t_product.table-strategy.inline.algorithm-expression=t_product_$->{id %4}
# 开启SQL显示,默认值: false,注意:仅配置读写分离时不会打印日志
sharding.jdbc.config.props.sql.show=true
spring.main.allow-bean-definition-overriding=true

 

 

注意点:

1.使用SnowflakeIdWorker来生产uuid需要注意有可能出现都是偶数的情况,遇到的情况是6开头值都是偶数,解决办法在最后拼接上一个随机整数,

2.分表使用的字段需要是整数类型,

你可能感兴趣的:(java,spring)