Mycat - 配置

Mycat -概述mysql

安裝 

下載地址: http://dl.mycat.io/sql

下載tree可展現目錄樹形結構mongodb

yum -y install tree

tree /usr/local/mycat

設置MYCAT_HOME的變量vim

vim /etc/profile

使/etc/profile文件生效生效  <!$ 指代上次操做過的路徑>session

source !$

 

schema.xml 配置

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">

<mycat:schema xmlns:mycat="http://io.mycat/">  
  <schema name="testMyCat" checkSQLschema="false" sqlMaxLimit="100"> 
    <!-- auto sharding by id (long) -->  
    <table name="t_test_mycat1" primaryKey="ID" type="global" dataNode="dn1,dn2"/>  
    <table name="t_test_mycat2" primaryKey="ID" dataNode="dn1,dn2" rule="auto-sharding-long"> 
      <childTable name="mycat2_order" primaryKey="ID" autoIncrement="true" joinKey="account_id" parentKey="id"> 
        <childTable name="mycat2_order_items" joinKey="order_id" parentKey="id"/> 
      </childTable> 
    </table>  
    <!-- <table name="oc_call" primaryKey="ID" dataNode="dn1$0-743" rule="latest-month-calldate" /> --> 
  </schema>  
  <dataNode name="dn1" dataHost="test" database="testMycat1"/>  
  <dataNode name="dn2" dataHost="test" database="testMycat2"/>  
  <dataHost name="test" maxCon="1000" minCon="10" balance="3" writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100"> 
    <heartbeat>select user()</heartbeat>  
    <!-- can have multi write hosts -->  
    <writeHost host="hostM1" url="172.30.1.51:3306" user="h2finance" password="h2finance"> 
      <!-- can have multi read hosts -->  
      <readHost host="hostS1" url="172.30.1.52:3306" user="h2finance" password="h2finance"/> 
    </writeHost>  
    <!-- <writeHost host="hostM2" url="localhost:3316" user="root" password="123456"/> --> 
  </dataHost>  
  <!--  
  <dataHost name="sequoiadb1" maxCon="1000" minCon="1" balance="0" dbType="sequoiadb" dbDriver="jdbc"> 
    <heartbeat></heartbeat>  
    <writeHost host="hostM1" url="sequoiadb://1426587161.dbaas.sequoialab.net:11920/SAMPLE" user="jifeng" password="jifeng"/> 
  </dataHost>  
  <dataHost name="oracle1" maxCon="1000" minCon="1" balance="0" writeType="0" dbType="oracle" dbDriver="jdbc"> 
    <heartbeat>select 1 from dual</heartbeat>  
    <connectionInitSql>alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss'</connectionInitSql>  
    <writeHost host="hostM1" url="jdbc:oracle:thin:@127.0.0.1:1521:nange" user="base" password="123456"></writeHost> 
  </dataHost>  
  <dataHost name="jdbchost" maxCon="1000" minCon="1" balance="0" writeType="0" dbType="mongodb" dbDriver="jdbc"> 
    <heartbeat>select user()</heartbeat>  
    <writeHost host="hostM" url="mongodb://192.168.0.99/test" user="admin" password="123456"/> 
  </dataHost>  
  <dataHost name="sparksql" maxCon="1000" minCon="1" balance="0" dbType="spark" dbDriver="jdbc"> 
    <heartbeat></heartbeat>  
    <writeHost host="hostM1" url="jdbc:hive2://feng01:10000" user="jifeng" password="jifeng"/> 
  </dataHost> 
  <dataHost name="jdbchost" maxCon="1000" minCon="10" balance="0" dbType="mysql" dbDriver="jdbc"> 
    <heartbeat>select user()</heartbeat>  
    <writeHost host="hostM1" url="jdbc:mysql://localhost:3306" user="root" password="123456"></writeHost> 
  </dataHost> 
 --> 
</mycat:schema>

問題

解決oracle

 設置的dataNode 與 rule.xml中對應的function配置文件中的partition配置衝突。app

上例中dataNode配了2個,則在配置文件autopartition-long.txt中修改:url


 

Server.xml 配置

開啓實時統計,便於後期安裝mycat-eye的監測spa

使得生效.net

問題

解決

配置用戶的schema的權限


 

驗證

  1. mycat 會根據schema.xml中 的<schema>、<table>配置信息生成database及表。

    realmycat 
    即便真實mysql庫中沒有表,也會有視圖,可是點擊報錯。

  2. mycat 與配置的實際IP心跳依次循環檢測鏈接(schema.xml中<dataHost>下的<heartbeat>)。當datebase或table不全或不存在時報錯。

    cat logs/mycat.log 
    cat logs/wrapper.log


    都沒有,Error;  部分缺失: WARN。都無法提供服務!因此: 各庫的表結構須要一致。

  3. 當Mycat與全部的Mysql都啓動時:
    在Mycat中修改表結構將馬上同步到真實Database; 但直接修改部分真實Database將致使Mycat處於不穩定視圖狀態(根據當前mycat connect到哪一個host)
     
  4. t_test_mycat1在schema.xml 設置爲global類型且不須要設置rule:表示不分庫, 在各dataNode中都會保存相同數據;
  5. 須要按指定的rule分庫就必須不配置type=global;  t_test_mycat2指定了rule,最終按autopartition-long.txt 中設置策略分庫。


    dn1:dn2:mycat:
  6. mycat2_order 、 mycat2_order_items 配置爲childTable, 與主表保存在一個庫中,方便查詢不跨庫。根據joinKey對應的parentKey適用分庫規則<即便parentKey在主表中不存在,>。
    mycat2_order :
    dn1:dn2:mycat:
     mycat2_order_items:  將斷定root的parentKey是否存在。
相關文章
相關標籤/搜索