注:
如果是升级之前的单库单表,要将之前的 数据库接池 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配置
spring#读写分离配置shardingsphere:#数据源配置,可配置多个data_source_namedatasource:#names: ds1,ds2,ds3names: master,slave1,slave2#master ds1数据库连接信息master:#数据库驱动类型#type: com.zaxxer.hikari.HikariDataSourcetype: 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@2022maxPoolSize: 100minPoolSize: 5#slave1 ds2数据库连接信息slave1:#数据库驱动类型# type: com.zaxxer.hikari.HikariDataSourcetype: 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@2022maxPoolSize: 100minPoolSize: 5#slave2 ds3数据库连接信息slave2:#数据库驱动类型
# type: com.zaxxer.hikari.HikariDataSourcetype: 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@2022maxPoolSize: 100minPoolSize: 5mode:# 内存模式,元数据保存在当前进程中type: Memory#属性配置props:sql:#是否开启SQL显示,默认值: falseshow: 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: masterrules: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 , 用户名,账号,密码 改成你的即可。