注:
如果是升级之前的单库单表,要将之前的 数据库接池 druid-spring-boot-starter 注释掉,换成 druid,否则无法连接数据库。
原因:
- 因为数据连接池的starter(比如druid)可能会先加载并且其创建一个默认数据源,这将会使得sharding-jdbc创建数据源时发生冲突。
- 解决办法为,去掉数据连接池的starter即可,sharing-jdbc自己会创建数据连接池。
即:
<!-- Druid 连接池 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.2.16</version>
</dependency>
改成:
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.2.16</version>
</dependency>
另:数据库驱动类型如果不是用druid,也可以用zaxxer,这样引入的maven包是:
<dependency>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
<version>${hikaricp.version}</version>
</dependency>
读写分离yaml配置文章来源:https://www.toymoban.com/news/detail-617628.html
spring
#读写分离配置
shardingsphere:
#数据源配置,可配置多个data_source_name
datasource:
#names: ds1,ds2,ds3
names: master,slave1,slave2
#master ds1数据库连接信息
master:
#数据库驱动类型
#type: com.zaxxer.hikari.HikariDataSource
type: com.alibaba.druid.pool.DruidDataSource
#数据库驱动类名
driver-class-name: com.mysql.cj.jdbc.Driver
#数据库url连接
url: jdbc:mysql://47.99.110.140:3306/jpay?useUnicode=true
#数据库用户名
username: root
#数据库密码
password: root@2022
maxPoolSize: 100
minPoolSize: 5
#slave1 ds2数据库连接信息
slave1:
#数据库驱动类型
# type: com.zaxxer.hikari.HikariDataSource
type: com.alibaba.druid.pool.DruidDataSource
#数据库驱动类名
driver-class-name: com.mysql.cj.jdbc.Driver
#数据库url连接
url: jdbc:mysql://47.99.110.141:3306/jpay?useUnicode=true
#数据库用户名
username: root
#数据库密码
password: root@2022
maxPoolSize: 100
minPoolSize: 5
#slave2 ds3数据库连接信息
slave2:
#数据库驱动类型
# type: com.zaxxer.hikari.HikariDataSource
type: com.alibaba.druid.pool.DruidDataSource
#数据库驱动类名
driver-class-name: com.mysql.cj.jdbc.Driver
#数据库url连接
url: jdbc:mysql://47.99.110.142:3306/jpay?useUnicode=true
#数据库用户名
username: root
#数据库密码
password: root@2022
maxPoolSize: 100
minPoolSize: 5
mode:
# 内存模式,元数据保存在当前进程中
type: Memory
#属性配置
props:
sql:
#是否开启SQL显示,默认值: false
show: true
#读写分离规则
masterSlaveRule:
#读写分离数据源名称
name: ms
#主库数据源名称
master-data-source-name: master
#从库数据源名称列表
slave-data-source-names: slave1,slave2
#从库负载均衡算法类型,可选值:ROUND_ROBIN,RANDOM。若`loadBalanceAlgorithmClassName`存在则忽略该配置
loadBalanceAlgorithmType: ROUND_ROBIN
#读写分离负载算法的属性配置
# props:
sharding:
#配置默认数据源ds1 默认数据源,主要用于写
default-data-source-name: master
rules:
readwrite-splitting: # 读写分离规则
data-sources: # 数据源配置
random: # 这个名字随便起
type: Static # 静态类型
load-balancer-name: round_robin # 负载均衡算法名字
props:
write-data-source-name: master # 写数据源
read-data-source-names: slave1,slave2 # 读数据源
load-balancers: # 负载均衡配置
round_robin: # 跟上面负载均衡算法的名字对应
type: round_robin
注:把以上的ip , 用户名,账号,密码 改成你的即可。文章来源地址https://www.toymoban.com/news/detail-617628.html
到了这里,关于shardingsphere读写分离配置的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!