mycat單庫分表


mycat 分表原理,是在原有分片的基礎上把原來分片的路由改寫為改寫sql:

     例如對於取模,分為3個片的配置:

 

      分庫模式下是:insert into table(xxx)values(1,name);

       router:{

           node1:insert into table(xxx)values(1,name) ,datanode1,

           node2:insert into table(xxx)values(2,name) ,datanode2,

           node3:insert into table(xxx)values(3,name) ,datanode3,

       },

        

        分表模式是: insert into table(xxx)values(1,name);

 

       router:{

           node1:insert into table1(xxx)values(1,name) ,datanode1,

           node2:insert into table2(xxx)values(2,name) ,datanode1,

           node3:insert into table3(xxx)values(3,name) ,datanode1,

       },

 

 

 

由於1.6已經是release,現有的1.6分支當作1.6.5開發,導致無法修改,因此使用分表只能用替換class或者jar的方式:

 

替換class(可以用於生產基於1.6release):classes\io\mycat\route\function, 附件:http://songwie.com/attached/mycat/AbstractPartitionAlgorithm.class

   

替換jar:lib目錄下mycat-server:(基於1.6.5開發板)http://songwie.com/attached/mycat/Mycat-server-1.6.5-DEV.jar

 

----------------------------------------------------------

 

配置為:

scheml:

 

<schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100"> 
 <table name="travelrecord" subTables="travelrecord$1-3" dataNode="dn1" rule="mod-long" /> 
</schema> 
<dataNode name="dn1" dataHost="localhost1" database="mycat" /> 
<dataHost name="localhost1" maxCon="1000" minCon="10" balance="0"  writeType="0" dbType="mysql" 
 dbDriver="native" switchType="1" slaveThreshold="100"> 
 <heartbeat>select user()</heartbeat> <writeHost host="hostS1" url="localhost:3306" user="root" password="123456" /> 
</dataHost>

 

rule配置:

 

<tableRule name="mod-long"> <rule> <columns>id</columns> 
 <algorithm>mod-long</algorithm> </rule> </tableRule> 
 <function name="mod-long" class="io.mycat.route.function.PartitionByMod">
             <property name="count">3</property>
       </function>

 

 

注意:目前只做到單庫分表,多庫分表還不支持,可能會在1.6.5支持,

分表模式下只能配置一個dataNode,同時添加

subTables="travelrecord$1-3" 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM