Spring Boot 整合ShardingSphere 实现读写分离, 分库分表

1. 导入依赖

  1. <dependency>
  2. <groupId>org.apache.shardingsphere</groupId>
  3. <artifactId>shardingsphere-jdbc-core-spring-boot-starter</artifactId>
  4. <version>5.1.1</version>
  5. </dependency>

2. 编写 application.yml

网上视频教程

  1. # mybatis-plus 配置
  2. mybatis-plus:
  3. mapper-locations: classpath*: mapper/*.xml
  4. configuration:
  5. log-impl: org.apache.ibatis.logging.stdout.stdOutImpl # 打印 SQL 语句
  6. # Shardingsphere 配置, 通用配置, 必须有
  7. spring:
  8. shardingsphere:
  9. datasource:
  10. common:
  11. type: com.zaxxer.hikari.HikariDataSource
  12. driver-class-name: com.mysql.cj.jdbc.Driver
  13. username: root
  14. password: root
  15. # 一主, 一从
  16. names: master, slave0
  17. master:
  18. type: com.zaxxer.hikari.HikariDataSource
  19. driverClassName: com.mysql.cj.jdbc.Driver
  20. jdbcUrl: jdbc:mysql://localhost:3306/demo_ds_0?serverTimezone=UTC&useSSL=false&useUnicode=true&characterEncoding=UTF-8
  21. username: root
  22. password:
  23. slave0:
  24. type: com.zaxxer.hikari.HikariDataSource
  25. driverClassName: com.mysql.cj.jdbc.Driver
  26. jdbcUrl: jdbc:mysql://localhost:3306/demo_ds_1?serverTimezone=UTC&useSSL=false&useUnicode=true&characterEncoding=UTF-8
  27. username: root
  28. password:
  29. rules:
  30. replica-query:
  31. data-sources:
  32. ms: # ms 名字自定义的
  33. primary-data-source-name: master # 主数据源名称 , 这个必须和前面配置的 [names] 名字一致
  34. replica-data-source-names: slave0 # 从数据源名称 多个从库 , 分割
  35. load-balancer-name: round-robin # 负载均很算法
  36. load-balancers:
  37. round-robin:
  38. props:
  39. wordId: 1 # 负载均衡算法属性配置, 没撒意义, 但是不加不能够使用
  40. props:
  41. sql-show: true # 打印SQL

官网教程

  1. spring:
  2. shardingsphere:
  3. datasource:
  4. names: ds_0, ds_1
  5. ds_0:
  6. type: com.zaxxer.hikari.HikariDataSource
  7. driverClassName: com.mysql.cj.jdbc.Driver
  8. jdbcUrl: jdbc:mysql://localhost:3306/demo_ds_0?serverTimezone=UTC&useSSL=false&useUnicode=true&characterEncoding=UTF-8
  9. username: root
  10. password:
  11. ds_1:
  12. type: com.zaxxer.hikari.HikariDataSource
  13. driverClassName: com.mysql.cj.jdbc.Driver
  14. jdbcUrl: jdbc:mysql://localhost:3306/demo_ds_1?serverTimezone=UTC&useSSL=false&useUnicode=true&characterEncoding=UTF-8
  15. username: root
  16. password:
  17. rules:
  18. sharding:
  19. tables:

https://www.bilibili.com/video/BV1L5411g7KP/?spm_id_from=333.788.video.desc.click

分表

image.png