ShardingSphere-Proxy5搭建使用

来源:https://www.cnblogs.com/lwj97/archive/2022/10/11/16778606.html
-Advertisement-
Play Games

安裝Httpd服務 版本說明: CentOS 7 以上,預設系統是httpd 2.4,CentOS 6 版預設為httpd 2.2 Ubuntu 18.04 預設 Apache/2.4.29 範例:CentOS 8 安裝httpd [root@CentOS8 ~]# yum info httpd B ...


ShardingSphere-Proxy5搭建使用

Apache ShardingSphere下的一個產品,定位為透明化的資料庫代理端,與mycat類似,所有的分片都由其完成。

ShardingSphere-Proxy5下載安裝

官網提供三種安裝方式,這裡主要記錄兩種

二進位包安裝

  1. 官網下載二進位包apache-shardingsphere-5.2.0-shardingsphere-proxy-bin.tar.gz
  2. 下載MySQL驅動mysql-connector-java-8.0.22.jar(根據所使用的mysql下載對應版本)
  3. 將MySQl驅動放至shardingsphere-proxy解壓目錄中的ext-lib目錄
  4. 修改配置conf/server.yaml
    server.yaml是與shardingsphere-proxy服務相關的配置,這裡主要配置下許可權
rules:
 - !AUTHORITY
   users: # 配置連接shardingsphere-proxy的用戶
     - [email protected]:root
     - sharding@:sharding
   provider: # 授權模式
     type: ALL_PERMITTED # 不用授權,獲取所有許可權
  1. 啟動shardingsphere-proxy
# windows
# 指定埠號和配置文件目錄, 預設埠為3307
bin/start.bat ${proxy_port} ${proxy_conf_directory}

出現以上信息代表部署成功
6. 連接測試
連接方式與mysql差不多,可以用mysql命令行連接,也可以用navicat連接。

Docker 方式安裝

# 拉取鏡像
docker pull apache/shardingsphere-proxy

# 啟動臨時容器
docker run -d --name tmp --entrypoint=bash apache/shardingsphere-proxy:5.2.0

# 配置文件拷貝
docker cp tmp:/opt/shardingsphere-proxy/conf /mnt/data/shardingsphere-proxy/
#刪除臨時容器
docker rm tmp

# 註意鏡像的擴張依賴需要放在ext-lib目錄,不能直接覆蓋lib目錄
docker run --name shardingsphere-proxy -d -v /mnt/data/shardingsphere-proxy/conf:/opt/shardingsphere-proxy/conf -v /mnt/data/shardingsphere-proxy/ext-lib:/opt/shardingsphere-proxy/ext-lib -e PORT=3307 -p 33307:3307 apache/shardingsphere-proxy:5.2.0

docker run --name shardingsphere-proxy -d -v /mnt/data/shardingsphere-proxy/conf:/opt/shardingsphere-proxy/conf -e PORT=3307 -p 33307:3307 apache/shardingsphere-proxy:5.2.0

ShardingSphere-Proxy5分庫分表

創建數據源

修改config-sharding.yaml文件添加數據源配置

databaseName: sharding_db ##邏輯庫。配置多個邏輯庫時需要創建其他的配置文件,並且配置文件格式需為config-sharding***.yaml

dataSources: ## 數據源,連接真實物理庫,註意物理庫必須有相應的庫存在,負責proxy無法啟動。
ds_0:
url: jdbc:mysql://127.0.0.1:13307/demo_ds_0?serverTimezone=UTC&useSSL=false
username: root
password: sunday
connectionTimeoutMilliseconds: 30000
idleTimeoutMilliseconds: 60000
maxLifetimeMilliseconds: 1800000
maxPoolSize: 50
minPoolSize: 1
ds_1:
url: jdbc:mysql://127.0.0.1:3306/demo_ds_1?serverTimezone=UTC&useSSL=false
username: root
password: sunday
connectionTimeoutMilliseconds: 30000
idleTimeoutMilliseconds: 60000
maxLifetimeMilliseconds: 1800000
maxPoolSize: 50
minPoolSize: 1

配置分片規則

繼續修改config-sharding.yaml文件添加數據分片規則

databaseName: sharding_db

dataSources: ## 數據源,連接真實物理庫,註意物理庫必須有相應的庫存在,負責proxy無法啟動。
ds_0:
url: jdbc:mysql://127.0.0.1:13307/demo_ds_0?serverTimezone=UTC&useSSL=false
username: root
password: sunday
connectionTimeoutMilliseconds: 30000
idleTimeoutMilliseconds: 60000
maxLifetimeMilliseconds: 1800000
maxPoolSize: 50
minPoolSize: 1
ds_1:
url: jdbc:mysql://127.0.0.1:3306/demo_ds_1?serverTimezone=UTC&useSSL=false
username: root
password: sunday
connectionTimeoutMilliseconds: 30000
idleTimeoutMilliseconds: 60000
maxLifetimeMilliseconds: 1800000
maxPoolSize: 50
minPoolSize: 1
## 分片規則配置
rules:
- !SHARDING
tables:
t_order: # 分片表
actualDataNodes: ds_${0..1}.t_order${0..1}
databaseStrategy: # 分庫規則
standard: # 標準類型分片,目前官方有四種分片類型
shardingColumn: user_id
shardingAlgorithmName: alg_mod # 演算法名稱
tableStrategy: # 分表規則
standard:
shardingColumn: order_no
shardingAlgorithmName: alg_hash_mod # 演算法名稱,具體使用哪一種演算法下麵會根據演算法名稱配置
keyGenerateStrategy: # 主鍵生成規則
column: id
keyGeneratorName: snowflake
# bindingTables: # 綁定表。對於相同分片演算法的表,設置綁定,避免相互關聯時產生笛卡爾關聯
# broadcastTables: # 廣播表

