SpringBoot整合ShardingSphere,實現分庫分表讀寫分離

閱讀必知

本文只介紹SpringBoot如何整合ShardingSphere的主要配置及實現

版本介紹

SpringBoot : 2.3.0.RELEASE
MyBatis-Plus : 3.3.0
ShardingSphere : 4.0.0
MySql : 5.7

pom主要依賴

    <!--sharding-jdbc-->
    <dependency>
        <groupId>org.apache.shardingsphere</groupId>
        <artifactId>sharding-jdbc-spring-boot-starter</artifactId>
        <version>4.0.0</version>
    </dependency>
    <!--Mybatis-plus-->
    <dependency>
        <groupId>com.baomidou</groupId>
        <artifactId>mybatis-plus-boot-starter</artifactId>
        <version>3.3.0</version>
    </dependency>
    <!--德魯伊-->
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>druid</artifactId>
        <version>1.0.31</version>
    </dependency>
    <!-- mysql的依賴 -->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.47</version>
    </dependency>

配置文件(ShardingSphere)

server:
  port:8002
#應用名稱
application:
  name:shardingSphere-demo
spring:
#日期格式化
jackson:
  date-format:yyyy-MM-dd HH:mm:ss
  time-zone:GMT+8
#Sharding-jdbc
shardingsphere:
  datasource:
    #指定數據源
    names: m0,m1
    m0:
      type: com.alibaba.druid.pool.DruidDataSource
      driver-class-name: com.mysql.jdbc.Driver
      url: jdbc:mysql://192.168.101.1:3306/master?useUnicode=true&characterEncoding=utf-8&useSSL=false
      username: root
      password:
    m1:
      type: com.alibaba.druid.pool.DruidDataSource
      driver-class-name: com.mysql.jdbc.Driver
      url: jdbc:mysql://192.168.101.2:3306/slave?useUnicode=true&characterEncoding=utf-8&useSSL=false
      username: root
      password:
  sharding:
    tables:
      #配置需要水平分表的表
      user:
        #指定數據庫表的數據分布情況,配置數據節點
        ##actual-data-nodes: m$->{1..2}.t_user_$->{0..1} user_0 user_1
        actual-data-nodes: ds0.user_$->{0..1}
        key-generator:
          #配置主鍵
          column: id
          #主鍵采用雪花算法
          type: SNOWFLAKE
        #配置分庫策略
        database-strategy:
          inline:
            sharding-column: id
            #此處配置下面主從分離起的key名稱
            algorithm-expression: ds0
        #配置表的分片策略,包括分片鍵和分片算法
        table-strategy:
          inline:
            #配置分表建
            sharding-column: id
            #此處配置水平分表策略,user_$->{id % 2}相當于user_0,user_1
            algorithm-expression: user_$->{id % 2}
    #配置主從數據庫 一主多從  map
    master-slave-rules:
      ds0:
        #配置主庫
        master-data-source-name:m0
        #配置從庫
        slave-data-source-names:m1
  #顯示Sql
  props:
    sql:
      show:true
  
,
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容