天天看點

Sharding-Proxy實戰(水準分表、水準分庫、垂直分表、讀寫分離)Sharding-Proxy實戰

Sharding-Proxy實戰

基本概述

使用過Sharding-JDBC都知道需要為每一個運用到Sharding-JDBC的項目編寫一大片配置檔案,Sharding-Proxy就可以解決Sharding-JDBC上遇到問題,Sharding-Proxy定位為透明化的資料庫代理端,提供封裝了資料庫二進制協定的服務端版本,用于完成對異構語言的支援,簡單來說分庫分表的工作都由Sharding-Proxy服務端去完成,Sharding-Proxy是Webapp服務端,你隻管發增删改查不有管你要操作什麼庫,Sharding-Proxy受到你的消息後會自己安排去操作那個資料庫然後把結果給回你

Sharding-Proxy有以下幾個特定

  1. Sharding-Proxy是一個獨立的服務,需要安裝安裝,并且做好分庫分表配置
  2. 目前隻支援MySQL/PostgreSQL協定的的用戶端
Sharding-Proxy實戰(水準分表、水準分庫、垂直分表、讀寫分離)Sharding-Proxy實戰

服務安裝

安裝包下載下傳

這裡我下載下傳4.0.1的版本,Sharding-Proxy下載下傳位址
Sharding-Proxy實戰(水準分表、水準分庫、垂直分表、讀寫分離)Sharding-Proxy實戰
Sharding-Proxy實戰(水準分表、水準分庫、垂直分表、讀寫分離)Sharding-Proxy實戰

解壓安裝包

使用指令解壓壓縮包,解壓壓縮包後進入到bin目錄可以看到有幾個啟動腳本win下使用bat腳本,liunx使用sh腳本即可
# tar指令解壓壓縮包
tar -xvf apache-shardingsphere-incubating-4.0.1-sharding-proxy-bin.tar.gz
           
Sharding-Proxy實戰(水準分表、水準分庫、垂直分表、讀寫分離)Sharding-Proxy實戰

解壓後的坑

注意這裡有一個坑,解壓壓縮包後要檢查一下lib下的檔案是否完整,有時候解壓完成後lib解壓處理的檔案會少了字尾名的,正常情況應該都是.jar字尾,如圖這是異常情況,解決這個問題辦法就是重新解壓或者手動把那些檔案名修改一下都不上.jar字尾,不讓等一下啟動服務時會提示找不到jar包
Sharding-Proxy實戰(水準分表、水準分庫、垂直分表、讀寫分離)Sharding-Proxy實戰

分表配置

修改server.yaml

進入到conf目錄下,修改server.yaml檔案

server.yaml修改很簡單,隻需要将這部分内容的注釋去掉即可

Sharding-Proxy實戰(水準分表、水準分庫、垂直分表、讀寫分離)Sharding-Proxy實戰

修改config-sharding.yaml

進入到conf目錄下,修改config-sharding.yaml檔案,裡面有一些模闆,配置其實和JDBC是一模一樣的,在本地資料庫中建立一個demo_ds_0,當然也可以使用已有的資料庫
Sharding-Proxy實戰(水準分表、水準分庫、垂直分表、讀寫分離)Sharding-Proxy實戰

使用注意

在配置檔案中,可以那麼一句話如果你要連接配接msyql那麼需要手動的把mysql驅動的jar包放到lib目錄下否則程式無法運作
Sharding-Proxy實戰(水準分表、水準分庫、垂直分表、讀寫分離)Sharding-Proxy實戰
Sharding-Proxy實戰(水準分表、水準分庫、垂直分表、讀寫分離)Sharding-Proxy實戰

服務啟動

執行

start.bat

服務啟動(liunx下執行sh檔案)有2種方式帶端口和不帶端口
  1. 不帶端口:預設使用3307端口
  2. 帶端口:使用你指定的端口

    start.bat 8888

看到如下内容表示啟動成功
Sharding-Proxy實戰(水準分表、水準分庫、垂直分表、讀寫分離)Sharding-Proxy實戰

連接配接用戶端

最好使用cmd指令行去連接配接,雖然如Navicat、DataGrip等這些用戶端也是可以的,當時有時又不可以好奇怪的,是以這裡使用cmd的mysql指令去連接配接Sharding-Proxy,就和連接配接資料庫一樣使用

mysql -P3307 -uroot -p

即可連接配接

注意不要搞混了哦這裡連接配接的是Sharding-Proxy不是Mysql資料庫,隻是連接配接Sharding-Proxy方式和資料庫一樣

Sharding-Proxy實戰(水準分表、水準分庫、垂直分表、讀寫分離)Sharding-Proxy實戰

