日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

MyCat 入门指南

發布時間:2025/3/18 编程问答 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MyCat 入门指南 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

原文出處:https://www.cnblogs.com/tonylovett/p/5251481.html


1. 安裝

1.1從https://github.com/MyCATApache/Mycat-download下載壓縮包

1.2解壓縮后復制到相應目錄下面,比如/usr/local/mycat

1.3mycat目錄下面分別是bin conf lib logs。

?? bin目錄里是啟動腳本

?? conf目錄里是配置文件

?? lib目錄里是Mycat和它的依賴jar

?? logs目錄里是console.log用來保存控制臺日志,和mycat.log用來保存mycat的log4j日志

2.???????配置環境變量

指定指定MYCAT_HOME,比如按照前文所述,可以把MYCAT_HOME配置為:export MYCAT_HOME=/usr/local/mycat

3.???????啟動

Mycat有兩種啟動方式,第一種是運行$MYCAT_HOME/bin/mycat腳本執行wrap模式的啟動;第二種是運行$MYCAT_HOME/bin/startup_nowrap.sh執行nowrap模式的啟動

4.???????Mycat類加載目錄與JVM參數

以nowrap模式為例,mycat會加載$MYCAT_HOME/lib/classes和$MYCAT_HOME/lib目錄下的所有jar。

如果要修改jvm啟動參數,可以修改$MYCAT_HOME/bin/startup_mycat.sh里的JAVA_OPTS變量

5.???????配置文件

重點介紹rule.xml schema.xml router.xml server.xml log4j.xml

5.1?? rule.xml

分片規則配置文件,mycat支持的所有分片規則都在這個文件里。定義一個規則需要兩個節點,一個是tableRule,一個是function。

以一致性哈希分片為例,function節點定義了分片規則的實現類與初始化參數和分片規則的算法名稱。

屬性name為規則算法名稱

???? class為規則實現類

???? property子節點為初始化規則的參數,使用seed count virtualBucketTimes就可初始化一致性哈希規則

?? <function name="murmur" class="org.opencloudb.route.function.PartitionByMurmurHash">

????? <property name="seed">0</property><!-- 默認是0-->

????? <property name="count">2</property><!-- 要分片的數據庫節點數量,必須指定,否則沒法分片-->

????? <property name="virtualBucketTimes">160</property><!-- 一個實際的數據庫節點被映射為這么多虛擬節點,默認是160倍,也就是虛擬節點數是物理節點數的160倍-->

? </function>

tableRule節點定義了分片規則名(注意此處是規則名,前面的function節點的name屬性是算法名)rule子節點指定用來分片的數據庫表字段和分片算法名,也就是前面的function節點的name屬性。

<tableRule name="sharding-by-murmur">

????? <rule>

??????? <columns>id</columns>

??????? <algorithm>murmur</algorithm>

????? </rule>

?? </tableRule>

任何自定義的分片規則也可以這樣配置

5.2?? server.xml

此文件用來配置mycat全局參數

<system>節點

<property name="defaultSqlParser">druidparser</property>,指定SQL解析器,默認是fdbparser,經測試druidparser效率更高

<property name="sequnceHandlerType">1</property>,指定mycat自動序列號生成方式。0:在借助本地文件生成序列號,1:借助數據庫生成序列號,更多信息請參考Mycat in action

<property name="serverPort">8066</property>指定mycat服務端口號,mycat通過這個端口接收數據庫客戶端的訪問請求。

另外還有一個9066端口沒有出現在配置文件中,用來接收mycat監控命令、查詢mycat運行狀況、重新加載配置文件等。更多信息請參考Mycat in action。

<user>節點

name屬性指定mycat用戶名

<property name=”password”>password</property><!—用戶密碼-->

<property name=”schema”>database_name</property><!—數據庫名,用客戶端建立連接后要操作的數據庫名 -->

<property name=”readOnly”>false</property><!—指定是不是只讀庫-->

可以有多個user節點。

5.3?? router.xml

