SpringBoot 整合 Sharding-Sphere + Druid 讀寫分離

Sharding-Sphere 文檔地址:https://shardingsphere.apache.org/document/current/cn/manual/sharding-jdbc/configuration/config-yaml/#%E8%AF%BB%E5%86%99%E5%88%86%E7%A6%BB-1

Maven依賴

        <!--shardingsphere start-->
        <!-- for spring boot -->
        <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>
        <!--shardingsphere end-->

讀寫分離properties(默認連接池)

# 配置真實數據源
sharding.jdbc.datasource.names=master1,slave0
# 主數據庫
sharding.jdbc.datasource.master1.type=com.zaxxer.hikari.HikariDataSource
sharding.jdbc.datasource.master1.hikari.driver-class-name=com.mysql.cj.jdbc.Driver
sharding.jdbc.datasource.master1.jdbc-url=jdbc:mysql://localhost:3306/master1?characterEncoding=utf-8&autoReconnect=true&serverTimezone=Asia/Shanghai
sharding.jdbc.datasource.master1.username=root
sharding.jdbc.datasource.master1.password=123456
# 從數據庫
sharding.jdbc.datasource.slave0.type=com.zaxxer.hikari.HikariDataSource
sharding.jdbc.datasource.slave0.hikari.driver-class-name=com.mysql.cj.jdbc.Driver
sharding.jdbc.datasource.slave0.jdbc-url=jdbc:mysql://localhost:3306/slave0?characterEncoding=utf-8&autoReconnect=true&serverTimezone=Asia/Shanghai
sharding.jdbc.datasource.slave0.username=root
sharding.jdbc.datasource.slave0.password=123456
# 配置讀寫分離
# 配置從庫選擇策略,提供輪詢與隨機,這裏選擇用輪詢
sharding.jdbc.config.masterslave.load-balance-algorithm-type=round_robin
sharding.jdbc.config.masterslave.name=ms
sharding.jdbc.config.masterslave.master-data-source-name=master1
sharding.jdbc.config.masterslave.slave-data-source-names=slave0
# 開啓SQL顯示,默認值: false,注意:僅配置讀寫分離時不會打印日誌
sharding.jdbc.config.props.sql.show=true
#設置爲true,表示後發現的bean會覆蓋之前相同名稱的bean。
spring.main.allow-bean-definition-overriding=true

 讀寫分離yaml(默認連接池)

sharding:
  jdbc:
    datasource:
      names: master1,salve0 #主從數據源
      master1:
        type: com.zaxxer.hikari.HikariDataSource
        hikari:
          driver-class-name: com.mysql.cj.jdbc.Driver #數據庫新的驅動,下面連接url一定要加區時
        jdbc-url: jdbc:mysql://localhost:3306/master1?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai
        username: root
        password: 123456
      salve0:
        type: com.zaxxer.hikari.HikariDataSource
        hikari:
          driver-class-name: com.mysql.cj.jdbc.Driver
        jdbc-url: jdbc:mysql://localhost:3306/salve0?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai
        username: root
        password: 123456
    config:  #讀寫分離配置
      masterslave:
        master-data-source-name: master1 #主數據庫配置
        slave-data-source-names: salve0 #從數據庫配置
        load-balance-algorithm-type: round_robin # 提供輪詢與隨機(random),這裏選擇用輪詢,
        name: ms
      props:
        sql:
          show: true #打印sql日誌
spring:
  main:
    allow-bean-definition-overriding: true #設置爲true,表示後發現的bean會覆蓋之前相同名稱的bean。
  application:
    name: sharing-sphere-server2

Druid連接池 讀寫分離properties

# ++++++++++++++++++ shardingsphere【START】 ++++++++++++++++++
 
# 配置數據源 分別是 主數據庫1個 從數據庫1個
sharding.jdbc.datasource.names=master0,master0slave0
 
# 主第一個數據庫
sharding.jdbc.datasource.master1.type=com.alibaba.druid.pool.DruidDataSource
sharding.jdbc.datasource.master1.driver-class-name=com.mysql.jdbc.Driver
sharding.jdbc.datasource.master1.url=jdbc:mysql://localhost:3306/master1?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowMultiQueries=true
sharding.jdbc.datasource.master0.username=root
sharding.jdbc.datasource.master0.password=XXXX
 
# 從第一個數據庫
sharding.jdbc.datasource.slave0.type=com.alibaba.druid.pool.DruidDataSource
sharding.jdbc.datasource.slave0.driver-class-name=com.mysql.jdbc.Driver
sharding.jdbc.datasource.slave0.url=jdbc:mysql://localhost:3306/slave0?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowMultiQueries=true
sharding.jdbc.datasource.master0slave0.username=root
sharding.jdbc.datasource.master0slave0.password=XXXX
 
 
# 讀寫分離配置
 
# 從庫的讀取規則爲round_robin(輪詢策略),除了輪詢策略,還有支持random(隨機策略)
sharding.jdbc.config.masterslave.load-balance-algorithm-type=round_robin
# 邏輯主從庫名和實際主從庫映射關係
# 主數據庫0
sharding.jdbc.config.sharding.master-slave-rules.sdkcms.master-data-source-name=master1
# 從數據庫0
sharding.jdbc.config.sharding.master-slave-rules.sdkcms.slave-data-source-names=slave0
 

 

Druid連接池 讀寫分離yaml

sharding:
  jdbc:
    datasource:
      names: master1,salve0 #主從數據源
      master1:
        type: com.alibaba.druid.pool.DruidDataSource
        driver-class-name: com.mysql.jdbc.Driver #數據庫新的驅動,下面連接url一定要加區時
        url: jdbc:mysql://localhost:3306/master1?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowMultiQueries=true
        username: root
        password: 123456
      salve0:
        type: com.alibaba.druid.pool.DruidDataSource
        driver-class-name: com.mysql.jdbc.Driver
        url: jdbc:mysql://localhost:3306/salve0?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowMultiQueries=true
        username: root
        password: 123456
    config:  #讀寫分離配置
      masterslave:
        master-data-source-name: master1 #主數據庫配置
        slave-data-source-names: salve0 #從數據庫配置(多個以逗號隔開)
        load-balance-algorithm-type: round_robin # 提供輪詢與隨機(random),這裏選擇用輪詢,
        name: ms
      props:
        sql:
          show: true #打印sql日誌

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章