欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

ShardingSphere之讀寫分離方式

 更新時(shí)間:2025年05月28日 12:21:44   作者:菜逼の世界  
這篇文章主要介紹了ShardingSphere之讀寫分離方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

ShardingSphere-讀寫分離

讀寫分離

  • 依賴于 MySQL的主從集群 搭建手冊(cè)
  • 查詢 走的是從庫(kù)(Slave)
  • 新增、更新、刪除走的是主庫(kù)(Master)

MySQL主從集群

節(jié)點(diǎn)角色主機(jī)地址端口用戶名密碼庫(kù)名
master192.168.40.1283306rootRoot@123456db_demo
slave192.168.40.1293306rootRoot@123456db_demo

創(chuàng)建 user 表

主節(jié)點(diǎn)執(zhí)行見(jiàn)表語(yǔ)句

CREATE TABLE `user`  (
  `id` bigint NOT NULL,
	`client_id` bigint NOT NULL,
  `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
  `age` int NULL DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;

從節(jié)點(diǎn)刷新查看

項(xiàng)目代碼

復(fù)用之前的 user 表操作代碼即可

讀寫分離配置

application.yml

# 主從配置  讀寫分離
server:
  port: 8081

spring:
  main:
    # 一個(gè)實(shí)體類對(duì)應(yīng)兩張表,覆蓋
    allow-bean-definition-overriding: true
  shardingsphere:
    datasource:
      names: m1,s1 # 主庫(kù) 從庫(kù)
      m1:
        type: com.alibaba.druid.pool.DruidDataSource
        driver-class-name: com.mysql.cj.jdbc.Driver
        url: jdbc:mysql://192.168.40.128:3306/db_demo?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=UTC
        username: root
        password: Root@123456
      s1:
        type: com.alibaba.druid.pool.DruidDataSource
        driver-class-name: com.mysql.cj.jdbc.Driver
        url: jdbc:mysql://192.168.40.129:3306/db_demo?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=UTC
        username: root
        password: Root@123456
    sharding:
      tables:
        user:
          # 分表策略  固定分配到主庫(kù)的user表 即 m1.user
          actual-data-nodes: m1.user
      # 主庫(kù)從庫(kù)規(guī)則定義
      master-slave-rules:
        m1:
            # 主庫(kù)
            master-data-source-name: m1
            # 從庫(kù)
            slave-data-source-names: s1
    props:
      # 打印SQL日志
      sql:
        show: true

測(cè)試結(jié)果

新增測(cè)試

  • 測(cè)試類代碼
@Test
void insert() {
     for (int i = 0; i < 5; i++) {
         User user = new User();
         user.setId(i + 1);
         user.setName("user_" + user.getId());
         user.setClientId(10000);
         user.setAge(18 + i);
         userMapper.insert(user);
     }
 }
  • 運(yùn)行結(jié)果

操作的必須是主庫(kù) 對(duì)應(yīng)的數(shù)據(jù)源 m1


主庫(kù)查看

從庫(kù)查看

更新測(cè)試修改前

  • 測(cè)試類代碼

修改 id=5 的記錄的 name, user_5 => Tom

@Test
 void update() {
     User user = new User();
     user.setId(5);
     user.setName("Tom");
     userMapper.updateById(user);
 }
  • 運(yùn)行結(jié)果

操作的必須是主庫(kù) 對(duì)應(yīng)的數(shù)據(jù)源 m1

查看主庫(kù)

查看從庫(kù)

刪除測(cè)試

刪除 id=5 的記錄

  • 測(cè)試代碼
@Test
void delete() {
    userMapper.deleteById(5);
}
  • 運(yùn)行結(jié)果

操作的必須是主庫(kù) 對(duì)應(yīng)的數(shù)據(jù)源 m1

查看主庫(kù)

查看從庫(kù)

查詢測(cè)試

指定ID查詢,查找id為 2、3 的記錄

  • 測(cè)試代碼
@Test
void selectById() {
    List<User> list = userMapper.selectList(new QueryWrapper<User>().in("id", 2, 3));
    System.out.println(JSONArray.toJSONString(list));
}
  • 運(yùn)行結(jié)果

操作的必須是從庫(kù) 對(duì)應(yīng)的數(shù)據(jù)源 s1

總結(jié)

  • 完美的詮釋了 讀寫分離
  • 驗(yàn)證了 MySQL主從集群的正確性
  • 新增、更新、刪除 都 操作主庫(kù) 且 同步到從庫(kù)
  • 查詢 只能操作 從庫(kù)

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

相關(guān)文章

  • 快速排序算法在Java中的實(shí)現(xiàn)

    快速排序算法在Java中的實(shí)現(xiàn)

    這篇文章主要介紹了快速排序算法在Java中的實(shí)現(xiàn),簡(jiǎn)單介紹了快速排序的實(shí)現(xiàn)原理,分享了兩種實(shí)現(xiàn)代碼,具有一定參考價(jià)值,需要的朋友可以了解下。
    2017-11-11
  • 詳解IntelliJ IDEA 快捷鍵整合(大全)

    詳解IntelliJ IDEA 快捷鍵整合(大全)

    這篇文章主要介紹了詳解IntelliJ IDEA 快捷鍵整合,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-08-08
  • java線性表排序示例分享

    java線性表排序示例分享

    這篇文章主要介紹了java線性表排序示例,需要的朋友可以參考下
    2014-03-03
  • 利用Java搭建個(gè)簡(jiǎn)單的Netty通信實(shí)例教程

    利用Java搭建個(gè)簡(jiǎn)單的Netty通信實(shí)例教程

    這篇文章主要給大家介紹了關(guān)于如何利用Java搭建個(gè)簡(jiǎn)單的Netty通信,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Java具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05
  • 如何配置cursor進(jìn)行Java springboot項(xiàng)目開(kāi)發(fā)

    如何配置cursor進(jìn)行Java springboot項(xiàng)目開(kāi)發(fā)

    本文介紹了如何在Cursor IDE中配置Java和Spring Boot項(xiàng)目開(kāi)發(fā)環(huán)境,首先,設(shè)置了系統(tǒng)用戶級(jí)別的JDK配置,以便在多個(gè)項(xiàng)目之間切換時(shí)不需要重新配置,然后,配置了Gradle環(huán)境變量,并安裝了必要的Java開(kāi)發(fā)插件,感興趣的朋友跟隨小編一起看看
    2025-02-02
  • springboot加載復(fù)雜的yml文件獲取不到值的解決方案

    springboot加載復(fù)雜的yml文件獲取不到值的解決方案

    這篇文章主要介紹了springboot加載復(fù)雜的yml文件獲取不到值的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • Java工廠模式用法之如何動(dòng)態(tài)選擇對(duì)象詳解

    Java工廠模式用法之如何動(dòng)態(tài)選擇對(duì)象詳解

    工廠設(shè)計(jì)模式可能是最常用的設(shè)計(jì)模式之一,我想大家在自己的項(xiàng)目中都用到過(guò)。本文不僅僅是關(guān)于工廠模式的基本知識(shí),更是討論如何在運(yùn)行時(shí)動(dòng)態(tài)選擇不同的方法進(jìn)行執(zhí)行,你們可以看看是不是和你們項(xiàng)目中用的一樣
    2023-03-03
  • 輕松掌握J(rèn)ava建造者模式

    輕松掌握J(rèn)ava建造者模式

    這篇文章主要幫助大家輕松掌握J(rèn)ava建造者模式,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-10-10
  • Java虛擬機(jī)JVM性能優(yōu)化(二):編譯器

    Java虛擬機(jī)JVM性能優(yōu)化(二):編譯器

    這篇文章主要介紹了Java虛擬機(jī)JVM性能優(yōu)化(二):編譯器,本文先是講解了不同種類的編譯器,并對(duì)客戶端編譯,服務(wù)器端編譯器和多層編譯的運(yùn)行性能進(jìn)行了對(duì)比,然后給出了幾種常見(jiàn)的JVM優(yōu)化方法,需要的朋友可以參考下
    2014-09-09
  • Java常用字節(jié)流和字符流實(shí)例匯總

    Java常用字節(jié)流和字符流實(shí)例匯總

    這篇文章主要介紹了Java常用字節(jié)流和字符流實(shí)例匯總,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-07-07

最新評(píng)論