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日誌