mycat使用详解
MyCat支持9种分片策略
求模算法
分片枚举
范围约定
日期指定
固定分片hash算法
通配取模
ASCII码求模通配
编程指定
字符串拆分hash解析
1. server.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mycat:server SYSTEM "server.dtd"> <mycat:server xmlns:mycat="http://io.mycat/"> <system> <!-- 1为开启实时统计、0为关闭 --> <property name="useSqlStat">0</property> <!-- 1为开启全局一致性检测、0为关闭 --> <property name="useGlobleTableCheck">0</property> <!-- 0 表示是表示使用本地文件方式。1 表示的是根据数据库来生成。2 表示时间戳的方式 ID= 64 位二进制 (42(毫秒)+5(机器 ID)+5(业务编码)+12(重复累加) --> <property name="sequnceHandlerType">2</property> <!--默认为type 0: DirectByteBufferPool | type 1 ByteBufferArena | type 2 NettyBufferPool --> <property name="processorBufferPoolType">0</property> <!--分布式事务开关,0为不过滤分布式事务,1为过滤分布式事务(如果分布式事务内只涉及全局表,则不过滤),2为不过滤分布式事务,但是记录分布式事务日志--> <property name="handleDistributedTransactions">0</property> <!--off heap for merge/order/group/limit 1开启 0关闭--> <property name="useOffHeapForMerge">1</property> <!--单位为m--> <property name="memoryPageSize">1m</property> <!--单位为k--> <property name="spillsFileBufferSize">1k</property> <property name="useStreamOutput">0</property> <!-- 单位为m --> <property name="systemReserveMemorySize">384m</property> <!--是否采用zookeeper协调切换 --> <property name="useZKSwitch">true</property> </system> <!-- 连接MyCat库的用户名和密码 --> <user name="root"> <property name="password">123456</property> <property name="schemas">TESTDB</property> </user> <user name="user"> <property name="password">user</property> <property name="schemas">TESTDB</property> <property name="readOnly">true</property> </user> </mycat:server>
2. schema.xml
<?xml version="1.0"?> <!DOCTYPE mycat:schema SYSTEM "schema.dtd"> <mycat:schema xmlns:mycat="http://io.mycat/"> <!-- name:逻辑数据库名 checkSQLschema:把schema的字符去掉 sqlMaxLimit:减少过多的数据返回--> <schema name="ball" checkSQLschema="false" sqlMaxLimit="100"> <!-- name:逻辑表表名 primaryKey:逻辑表对应真实表的主键 autoIncrement:主键自增长 dataNode:逻辑表所属的dataNode rule:逻辑表使用的规则名字 --> <table name="db_trading" primaryKey="id" autoIncrement="true" subTables="db_trading$1-15" dataNode="dn1" rule="mod-long"/> </schema> <!-- name:数据节点名 dataHost:该分片属于哪个数据库实例 database:定义该分片属性哪个具体数据库实例上的具体库 --> <dataNode name="dn1" dataHost="localhost1" database="ball" /> <!-- name:数据库实例名 --> <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="hostM1" url="192.168.52.10:3306" user="root" password="Yifan123."> <!-- 读实例 --> <readHost host="hostS2" url="192.168.52.10:3306" user="root" password="Yifan123." /> </writeHost> </dataHost> </mycat:schema>
3. rule.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mycat:rule SYSTEM "rule.dtd"> <mycat:rule xmlns:mycat="http://io.mycat/"> <!-- name:定义表规则名 --> <tableRule name="mod-long"> <rule> <!-- 指定对物理表中的哪一列进行拆分 --> <columns>id</columns> <!-- 使用什么路由算法 --> <algorithm>mod-long</algorithm> </rule> </tableRule> <!-- name 指定算法的名字 class 制定路由算法具体的类名字 --> <function name="mod-long" class="io.mycat.route.function.PartitionByMod"> <!-- property 为具体算法需要用到的一些属性。 --> <property name="count">3</property> </function> </mycat:rule>
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了