使用的是分库分表利器——sharding-sphere
本次配置的为一主两从的分库配置,所以需要先准备三个库。
pom.xml配置
引入sharding-sphere :
<!-- shardingsphere -->
<dependency>
<groupId>io.shardingsphere</groupId>
<artifactId>sharding-jdbc-spring-boot-starter</artifactId>
<version>3.1.0</version>
</dependency>
<!-- for spring namespace -->
<dependency>
<groupId>io.shardingsphere</groupId>
<artifactId>sharding-jdbc-spring-namespace</artifactId>
<version>3.1.0</version>
</dependency>
yml配置:
sharding:
jdbc:
datasource:
names: master1,slave1,slave2 # 配置真实数据源
master1: #主库配置
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://${static.ip}:3306/ctmdb?useUnicode=true&characterEncoding=UTF-8&useSSL=false&autoReconnect=true&failOverReadOnly=false
username: root
password: *****
slave1: #从数据库配置
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://${static.ip2}:3306/ctmdb?useUnicode=true&characterEncoding=UTF-8&useSSL=false&autoReconnect=true&failOverReadOnly=false
username: root
password: *****
slave2: #从数据库配置
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://${static.ip3}:3310/ctmdb?useUnicode=true&characterEncoding=UTF-8&useSSL=false&autoReconnect=true&failOverReadOnly=false
username: root
password: *****
config: # 配置读写分离
masterslave: # 配置从库选择策略,提供轮询与随机,这里选择用轮询
load-balance-algorithm-type: round_robin
name: ctm
master-data-source-name: master1
slave-data-source-names: slave1,slave2
props:
sql:
show: true # 开启SQL显示,默认值: false,注意:仅配置读写分离时不会打印日志
spring:
main:
allow-bean-definition-overriding: true
正确配置之后,默认主库执行增删改, 从库根据我们配置的轮询策略 轮询执行查询操作。