mycat入門安裝及demo實現

来源:https://www.cnblogs.com/cheneyJUTU/archive/2019/05/05/10810855.html
-Advertisement-
Play Games

下載: https://github.com/MyCATApache/Mycat-download 安裝: 直接解壓 運行命令: linux: ./mycat start 啟動 ./mycat stop 停止 ./mycat console 前臺運行 ./mycat restart 重啟服務 ./m ...


下載:

https://github.com/MyCATApache/Mycat-download

安裝:

直接解壓

運行命令:

linux:   

  ./mycat start 啟動 
  ./mycat stop 停止 
  ./mycat console 前臺運行 
  ./mycat restart 重啟服務 
  ./mycat pause 暫停 
  ./mycat status 查看啟動狀態

windows:

  點擊startup_nowrap.bat

配置:

打開conf/wrapper.conf文件。以下配置跟jvm參數完全一致,可以根據自己的jvm參數調整。

Java Additional Parameters
wrapper.java.additional.1=
wrapper.java.additional.1=-DMYCAT_HOME=.
wrapper.java.additional.2=-server
wrapper.java.additional.3=-XX:MaxPermSize=64M
wrapper.java.additional.4=-XX:+AggressiveOpts
wrapper.java.additional.5=-XX:MaxDirectMemorySize=100m
wrapper.java.additional.6=-Dcom.sun.management.jmxremote
wrapper.java.additional.7=-Dcom.sun.management.jmxremote.port=1984
wrapper.java.additional.8=-Dcom.sun.management.jmxremote.authenticate=false
wrapper.java.additional.9=-Dcom.sun.management.jmxremote.ssl=false
wrapper.java.additional.10=-Xmx100m
wrapper.java.additional.11=-Xms100m
wrapper.java.additional.12=-XX:+UseParNewGC
wrapper.java.additional.13=-XX:+UseConcMarkSweepGC
wrapper.java.additional.14=-XX:+UseCMSCompactAtFullCollection
wrapper.java.additional.15=-XX:CMSFullGCsBeforeCompaction=0
wrapper.java.additional.16=-XX:CMSInitiatingOccupancyFraction=70

Mycat連接測試:
  測試mycat與測試mysql完全一致,mysql怎麼連接,mycat就怎麼連接。
  推薦先採用命令行測試:
  mysql -uroot -proot -P8066 -h127.0.0.1
  如果採用工具連接,1.4,1.3目前部分工具無法連接,會提示database not selected,建議採用高版本,navicat測試。1.5已經修複了部分工具連接。

Mycat配置入門
配置:
–bin 啟動目錄
–conf 配置文件存放配置文件
邏輯庫配置:
配置server.xml
添加兩個mycat邏輯庫:user,pay: system 參數是所有的mycat參數配置,比如添加解析器:defaultSqlParser,其他類推 user 是用戶參數。

<system>
<property name="defaultSqlParser">druidparser</property>
</system>
<user name="mycat">
<property name="password">mycat</property>
<property name="schemas">user,pay</property>
</user>


編輯schema.xml
  修改dataHost和schema對應的連接信息,user,pay 垂直切分後的配置如下所示:

schema 是實際邏輯庫的配置,user,pay分別對應兩個邏輯庫,多個schema代表多個邏輯庫。
dataNode是邏輯庫對應的分片,如果配置多個分片只需要多個dataNode即可。
dataHost是實際的物理庫配置地址,可以配置多主主從等其他配置,多個dataHost代表分片對應的物理庫地址,下麵的writeHost、readHost代表該分片是否配置多寫,主從,讀寫分離等高級特性。
以下例子配置了兩個writeHost為主從。

<schema name="user" checkSQLschema="false" sqlMaxLimit="100" dataNode="user" />
<schema name="pay" checkSQLschema="false" sqlMaxLimit="100" dataNode="pay" >
<table name="order" dataNode="pay1,pay2" rule="rule1"/>
</schema>
<dataNode name="user" dataHost="host" database="user" />
<dataNode name="pay1" dataHost="host" database="pay1" />
<dataNode name="pay2" dataHost="host" database="pay2" />
<dataHost name="host" maxCon="1000" minCon="10" balance="0"
writeType="0" dbType="mysql" dbDriver="native">
<heartbeat>select 1</heartbeat>
<!-- can have multi write hosts -->
<writeHost host="hostM1" url="192.168.0.2:3306" user="root" password="root" />
<writeHost host="hostM2" url="192.168.0.3:3306" user="root" password="root" />
</dataHost>

  
Mycat邏輯庫、系統參數配置
配置Mycat環境參數

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE mycat:server SYSTEM "server.dtd">
<mycat:server xmlns:mycat="http://org.opencloudb/">
<system>
<property name="defaultSqlParser">druidparser</property>
</system> 
</mycat:server>


  如例子中配置的所有的Mycat參數變數都是配置在server.xml 文件中,system標簽下配置所有的參數,如果需要配置某個變數添加相應的配置即可,例如添加啟動埠8066,預設為8066。