使用sql指令操作

Sharding-Proxy實戰(水準分表、水準分庫、垂直分表、讀寫分離)Sharding-Proxy實戰
Sharding-Proxy實戰(水準分表、水準分庫、垂直分表、讀寫分離)Sharding-Proxy實戰

檢視本地資料庫

檢視我們本機的實際資料庫中發生的變化,可以發現我們隻執行了一條建表語句,Sharding-Proxy根據配置檔案配置的規則給我們建立了t_order_0和t_order_1,并且我執行插入order_id是奇數是以資料被插入在t_order_1表中
Sharding-Proxy實戰(水準分表、水準分庫、垂直分表、讀寫分離)Sharding-Proxy實戰

分庫配置

修改config-sharding.yaml

Sharding-Proxy實戰(水準分表、水準分庫、垂直分表、讀寫分離)Sharding-Proxy實戰

服務啟動

執行

start.bat

服務啟動(liunx下執行sh檔案)有2種方式帶端口和不帶端口
  1. 不帶端口:預設使用3307端口
  2. 帶端口:使用你指定的端口

    start.bat 8888

看到如下内容表示啟動成功
Sharding-Proxy實戰(水準分表、水準分庫、垂直分表、讀寫分離)Sharding-Proxy實戰

連接配接用戶端

最好使用cmd指令行去連接配接,雖然如Navicat、DataGrip等這些用戶端也是可以的,當時有時又不可以好奇怪的,是以這裡使用cmd的mysql指令去連接配接Sharding-Proxy,就和連接配接資料庫一樣使用

mysql -P3307 -uroot -p

即可連接配接

注意不要搞混了哦這裡連接配接的是Sharding-Proxy不是Mysql資料庫,隻是連接配接Sharding-Proxy方式和資料庫一樣

Sharding-Proxy實戰(水準分表、水準分庫、垂直分表、讀寫分離)Sharding-Proxy實戰

使用sql指令操作

Sharding-Proxy實戰(水準分表、水準分庫、垂直分表、讀寫分離)Sharding-Proxy實戰

檢視本地資料庫

檢視我們本機的實際資料庫中發生的變化,可以發現我們隻執行了一條建表語句,Sharding-Proxy根據配置檔案配置的規則給我們建立了t_order_0和t_order_1,并且也根據相應的規則插入了資料
Sharding-Proxy實戰(水準分表、水準分庫、垂直分表、讀寫分離)Sharding-Proxy實戰

讀寫分離

讀寫分離也是一種很好的提升資料庫性能的解決方案,在了解如何使用Sharding-Proxy之前首先需學會如何部署Mysql主從配置,如果還沒部署過的前閱讀以下文章

Sharding-Proxy是不做主從複制資料同步的,主從複制需要通過配置Mysql實作,而Sharding-Proxy隻是根據語義(CRUD)判斷你是做增删改查的那種操作,并且給你路由到主庫/從庫

Mysql-主從配置與讀寫分離

修改config-master_slave.yaml

進入到conf目錄下,修改config-master_slave.yaml檔案
Sharding-Proxy實戰(水準分表、水準分庫、垂直分表、讀寫分離)Sharding-Proxy實戰

服務啟動

執行

start.bat

服務啟動(liunx下執行sh檔案)有2種方式帶端口和不帶端口
  1. 不帶端口:預設使用3307端口
  2. 帶端口:使用你指定的端口

    start.bat 8888

看到如下内容表示啟動成功
Sharding-Proxy實戰(水準分表、水準分庫、垂直分表、讀寫分離)Sharding-Proxy實戰

連接配接用戶端

最好使用cmd指令行去連接配接,雖然如Navicat、DataGrip等這些用戶端也是可以的,當時有時又不可以好奇怪的,是以這裡使用cmd的mysql指令去連接配接Sharding-Proxy,就和連接配接資料庫一樣使用

mysql -P3307 -uroot -p

即可連接配接

注意不要搞混了哦這裡連接配接的是Sharding-Proxy不是Mysql資料庫,隻是連接配接Sharding-Proxy方式和資料庫一樣

Sharding-Proxy實戰(水準分表、水準分庫、垂直分表、讀寫分離)Sharding-Proxy實戰

使用sql指令操作

Sharding-Proxy實戰(水準分表、水準分庫、垂直分表、讀寫分離)Sharding-Proxy實戰

檢視本地資料庫

檢視我們本機的實際資料庫中發生的變化,可以發現主從庫同時都有剛剛插入的資料
Sharding-Proxy實戰(水準分表、水準分庫、垂直分表、讀寫分離)Sharding-Proxy實戰