keyGenerators: # 主鍵生成規則配置
snowflake:
type: SNOWFLAKE

shardingAlgorithms: # 分片演算法配置,根據上面的演算法名稱配置演算法的類型和演算法接收的參數
alg_mod:
type: MOD
props:
sharding-count: 2
alg_hash_mod:
type: HASH_MOD
props:
sharding-count: 2

配置完成後重啟proxy。

連接proxy創建分片表

配置分片表後,並沒有生成相應的分片表,需要連接上sharding-proxy,在proxy中執行建表語句,在創建邏輯表時分片表會被proxy自動按照配置的規則進行創建。

CREATE TABLE `t_order` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`order_no` varchar(30) DEFAULT NULL,
`user_id` bigint(20) DEFAULT NULL,
`amount` decimal(10,2) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=779468255126355969 DEFAULT CHARSET=utf8mb4;

插入測試數據

INSERT INTO `sharding_db`.`t_order`(`id`, `order_no`, `user_id`, `amount`) VALUES (779468213359476737, '22', 22, 22.00);
INSERT INTO `sharding_db`.`t_order`(`id`, `order_no`, `user_id`, `amount`) VALUES (779468285585391617, '44', 44, 44.00);
INSERT INTO `sharding_db`.`t_order`(`id`, `order_no`, `user_id`, `amount`) VALUES (779468168534949888, '11', 11, 11.00);
INSERT INTO `sharding_db`.`t_order`(`id`, `order_no`, `user_id`, `amount`) VALUES (779468255126355968, '33', 33, 33.00);

插入後,觀察物理庫的表數據存儲情況。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 目錄 什麼是應用服務雪崩 雪崩效應產生的幾種場景 緩存雪崩的解決方案 雪崩的整體解決方案 熔斷設計 隔離設計 超時機制設計 如何提前發現雪崩 什麼是應用服務雪崩 雪崩問題 分散式系統都存在這樣一個問題,由於網路的不穩定性,決定了任何一個服務的可用性都不是 100% 的。當網路不穩定的時候,作為服務的 ...
  • 一、前言 MyBatis 創建時的一個思想是:資料庫不可能永遠是你所想或所需的那個樣子。 我們希望每個資料庫都具備良好的第三範式或 BCNF 範式,可惜它們並不都是那樣。 如果能有一種資料庫映射模式,完美適配所有的應用程式,那就太好了,但可惜也沒有。 而 ResultMap 就是 MyBatis 對 ...
  • > cat /etc/kylin-build Kylin-Desktop V10-SP1 Build 20220316 > cat /etc/.kyinfo [dist] name=Kylin milestone=Desktop-V10-SP1-General-RC6-Build21-2203 ar ...
  • 一:背景 1.講故事 最近分享了好幾篇關於 非托管記憶體泄漏 的文章,有時候就是這麼神奇,來求助的都是這類型的dump,一飲一啄,莫非前定。讓我被迫加深對 NT堆, 頁堆 的理解,這一篇就給大家再帶來一篇記憶體泄漏。 前段時間有位朋友找到我,說他的程式出現了非托管泄漏,某一塊的操作會導致非托管記憶體上漲的 ...
  • 三台虛擬主機搭建lnmp 環境說明: |主機說明| ip| 安裝服務| | : | : : | : | |nginx |192.168.222.137 |nginx| |mysql| 192.168.222.138 |mysql| |php |192.168.222.139 |php| 阿裡雲官網 ...
  • 分離部署LNMP 環境說明: | 系統 | 主機名 | IP | 服務 | | | | | | | centos8 | nginx | 192.168.111.141 | nginx | | centos8 | mysql | 192.168.111.142 | mysql | | centos8 ...
  • 摘要:我們利用華為雲IoTDA平臺構建一個智能電梯運行狀態檢測模型,模擬一下智能電梯檢測器的工作原理。 本文分享自華為雲社區《太棒了,5分鐘構建IoT智能電梯檢測器模型》,作者:清雨小竹。 什麼是物模型? 物模型是現實中的設備(如感測器、車載裝置、樓宇、工廠等)在雲端的數字化表示,用於描述了該設備是 ...
  • 軟體包: 開源軟體剛開始只提供打包好的源代碼文件(例如:.tar.gz),用戶需要自己使用編譯器編譯後才能使用。 Debian誕生時,管理工具dpkg也就應運而生,可用來管理deb尾碼的"包"文件 後面後Red Hat才開發自己的rpm包管理系統 主流軟體包管理器: redhat:RPM Packa ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...