<property name="serverPort">8066</property>
1
  
  其他所有變數類似。
  配置Mycat邏輯庫與用戶

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE mycat:server SYSTEM "server.dtd">
<mycat:server xmlns:mycat="http://org.opencloudb/">
<user name="mycat">
<property name="password">mycat</property>
<property name="schemas">TESTDB</property>
</user>
</mycat:server>


  如例子中配置的所有的Mycat連接的用戶與邏輯庫映射都是配置在server.xml 文件中,user標簽下配置所有的參數,例如例子中配置了一個mycat用戶供應用連接到mycat,同時mycat 在schema.xml中配置後了一個邏輯庫TESTDB,配置好邏輯庫與用戶的映射關係。

邏輯庫、表分片配置
配置邏輯庫(schema)

  Mycat作為一個中間件,實現mysql協議那麼對前端應用連接來說就是一個資料庫,也就有資料庫的配置,mycat的資料庫配置是在schema.xml中配置,配置好後映射到server.xml裡面的用戶就可以了。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://org.opencloudb/">
<schema name="TESTDB" checkSQLschema="true" sqlMaxLimit="100" dataNode="dn1">
<table name="t_user" dataNode="dn1,dn2" rule="sharding-by-mod2"/>
<table name="ht_jy_login_log" primaryKey="ID" dataNode="dn1,dn2" rule="sharding-by-date_jylog"/>
</schema>
<dataNode name="dn1" dataHost="localhost1" database="mycat_node1"/>
<dataNode name="dn2" dataHost="localhost1" database="mycat_node2"/>

<dataHost name="localhost1" writeType="0" switchType="1" slaveThreshold="100" balance="1" dbType="mysql" maxCon="10" minCon="1" dbDriver="native">
<heartbeat>show status like 'wsrep%'</heartbeat>
<writeHost host="hostM1" url="127.0.0.1:3306" user="root" password="root" >
</writeHost> 
</dataHost>
</mycat:schema >

  上面例子配置了一個邏輯庫TESTDB,同時配置了t_user,ht_jy_login_log兩個分片表。

邏輯表配置

<table name="t_user" dataNode="dn1,dn2" rule="sharding-by-mod2"/>

  table 標簽 是邏輯表的配置 其中
  name代表表名,
  dataNode代表表對應的分片,
  Mycat預設採用分庫方式,也就是一個表映射到不同的庫上,
  rule代表表要採用的數據切分方式,名稱對應到rule.xml中的對應配置,如果要分片必須配置。

配置分片(dataNode)

<dataNode name="dn1" dataHost="localhost1" database="mycat_node1"/>
<dataNode name="dn2" dataHost="localhost1" database="mycat_node2"/>

  表切分後需要配置映射到哪幾個資料庫中,Mycat的分片實際上就是庫的別名,例如上面例子配置了兩個分片dn1,dn2 分別對應到物理機映射dataHost localhost1 的兩個庫上。

配置物理庫分片映射(dataHost)

<dataHost name="localhost1" writeType="0" switchType="1" slaveThreshold="100" balance="1" dbType="mysql" maxCon="10" minCon="1" dbDriver="native">
<heartbeat>show status like 'wsrep%'</heartbeat>
<writeHost host="hostM1" url="127.0.0.1:3306" user="root" password="root" >
</writeHost> 
</dataHost>

  Mycat作為資料庫代理需要邏輯庫,邏輯用戶,表切分後需要配置分片,分片也就需要映射到真實的物理主機上,至於是映射到一臺還是一臺的多個實例上,Mycat並不關心,只需要配置好映射即可,例如例子中:
  配置了一個名為localhost1的物理主機(dataHost)映射。
  heartbeat 標簽代表Mycat需要對物理庫心跳檢測的語句,正常情況下生產案例可能配置主從,或者多寫 或者單庫,無論哪種情況Mycat都需要維持到資料庫的數據源連接,因此需要定時檢查後端連接可以性,心跳語句就是來作為心跳檢測。
  writeHost 此標簽代表 一個邏輯主機(dataHost)對應的後端的物理主機映射,例如例子中寫庫hostM1 映射到127.0.0.1:3306。如果後端需要做讀寫分離或者多寫 或者主從則通過配置 多個writeHost 或者readHost即可。