<queryRouter schema=”schema”><!—沒太搞清楚這個文件的意義,我把schema屬性、<name>、<queryNode>都配置成了一樣的,而且都與要連接的數據庫名保持一致 -->

<!—schema的值會在schema.xml用到 -->

<dataNode>

??? <name>dataNodeName</name>

??? <queryNode>queryNode</queryNode>

</dataNode>

</queryRouter>

5.4?? schema.xml

<schema name=”schema”><!—就是router.xml命名的schema-->

<table name=”table_name” <!—要與它代理的數據庫物理表名一致-->

primaryKey=”pk” <!—被用作主鍵的字段名-->

dataNode=”dataNodeName” <!—下面將會出現的dataNode節點-->

rule=”sharding-by-murmur”<!—rule.xml的tableRule節點name屬性值,指定這個節點表示用這個規則執行分片-->

authIncrement=”true”><!—插入數據時是否由mycat自動生成分片,指定true時,如果insert sql內沒有指定主鍵的值,而主鍵又是自增長的,mycat會自動插入生成主鍵的代碼,并在生成主鍵時按照指定的分片規則將數據保存到數據庫-->

<!—mycat有自己的自增序列命令,更多信息請參考Mycat in action-->

<!—此處可以指定多個table子節點,一個table節點表示一張表-->

</schema>

<dataNode name=”dataNodeName” dataHost=”localhost“ database=”database”/>

<!—分別是節點名,就是schema節點里的table子節點dataNode屬性

?? dataHost是節點主機名,在下面要出現的dataHost定義

?? database數據庫名

-->

<dataHost name=”localhost” maxCon=”1000” minCon=”10” balance=”0”

???????? wrteType=”0” dbType=”mysql” dbDriver=”native>

<!—name屬性是dataHost名

?? maxCon minCon分別是連接到物理數據庫的最大最小連接數

?? dbType指定數據庫類型

?? dbDriver只有兩個取值,分別是native和jdbc。native為mycat自帶驅動,只支持mysql,jdbc為使用jdbc實現連接數據庫,指定什么數據庫的jdbc驅動就可以訪問什么數據庫,更靈活,但效率不如native

可以有多個dataHost節點

-->

?? <heartbeat>select 1</heartbeat><!—保持連接不斷的心跳sql-->

?? <writeHost host=”hostM1” url=”localhost:3306” user=”user” password=”password”>

????? <reeadHost host=”hostS1” url="localhost:3306" user="root" password="123456"/>

?? </writeHost>

<!—可以有多個writeHost,一個writeHost里要吧有多個readHost-->

</dataHost>

現在所有配置已經完成可以執行bin目錄下的啟動腳本完成啟動了。然后就可以像使用真正的數據庫一樣訪問mycat。如果運行時修改了配置文件,可以用在命令行用mysql命令登錄9066端口,執行show @@help得到相關命令,其中有重新加載全部配置文件的命令,可以運行時重新加載配置

6.???????二次開發

6.1?? 開發新的分片規則

建一個新的類,繼承AbstractPartitionAlgorithm實現RuleAlgorithm。重寫public void init()和public Integer calculate(String columnValue)。

init根據rule.xml指定的分片初始化參數初始化分片規則,calculate(String)接收分片字段的字符串形式計算記錄應該保存的節點。

7.???????升級注意事項

7.1?? 從1.2.*到1.3.*的變化

7.1.1 server.xml 的<property name="processors">32</property>,通常設置為CPU核數的2倍,比如CPU核數是16,此處就設置為32;<property name="processorExecutor">32</property>,默認不用設置了,在1.3.*已經沒有重要影響

7.1.2 對分片規則的類名改了一些拼寫錯誤,注意升級rule.xml。也可以自己修改,變化在地原來的Partion改為Partition。


延伸閱讀,MyCat配置入門:https://www.cnblogs.com/756623607-zhang/p/6850933.html?utm_source=itdadao&utm_medium=referral


轉載于:https://blog.51cto.com/kusorz/2070263

總結

以上是生活随笔為你收集整理的MyCat 入门指南的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。