<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      只為成功找方向,不為失敗找借口

      每天都不能停止前進的腳步
        博客園  :: 首頁  :: 新隨筆  :: 聯(lián)系 :: 訂閱 訂閱  :: 管理

      MyCat-schema.xml詳解

      Posted on 2018-08-20 15:10  冰碟  閱讀(13760)  評論(0)    收藏  舉報

      一、概念與圖示

       

      schema.xml配置的幾個術語與其關系圖示:

       

      二、schema 標簽

      schema 標簽用于定義 MyCat 實例中的邏輯庫,如:

      <schema name="USERDB" dataNode="dn1" checkSQLschema="false" sqlMaxLimit="100">

      1. name屬性

      配置邏輯庫的名字(即數(shù)據(jù)庫實例名);

      2. dataNode屬性

      用于配置該邏輯庫默認的分片。沒有通過table標簽配置的表,就會走到默認的分片上。這里注意沒有配置在table標簽的表,用工具查看是無法顯示的,但是可以正常使用。

      如果沒有配置dataNode屬性,則沒有配置在table標簽的表,是無法使用的。注意,dual表在mycat中,也被視為一個表。

      查詢:select sysdate() from dual LIMIT 0, 1000

       

      錯誤代碼: 1064

      can't find table define in schema DUAL schema:USERDB

      另外,通過mycat建表,而該表并沒有提前配置table標簽,則mycat會找到默認的dataNode,并把表建在默認的dataNode上。如果沒有配置默認dataNode,則mycat會報錯。

      查詢:create table test(id varchar(10))

      錯誤代碼: 1064

      op table not in schema----TEST

      而如果該表有配置table標簽,則表會分別在table標簽指定的dataNode上建表。

      3. checkSQLschema屬性

      boolean類型。

      當前端執(zhí)行【select *from USERDB.tf_user;】時(表名前指定了mycat邏輯庫名),兩種取值:

      true:mycat會把語句轉換為【select * from tf_user;】

      false:會報錯

      查詢:SELECT * FROM USERDB.tf_user LIMIT 0, 1000

      錯誤代碼: 1064

      find no Route:SELECT * FROM USERDB.tf_user LIMIT 0, 1000

      4. sqlMaxLimit屬性

      相當于sql的結果集中,加上【limit N】。如果sql本身已經(jīng)指定limit,則以sql指定的為準。

      mysql> explain select * from tf_user;

      +-----------+---------------------------------+

      | DATA_NODE | SQL |

      +-----------+---------------------------------+

      | dn1 | SELECT * FROM tf_user LIMIT 100 |

      | dn2 | SELECT * FROM tf_user LIMIT 100 |

      +-----------+---------------------------------+

      2 rows in set (0.00 sec)

       

      mysql> explain select * from tf_user limit 50;

      +-----------+--------------------------------+

      | DATA_NODE | SQL |

      +-----------+--------------------------------+

      | dn1 | SELECT * FROM tf_user LIMIT 50 |

      | dn2 | SELECT * FROM tf_user LIMIT 50 |

      +-----------+--------------------------------+

      2 rows in set (0.00 sec)

      注意,如果table標簽的表,needAddLimit屬性配置為false,則該表的sql禁止自動加上limit

       

      三、table 標簽

      table標簽為schema標簽的子標簽。

      table標簽用于定義Mycat的邏輯表,以及邏輯表的分片規(guī)則。如:

      <table name="tf_user" primaryKey="USER_ID" autoIncrement="true"dataNode="dn1,dn2" rule="hash-int" />

      1. name屬性

      邏輯表的表名,同一個schema表名必須唯一。

      2. dataNode屬性

      定義這個邏輯表所屬的 dataNode,用英文逗號間隔,如:dataNode="dn1,dn2"

      如果dataNode過多,可以使用如下的方法減少配置:

      <table name="travelrecord" dataNode="multipleDn$0-99,multipleDn2$100-199" rule="auto-shardinglong" ></table>

       

      <dataNode name="multipleDn" dataHost="localhost1" database="db$0-99" ></dataNode>

      <dataNode name="multipleDn2" dataHost="localhost1" database=" db$0-99" ></dataNode>

      db$0-99為mysql的數(shù)據(jù)庫,即從db0至db99的數(shù)據(jù)庫(100個)。

      3. rule屬性

      該屬性用于指定邏輯表要使用的規(guī)則名字,規(guī)則名字在 rule.xml 中定義,必須與 tableRule 標簽中 name 屬性屬性值一一對應。

      4. ruleRequired屬性

      該屬性用于指定表是否綁定分片規(guī)則,如果配置為 true,但沒有配置具體 rule 的話 ,程序會報錯

      5. primaryKey屬性

      指定該邏輯表對應真實表的主鍵。MyCat會緩存主鍵(通過primaryKey屬性配置)與具體 dataNode的信息。當分片規(guī)則使用非主鍵進行分片時,那么在使用主鍵進行查詢時,MyCat就會通過緩存先確定記錄在哪個dataNode上,然后再在該dataNode上執(zhí)行查詢。

      如果緩存并沒有命中的話,還是會發(fā)送語句給所有的dataNode。

      mysql> explain select * from employee where id=101;

      +-----------+-------------------------------------+

      | DATA_NODE | SQL |

      +-----------+-------------------------------------+

      | dn1 | select * from employee where id=101 |

      | dn2 | select * from employee where id=101 |

      +-----------+-------------------------------------+

      2 rows in set (0.00 sec)

       

      mysql> select * from employee where id=101;

      +-----+------+-------------+

      | id | name | sharding_id |

      +-----+------+-------------+

      | 101 | A | 10000 |

      +-----+------+-------------+

      1 row in set (0.01 sec)

       

      mysql> explain select * from employee where id=101;

      +-----------+-------------------------------------+

      | DATA_NODE | SQL |

      +-----------+-------------------------------------+

      | dn1 | select * from employee where id=101 |

      +-----------+-------------------------------------+

      1 row in set (0.00 sec)

      關于Mycat的主鍵緩存,其機制是:當根據(jù)主鍵查詢的SQL語句第一次執(zhí)行時,Mycat會對其結果進行分析,確定該主鍵在哪個分片上,并進行該主鍵到分片ID的緩存。通過連接MyCAT的9066管理端口,執(zhí)行show@@cache,可以顯示當前緩存的使用情況。可在sql執(zhí)行前后的2個時間點執(zhí)行show @@cache,通過結果信息中的LAST_PUT和LAST_ACCESS列,判斷相應表的緩存是否有被更新過。

      6. type屬性

      該屬性定義了邏輯表的類型,目前邏輯表只有“全局表”和”普通表”兩種類型。對應的配置:

      全局表:global。

      普通表:不指定該值為 global 的所有表。

      7. autoIncrement屬性

      8. subTables屬性

      分表配置,mycat1.6之后開始支持,但dataNode 在分表條件下只能配置一個。

      9. needAddLimit屬性

      與schema標簽的sqlMaxLimit配合使用,如果needAddLimit值為false,則語句不會加上limit

       

      四、childTable 標簽

      childTable 標簽用于定義 E-R 分片的子表。通過標簽上的屬性與父表進行關聯(lián)。

      1. name屬性

      定義子表的表名

      2. joinKey屬性

      插入子表的時候會使用這個列的值查找父表存儲的數(shù)據(jù)節(jié)點。

      3. parentKey屬性

      該屬性指定的值一般為與父表建立關聯(lián)關系的列名。Mycat首先獲取 joinkey 的值,再通過 parentKey 屬性指定的列名產生查詢語句,通過執(zhí)行該語句得到父表存儲在哪個分片上。從而確定子表存儲的位置。

      4. primaryKey屬性

      同table標簽描述。

      5. needAddLimit 屬性

      同table標簽描述。

       

      五、dataNode 標簽

      <dataNode name="dn1" dataHost="localhost1" database="mycatdb00" />

      1. name 屬性

      指定分片的名字

      2. dataHost 屬性

      定義該分片屬于哪個數(shù)據(jù)庫實例

      3. database 屬性

      定義該分片屬于哪個具體數(shù)據(jù)庫實例上的具體庫(即對應mysql中實際的DB)

       

      六、dataHost標簽

      定義后端的數(shù)據(jù)庫主機

      <dataHost name="localhost1" maxCon="1000" minCon="10" balance="0" writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">

      1. name 屬性

      指定dataHost的名字

      2. maxCon

      指定每個讀寫實例連接池的最大連接。也就是說,標簽內嵌套的writeHost、 readHost 標簽都會使用這個屬

      性的值來實例化出連接池的最大連接數(shù)。

      3. minCon 屬性

      指定每個讀寫實例連接池的最小連接,初始化連接池的大小。

      4. balance 屬性

      負載均衡類型:

      (1)balance="0", 不開啟讀寫分離機制,所有讀操作都發(fā)送到當前可用的writeHost 上。

      (2)balance="1",全部的 readHost 與 stand by writeHost 參與 select 語句的負載均衡,簡單的說,當雙主雙從模式(M1->S1,M2->S2,并且 M1 與 M2 互為主備),正常情況下,M2,S1,S2 都參與 select 語句的負載均衡。

      (3)balance="2",所有讀操作都隨機的在 writeHost、 readhost 上分發(fā)。

      (4)balance="3",所有讀請求隨機的分發(fā)到 wiriterHost 對應的 readhost 執(zhí)行,writerHost 不負擔讀壓力,注意 balance=3 只在 1.4 及其以后版本有,1.3 沒有。

      5. writeType 屬性

      (1)writeType="0", 所有寫操作發(fā)送到配置的第一個 writeHost,第一個掛了切到還生存的第二個riteHost,重新啟動后已切換后的為準,切換記錄在配置文件中:dnindex.properties.

      (2)writeType="1",所有寫操作都隨機的發(fā)送到配置的 writeHost,1.5 以后廢棄不推薦。

      6. dbType 屬性

      指定后端連接的數(shù)據(jù)庫類型,目前支持二進制的 mysql 協(xié)議,還有其他使用 JDBC 連接的數(shù)據(jù)庫。例如:mongodb、 oracle、 spark 等。

      7. dbDriver 屬性

      指定連接后端數(shù)據(jù)庫使用的 Driver,目前可選的值有 native 和 JDBC。使用native 的話,因為這個值執(zhí)行的是二進制的 mysql 協(xié)議,所以可以使用 mysql 和 maridb。其他類型的數(shù)據(jù)庫則需要使用 JDBC 驅動來支持。

      8. switchType 屬性

      -1 表示不自動切換

      1 默認值,自動切換

      2 基于 MySQL 主從同步的狀態(tài)決定是否切換

      心跳語句為 show slave status

      3 基于 MySQL galary cluster 的切換機制(適合集群)(1.4.1)

      心跳語句為 show status like ‘wsrep%’.

      9. tempReadHostAvailable 屬性

      如果配置了這個屬性 writeHost 下面的 readHost 仍舊可用,默認 0 可配置(0、 1)。

       

      七、writeHost 標簽、 readHost 標簽

      1. host 屬性

      用于標識不同實例,一般 writeHost 我們使用*M1,readHost 我們用*S1。

      2. url 屬性

      后端實例連接地址,如果是使用 native 的 dbDriver,則一般為 address:port 這種形式。用 JDBC 或其他的dbDriver,則需要特殊指定。當使用 JDBC 時則可以這么寫:jdbc:mysql://localhost:3306/。

      3. user 屬性

      后端存儲實例需要的用戶名字

      4. password 屬性

      后端存儲實例需要的密碼

      5. weight 屬性

      權重 配置在 readhost 中作為讀節(jié)點的權重(1.4 以后)

      6. usingDecrypt 屬性

      是否對密碼加密默認 0 否 如需要開啟配置 1,同時使用加密程序對密碼加密

      主站蜘蛛池模板: 成人乱码一区二区三区四区| 最新亚洲人成网站在线影院| 国产精品三级国产精品高| 亚洲av永久无码精品天堂久久| 日韩av一区二区精品不卡| av新版天堂在线观看| 亚欧洲乱码视频在线专区| 亚洲人成色99999在线观看| 国产乱国产乱老熟300部视频| 亚洲精品国产摄像头| 久久精品国产99久久丝袜| 69精品丰满人妻无码视频a片| 成人午夜在线观看日韩| 亚洲性猛交xxxx| 日日猛噜噜狠狠扒开双腿小说| 精品国产中文字幕av| 国产69精品久久久久乱码免费 | 久久久亚洲欧洲日产国码二区| 青草热在线观看精品视频| 亚洲在av极品无码天堂| 成人做受120秒试看试看视频| 中国china体内裑精亚洲日本 | 亚洲精品日韩久久精品| 大屁股国产白浆一二区| 欧美精品V欧洲精品| 极品无码国模国产在线观看| 少妇高潮水多太爽了动态图| 人妻系列无码专区免费| 五月婷久久麻豆国产| 亚洲www永久成人网站| 精品少妇爆乳无码aⅴ区| 精品视频一区二区| 亚洲中文字幕国产精品| 亚洲中文字幕伊人久久无码| 人妻无码av中文系列久| 91青青草视频在线观看的| 男女裸体影院高潮| 亚洲大尺度一区二区三区| 日本中文字幕有码在线视频| 耿马| 国产99久久亚洲综合精品西瓜tv|