亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Sharding-Jdbc如何配置主從讀寫分離模式

 更新時(shí)間:2025年03月06日 10:42:39   作者:帥氣的人123  
文章介紹了如何使用Sharding-JDBC實(shí)現(xiàn)MySQL的讀寫分離,通過配置主從數(shù)據(jù)源和讀寫分離策略,可以在項(xiàng)目中實(shí)現(xiàn)高效的數(shù)據(jù)庫讀寫操作,同時(shí),文章還提到解決MySQL連接異常的一個(gè)常見方法

Sharding-Jdbc 配置主從模式

我們項(xiàng)目的讀寫分離的主從模式項(xiàng)目中一般可以分為多種方式來實(shí)現(xiàn),可以手動(dòng)在代碼 Java 中配置多種數(shù)據(jù)源來實(shí)現(xiàn)讀寫分離的模式,我們也可以通過第三方的框架來實(shí)現(xiàn)讀寫分離例如我們的 Sharding-jdbc,也可以是我們的MyCat的來實(shí)現(xiàn)讀寫分離。

  1. Java 代碼的方式配置多種數(shù)據(jù)源
  2. Sharding-Jdbc
  3. MyCat

今天我們就來講解一下如何使用 Sharding-jdbc 來實(shí)現(xiàn)讀寫分離。

使用 YMAL 方式來實(shí)現(xiàn)配置。

配置 master 數(shù)據(jù)源和 slave 數(shù)據(jù)源。我們這次是的方案是一主多從的方式來實(shí)現(xiàn)讀寫分離,mysql 的主從搭建我們這次就不說了。

我們這次就是主要來實(shí)現(xiàn) sharding-jdbc 的方式來實(shí)現(xiàn)讀寫分離

Sharding-jdbc 讀寫分離配置

我們首先要引入 MAVEN 依賴

<dependency>
    <groupId>org.apache.shardingsphere</groupId>
    <artifactId>shardingsphere-jdbc-core-spring-boot-starter</artifactId>
    <version>5.1.1</version>
</dependency>

我們這次使用的版本是比較新的版本。

配置數(shù)據(jù)源以及數(shù)據(jù)源的名字

spring:
  shardingsphere:
  	# 內(nèi)存模式
    mode:
      type: Memory
    # 數(shù)據(jù)源配置
    datasource:
      names: master,slave
      # 主數(shù)據(jù)源
      master:
        type: com.zaxxer.hikari.HikariDataSource
        driver-class-name: com.jc.mysql.Driver
        jdbc-url: jdbc:mysql://localhost:3306/shardingjdbc?allowPublicKeyRetrieval=true
        username: root
        password: 123456
      # 從機(jī)數(shù)據(jù)源
      slave:
        type: com.zaxxer.hikari.HikariDataSource
        driver-class-name: com.jc.mysql.Driver
        jdbc-url: jdbc:mysql://localhost:3306/shardingjdbc?allowPublicKeyRetrieval=true
        username: root
        password: 123456

主要是配置數(shù)據(jù)源的鏈接地址和賬戶以及密碼。

讀寫分離的策略

spring:
  shardingsphere:
    rules:
      readwrite-splitting:
        data-sources:
          mydatasource:
          	# 類型是靜態(tài)還是動(dòng)態(tài)
            type: Static
            props:
              # 寫入數(shù)據(jù)
              write-data-source-name: master
              # 讀數(shù)據(jù)
              read-data-source-names: slave
            # 使用的邏輯策略
            load-balancer-name: round-alg
        # 負(fù)載均衡策略
        load-balancers:
        	# 輪詢
            round-alg:
              type: ROUND_ROBIN

這里的是配置寫數(shù)據(jù)和讀數(shù)據(jù)使用的數(shù)據(jù)源

完整配置

spring:
  shardingsphere:
    mode:
      type: Memory
    # 數(shù)據(jù)源配置
    datasource:
      names: master,slave
      # 主數(shù)據(jù)源
      master:
        type: com.zaxxer.hikari.HikariDataSource
        driver-class-name: com.jc.mysql.Driver
        jdbc-url: jdbc:mysql://localhost:3306/shardingjdbc?allowPublicKeyRetrieval=true
        username: root
        password: 123456
      # 從機(jī)數(shù)據(jù)源
      slave:
        type: com.zaxxer.hikari.HikariDataSource
        driver-class-name: com.jc.mysql.Driver
        jdbc-url: jdbc:mysql://localhost:3306/shardingjdbc?allowPublicKeyRetrieval=true
        username: root
        password: 123456
    rules:
      readwrite-splitting:
        data-sources:
          mydatasource:
          	# 類型是靜態(tài)還是動(dòng)態(tài)
            type: Static
            props:
              write-data-source-name: master
              read-data-source-names: slave
            # 使用的邏輯策略
            load-balancer-name: round-alg
        # 負(fù)載均衡策略
        load-balancers:
        	# 輪詢
            round-alg:
              type: ROUND_ROBIN
            # 隨機(jī)
            random-alg:
              type: RANDOM
            # 權(quán)重,我們?cè)谂渲脵?quán)重的時(shí)候必須配置各個(gè) slave 的權(quán)重值,值的數(shù)據(jù)類型為 double
            weight-alg:
              type: WEIGHT
              props:
                slave: 1.0

    props:
      show-sql: true

結(jié)束!

中間我在啟動(dòng)的時(shí)候遇到一個(gè) mysql連接異常

Public Key Retrieval is not allowed

這種情況可以配置參數(shù)的時(shí)候設(shè)置連接參數(shù) ?allowPublicKeyRetrieval=true

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論