MyCAT核心配置詳解

          1.server.xml配置文件
          ###server.xml文件,幾乎保存了所有mycat需要的系統(tǒng)配置(屬性)信息,和用戶信息和防火墻信息。 ###1.system標(biāo)簽(系統(tǒng)屬性配置信息)
          - charset屬性:字符集設(shè)置(默認(rèn)utf8),如果配置特殊字符集請使用index_to_charset.peoperties中配置。 -
          defalutSqlParser屬性:指定mycat的sql解析器 - processors屬性:指定系統(tǒng)可用線程數(shù),默認(rèn)為機器的核心線程數(shù)。 -
          processorBufferChunk屬性:指定每次分配Scoket Direct Buffer的大小。默認(rèn)是4096字節(jié) -
          processorBufferPool屬性:設(shè)置bufferPool緩沖池大小 - ....其他一系列屬性 ###2.user標(biāo)簽
          name:指定mycat用戶名 password:指定mycat密碼 schemas:執(zhí)行該用戶的邏輯庫,可以配置多個。 readOnly:是否是只讀用戶
          benchmark:連接服務(wù)降級處理 usingDecrypt是否對密碼進(jìn)行加密。 ###3.user標(biāo)簽的子節(jié)點privileges節(jié)點
          此節(jié)點是:對該用戶的schema及下級的table進(jìn)行精細(xì)化的DML權(quán)限控制,privileges節(jié)點中check屬性用于標(biāo)識是否開啟DML權(quán)限檢查,默認(rèn)false不開啟權(quán)限檢查。可以配置多個privliges對應(yīng)schemas中定義的邏輯庫。
          dml上屬性描述 參數(shù) | 說明 | 示例(禁止增刪該查) ------- | ------- | ------- dml |
          insert,update,select,delete | 0000 配置示例: <user name="zhuam"> <property
          name="password">111111</property> <property
          name="schemas">TESTDB,TESTDB1</property> <!-- 表級權(quán)限: Table 級的 dml(curd)控制,未設(shè)置的
          Table 繼承 schema 的 dml --> <!-- TODO: 非 CURD SQL 語句, 透明傳遞至后端 --> <privileges
          check="true"> <schema name="TESTDB" dml="0110" > <table name="table01"
          dml="0111"></table> <table name="table02" dml="1111"></table> </schema> <schema
          name="TESTDB1" dml="0110"> <table name="table03" dml="1110"></table> <table
          name="table04" dml="1010"></table> </schema> </privileges> </user>
          ###3.mycat防火墻配置示例:白名單和 SQL 黑名單說明 <firewall> <whitehost> <host user="mycat"
          host="127.0.0.1"></host> ip 白名單 用戶對應(yīng)的可以訪問的 ip 地址 </whitehost> <blacklist
          check="true"> <property name="selelctAllow">false</property> sql黑名單允許的 權(quán)限 后面為默認(rèn)
          </blacklist> </firewall>
          2.log4j2.xml配置文件
          log4j2.xml中定義了,日志的輸出級別及日志文件的輸出格式。 是日志的級別,生成環(huán)境下建議將級別調(diào)整為
          info/ware,如果是研究測試,特別是碰到異常可以通過開啟 debug 模式觀察日志的信息查找異常原因。
          logs文件夾中的warpper日志:mycat啟動過程的日志信息,通過查看此文件查看mycat啟動失敗原因。
          3.rule.xml配置文件
          rule.xml里面定義了我們對表進(jìn)行查分所涉及的規(guī)則定義。我們可以對表進(jìn)行靈活的分片算法 示例: <tableRule name="rule1">
          <rule> <columns>id</columns> <algorithm>func1</algorithm> </rule> </tableRule>
          name:指定唯一規(guī)則名稱,用于標(biāo)識不同的表規(guī)則。 rule:指定對物理表中的那一列進(jìn)行拆分和使用什么路由算法。 columns:指定要拆分的列名稱
          algorithm:連接表規(guī)則和具體的路由方法,多個表可以使用同一個路由算法。 <function name="func1"
          class="io.mycat.route.function.PartitionByFileMap"> <property
          name="mapFile">partition-hash-int.txt</property> </function> name:指定算法名稱
          class::指定路由算法具體類的名字 property:執(zhí)行具體算法需要用到的一些屬性。
          4.常用分片算法詳解

          ###1.枚舉分片:通過在配置文件中配置可能的枚舉id,自己配置分片,本規(guī)則適用于特定的場景,比如需要按照省份或區(qū)縣來做保存,而全國省份區(qū)縣是固定的,這類業(yè)務(wù)的配置規(guī)則如下
          <tableRule name="sharding-by-intfile"> <rule> <columns>user_id</columns>
          <algorithm>hash-int</algorithm> </rule> </tableRule> <function name="hash-int"
          class="io.mycat.route.function.PartitionByFileMap"> <property
          name="mapFile">partition-hash-int.txt</property> <property
          name="type">0</property> <property name="defaultNode">0</property> </function>
          partition-hash-int.txt 配置: 10000=0 121 10010=1 DEFAULT_NODE=1 ###2.固定hash分片算法
          本條規(guī)則類似于十進(jìn)制的求模運算,區(qū)別在于是二進(jìn)制的操作,是取 id 的二進(jìn)制低 10 位,即 id 二進(jìn)制 &1111111111。 此算法的優(yōu)點在于如果按照
          10 進(jìn)制取模運算,在連續(xù)插入 1-10 時候 1-10 會被分到 1-10 個分片,增
          大了插入的事務(wù)控制難度,而此算法根據(jù)二進(jìn)制則可能會分到連續(xù)的分片,減少插入事務(wù)事務(wù)控制難度。 ###3.范圍約定分片算法
          此分片適用于,提前規(guī)劃好分片字段某個范圍屬于哪個分片, ###4.取模分片算法 此規(guī)則為對分片字段求摸運算。 ###5.按日期(天)分片 此規(guī)則為按天分片。
          ###6.取模范圍約束分片算法 此種規(guī)則是取模運算與范圍約束的結(jié)合,主要為了后續(xù)數(shù)據(jù)遷移做準(zhǔn)備,即可以自主決定取模后數(shù)據(jù)的節(jié)點 分布。 ###7.截取數(shù)字做
          hash 求模范圍約束分片算法 ###8.應(yīng)用指定分片算法:此規(guī)則是在運行階段有應(yīng)用自主決定路由到那個分片。 ###9.截取數(shù)字 hash
          解析分片算法:此規(guī)則是截取字符串中的 int 數(shù)值 hash 分片。 ###10.一致性 hash:
          ###11.按單月小時拆分:此規(guī)則是單月內(nèi)按照小時拆分,最小粒度是小時,可以一天最多 24 個分片,最少 1 個分片,一個月完后下月
          從頭開始循環(huán)。每個月月尾,需要手工清理數(shù)據(jù)。 ###12.范圍求模分片:先進(jìn)行范圍分片計算出分片組,組內(nèi)再求模
          優(yōu)點可以避免擴容時的數(shù)據(jù)遷移,又可以一定程度上避免范圍分片的熱點問題
          綜合了范圍分片和求模分片的優(yōu)點,分片組內(nèi)使用求模可以保證組內(nèi)數(shù)據(jù)比較均勻,分片組之間是范圍分片可以 兼顧范圍查詢。
          最好事先規(guī)劃好分片的數(shù)量,數(shù)據(jù)擴容時按分片組擴容,則原有分片組的數(shù)據(jù)不需要遷移。由于分片組內(nèi)數(shù)據(jù)比 較均勻,所以分片組內(nèi)可以避免熱點數(shù)據(jù)問題。
          ###13.日期范圍 hash 分片 ###14.冷熱數(shù)據(jù)分片:根據(jù)日期查詢?nèi)罩緮?shù)據(jù) 冷熱數(shù)據(jù)分布 ,最近 n 個月的到實時交易庫查詢,超過 n 個月的按照
          m 天分片。 ###15.自然月分片:按月份列分區(qū) ,每個自然月一個分片,格式 between 操作解析的范例。
          ##注意:
          mycat全局表配置
          <table name="t_area" primaryKey="id" type="global" dataNode="dn1,dn2" />
          mycaER 分片表配置
          <table name="order" dataNode="dn$1-32" rule="mod-long"> <childTable
          name="order_detail" primaryKey="id" joinKey="order_id" parentKey="order_id" />
          </table>
          5.schema.xml配置文件

          schema.xml主要配置了,mycat的邏輯庫,邏輯表,分片規(guī)則,dataNode以及dataSource屬性。
          <schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100"></schema>
          參數(shù)說明查看官方說明文檔
          6.server標(biāo)簽詳解

          7.table標(biāo)簽詳解
          <table name="travelrecord" dataNode="dn1,dn2,dn3" rule="auto-sharding-long"
          ></table> Table 標(biāo)簽定義了 MyCat 中的邏輯表,所有需要拆分的表都需要在這個標(biāo)簽中定義。
          table 標(biāo)簽的相關(guān)屬性:
          name 屬性:定義邏輯表的表名,這個名字就如同我在數(shù)據(jù)庫中執(zhí)行 create table 命令指定的名字一樣,同個 schema 標(biāo)
          簽中定義的名字必須唯一。
          dataNode 屬性:定義這個邏輯表所屬的 dataNode, 該屬性的值需要和 dataNode 標(biāo)簽中 name 屬性的值相互對應(yīng)。
          rule 屬性:該屬性用于指定邏輯表要使用的規(guī)則名字,規(guī)則名字在 rule.xml 中定義,必須與 tableRule 標(biāo)簽中 name 屬
          性屬性值一一對應(yīng)。
          ruleRequired 屬性:該屬性用于指定表是否綁定分片規(guī)則,如果配置為 true,但沒有配置具體 rule 的話 ,程序會報錯。
          primaryKey 屬性:該邏輯表對應(yīng)真實表的主鍵,例如:分片的規(guī)則是使用非主鍵進(jìn)行分片的,那么在使用主鍵查詢的時候,就
          會發(fā)送查詢語句到所有配置的 DN 上,如果使用該屬性配置真實表的主鍵。難么 MyCat 會緩存主鍵與具體 DN 的
          信息,那么再次使用非主鍵進(jìn)行查詢的時候就不會進(jìn)行廣播式的查詢,就會直接發(fā)送語句給具體的 DN,但是盡管
          配置該屬性,如果緩存并沒有命中的話,還是會發(fā)送語句給具體的 DN,來獲得數(shù)據(jù)。
          type 屬性:該屬性定義了邏輯表的類型,目前邏輯表只有“全局表”和”普通表”兩種類型。
          autoIncrement 屬性:。。。。。。。。。
          subTables:使用方式添加 subTables="t_order$1-2,t_order3"。
          目前分表 1.6 以后開始支持 并且 dataNode 在分表條件下只能配置一個,分表條件下不支持各種條件的
          join 語句。
          needAddLimit 屬性:指定表是否需要自動的在每個語句后面加上 limit 限制。由于使用了分庫分表,數(shù)據(jù)量有時會特別巨大。這時
          候執(zhí)行查詢語句,如果恰巧又忘記了加上數(shù)量限制的話。那么查詢所有的數(shù)據(jù)出來,也夠等上一小會兒的。
          所以,mycat 就自動的為我們加上 LIMIT 100。當(dāng)然,如果語句中有 limit,就不會在次添加了。

          8.dataNode標(biāo)簽詳解
          <dataNode name="dn1" dataHost="lch3307" database="db1" ></dataNode> dataNode
          標(biāo)簽定義了 MyCat 中的數(shù)據(jù)節(jié)點,也就是我們通常說所的數(shù)據(jù)分片。一個 dataNode 標(biāo)簽就是 一個獨立的數(shù)據(jù)分片。
          dataNode 標(biāo)簽的相關(guān)屬性:
          name 屬性:定義數(shù)據(jù)節(jié)點的名字,這個名字需要是唯一的,我們需要在 table 標(biāo)簽上應(yīng)用這個名字,來建立表與分片對
          應(yīng)的關(guān)系。
          dataHost 屬性:該屬性用于定義該分片屬于哪個數(shù)據(jù)庫實例的,屬性值是引用 dataHost 標(biāo)簽上定義的 name 屬性
          database 屬性:該屬性用于定義該分片屬性哪個具體數(shù)據(jù)庫實例上的具體庫,因為這里使用兩個緯度來定義分片,就是:實
          例+具體的庫。因為每個庫上建立的表和表結(jié)構(gòu)是一樣的。所以這樣做就可以輕松的對表進(jìn)行水平拆分。

          9.dataHost標(biāo)簽詳解
          作為 Schema.xml 中最后的一個標(biāo)簽,該標(biāo)簽在 mycat 邏輯庫中也是作為最底層的標(biāo)簽存在,直接定義了具 體的數(shù)據(jù)庫實例、讀寫分離配置和心跳語句。
          <dataHost name="localhost1" maxCon="1000" minCon="10" balance="0" writeType="0"
          dbType="mysql" dbDriver="native"> <heartbeat>select user()</heartbeat> <!-- can
          have multi write hosts --> <writeHost host="hostM1" url="localhost:3306"
          user="root" password="123456"> <!-- can have multi read hosts --> <!--
          <readHost host="hostS1" url="localhost:3306" user="root" password="123456" />
          --> </writeHost> <!-- <writeHost host="hostM2" url="localhost:3316" user="root"
          password="123456"/> --> </dataHost>
          dataHost 標(biāo)簽的相關(guān)屬性
          name 屬性:唯一標(biāo)識 dataHost 標(biāo)簽,供上層的標(biāo)簽使用。
          maxCon 屬性:指定每個讀寫實例連接池的最大連接。也就是說,標(biāo)簽內(nèi)嵌套的 writeHost、readHost 標(biāo)簽都會使用這個屬
          性的值來實例化出連接池的最大連接數(shù)。
          minCon 屬性:指定每個讀寫實例連接池的最小連接,初始化連接池的大小。
          balance 屬性:負(fù)載均衡類型,目前的取值有 3 種:
          1. balance="0", 不開啟讀寫分離機制,所有讀操作都發(fā)送到當(dāng)前可用的 writeHost 上。 2. balance="1",全部的
          readHost 與 stand by writeHost 參與 select 語句的負(fù)載均衡,簡單的說,當(dāng)雙 主雙從模式(M1->S1,M2->S2,并且
          M1 與 M2 互為主備),正常情況下,M2,S1,S2 都參與 select 語句的負(fù)載 均衡。 3. balance="2",所有讀操作都隨機的在
          writeHost、readhost 上分發(fā)。 4. balance="3",所有讀請求隨機的分發(fā)到 wiriterHost 對應(yīng)的 readhost
          執(zhí)行,writerHost 不負(fù)擔(dān)讀壓 力,注意 balance=3 只在 1.4 及其以后版本有,1.3 沒有
          writeType 屬性:負(fù)載均衡類型,目前的取值有 3 種:
          1. writeType="0", 所有寫操作發(fā)送到配置的第一個 writeHost,第一個掛了切到還生存的第二個
          writeHost,重新啟動后已切換后的為準(zhǔn),切換記錄在配置文件中:dnindex.properties . 2.
          writeType="1",所有寫操作都隨機的發(fā) 送到配置的 writeHost,1.5 以后廢棄不推薦。switchType 屬 性 - -1
          表示不自動切換。 - 1 默認(rèn)值,自動切換。 - 2 基于 MySQL 主從同步的狀態(tài)決定是否切換。
          dbType 屬性:指定后端連接的數(shù)據(jù)庫類型,目前支持二進(jìn)制的 mysql 協(xié)議,還有其他使用 JDBC 連接的數(shù)據(jù)庫。
          dbDriver 屬性:指定連接后端數(shù)據(jù)庫使用的 Driver,目前可選的值有 native 和 JDBC。
          switchType 屬性:-1 表示不自動切換
          1 默認(rèn)值,自動切換 2 基于 MySQL 主從同步的狀態(tài)決定是否切換 心跳語句為 show slave status 3 基于 MySQL galary
          cluster 的切換機制(適合集群)(1.4.1) 心跳語句為 show status like ‘wsrep%’
          tempReadHostAvailable 屬性:如果配置了這個屬性 writeHost 下面的 readHost 仍舊可用,默認(rèn) 0 可配置(0、1)。

          其他標(biāo)簽及配置文件,請查看操作手冊文檔。

          友情鏈接
          ioDraw流程圖
          API參考文檔
          OK工具箱
          云服務(wù)器優(yōu)惠
          阿里云優(yōu)惠券
          騰訊云優(yōu)惠券
          京東云優(yōu)惠券
          站點信息
          問題反饋
          郵箱:[email protected]
          QQ群:637538335
          關(guān)注微信

                免费无遮挡 视频一挑二 | 青娱乐成人电影 | 日逼av网站 | 天天爽夜夜爽夜夜 | 日本三级做爰在线播放 |