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