Mycat 表切分規則配置
表切分規則

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mycat:rule SYSTEM "rule.dtd">
<mycat:rule xmlns:mycat="http://org.opencloudb/">
<tableRule name="sharding-by-hour">
<rule>
<columns>createTime</columns>
<algorithm>sharding-by-hour</algorithm>
</rule>
</tableRule>

<function name="sharding-by-hour" class="org.opencloudb.route.function.LatestMonthPartion">
<property name="splitOneDay">24</property>
</function>

</mycat:rule >

  數據切分中作為表切分規則中最重要的配置,表的切分方式決定了數據切分後的性能好壞,因此也是最重要的配置。
  如上面例子配置了一個切分規則,名為sharding-by-hour 對應的切分方式(function )是按日期切分,該配置中:

tableRule

name 為schema.xml 中table 標簽中對應的 rule=”sharding-by-hour” ,也就是配置表的分片規則,
columns 是表的切分欄位: createTime 創建日期。
algorithm 是規則對應的切分規則:映射到function 的name。

function

function 配置是分片規則的配置。
name 為切分規則的名稱,名字人員取,但是需要與tableRule 中匹配。
class 是切分規則對應的切分類,寫死,需要哪種規則則配置哪種,例如本例子是按小時分片:org.opencloudb.route.function.LatestMonthPartion
property 標簽是切分規則對應的不同屬性,不同的切分規則配置不同。

 


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

-Advertisement-
Play Games
更多相關文章
  • [20190502]給顯示輸出加入時間戳.txt--//有別人問我執行腳本中timestamp.pl的代碼,實際上有些文章裡面有源代碼,有一些忘記寫上了。--//貼上:$ cat /usr/local/bin/timestamp.pl#!/usr/bin/perlwhile (<>) {($sec, ...
  • python2.7 setuptools pip 建立軟鏈接 virtualenv virtualenvwrapper ...
  • 筆者經常需要做網路實驗,GNS3就是筆者最喜歡用的模擬器,為了便於實驗,需要能從macos上直接ssh登陸模擬出來的vm,並且vm需要上公網。經過研究,已解決此問題,並以此分享出來 ...
  • 一、前言 1、簡介 寫的這篇博客,是為了簡單講解一下UART通信協議,以及UART能夠實現的一些功能,還有有關使用STM32CubeMX來配置晶元的一些操作,在後面我會以我使用的STM32F429開發板來舉例講解(其他STM32系列晶元大多數都可以按照這些步驟來操作的),如有不足請多多指教。 2、U ...
  • 稻盛和夫先生在《活法》中有段一直激勵著我的話,現在轉送給正在閱讀本書的你: “工作馬馬虎虎,只想在興趣和游戲中尋覓快活,充其量只能獲得一時的快感,絕不能嘗到從心底涌出的驚喜和快樂,但來自工作的喜悅並不像糖果那樣—放進嘴裡就甜味十足,而是需要從苦勞與艱辛中滲出,因此當我們聚精會神,孜孜不倦,剋服艱辛後 ...
  • Linux下zookeeper集群搭建 部署前準備 1. 下載zookeeper的安裝包 http://zookeeper.apache.org/releases.html 我下載的版本是zookeeper 3.4.10。 2. 準備三台伺服器 ip地址為: 3. 檢查jdk版本,安裝jdk環境,j ...
  • 有兩張表,學生信息表infolist: 學生姓名錶namelist: 現要查詢出,存在infolist中,而不存在namelist中的學生,語句如下: 查詢結果如下: age有些奇葩,不用在意。 ...
  • 在業務資料庫性能問題診斷中,如果發現一個業務性能很差跟某個SQL有關,應用連接池幾乎被該SQL占滿,同時資料庫伺服器上也不堪重負。此時情況很緊急,業務改SQL重發佈已經來不及了,運維能選擇的操作不多。 阿裡資料庫(AliSQL和OceanBase)都支持在運行中干預SQL的執行計劃,以及對問題SQL... ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...