springboot配置mysql多数据源,实现读写分离

1、引入依赖

 <!-- 连接池 -->
 <dependency>
     <groupId>com.alibaba</groupId>
     <artifactId>druid-spring-boot-starter</artifactId>
     <version>1.1.10</version>
 </dependency>
 <dependency>
     <groupId>com.baomidou</groupId>
     <artifactId>dynamic-datasource-spring-boot-starter</artifactId>
     <version>3.2.0</version>
 </dependency>

2、修改yml配置

server:
  port: 8888
spring:
  datasource:
    dynamic:
      primary: master # 默认使用数据库
      datasource:
        master: ######################主数据库配置(写入)##############
          url: jdbc:mysql://ip:3307/test?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=UTC
          username: root
          password: root
          driver-class-name: com.mysql.jdbc.Driver
          type: com.alibaba.druid.pool.DruidDataSource
        slave: ######################从库(读取)##############
          url: jdbc:mysql://ip:3308/test?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=UTC
          username: root
          password: root
          driver-class-name: com.mysql.jdbc.Driver
          type: com.alibaba.druid.pool.DruidDataSource
      durid:
        initial-size: 1
        max-active: 20
        min-idle: 1
        max-wait: 60000
  autoconfigure: # 去除druid配置
    exclude:  com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure 

3、切换数据源

使用@DS("slave")切换成从机数据库
springboot配置mysql多数据源,实现读写分离_第1张图片
还可以写在mapper层
springboot配置mysql多数据源,实现读写分离_第2张图片

4、测试

访问不加注解的(默认master)
springboot配置mysql多数据源,实现读写分离_第3张图片
访问加@DS(“slave”)注解的
springboot配置mysql多数据源,实现读写分离_第4张图片

5、读写分离

mysql已完成主从复制,主从复制可看: https://blog.csdn.net/qq_48721706/article/details/122520672

查询表时加上@DS注解,使用从表
操作表就还是默认的

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