<?xml version="1.0" encoding="UTF-8"?><!-- - - Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License. - You
may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0
- - Unless required by applicable law or agreed to in writing, software -
distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT
WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the
License for the specific language governing permissions and - limitations
under the License. --><!DOCTYPEmycat:serverSYSTEM"server.dtd"><mycat:serverxmlns:mycat="http://io.mycat/"><system><propertyname="nonePasswordLogin">0</property><!-- 0为需要密码登陆、1为不需要密码登陆 ,默认为0,设置为1则需要指定默认账户--><propertyname="ignoreUnknownCommand">0</property><!-- 0遇上没有实现的报文(Unknown command:),就会报错、1为忽略该报文,返回ok报文。
在某些mysql客户端存在客户端已经登录的时候还会继续发送登录报文,mycat会报错,该设置可以绕过这个错误--><propertyname="useHandshakeV10">1</property><propertyname="removeGraveAccent">1</property><propertyname="useSqlStat">0</property><!-- 1为开启实时统计、0为关闭 --><propertyname="useGlobleTableCheck">0</property><!-- 1为开启全加班一致性检测、0为关闭 --><propertyname="sqlExecuteTimeout">300</property><!-- SQL 执行超时 单位:秒--><propertyname="sequenceHandlerType">1</property><!--<property name="sequnceHandlerPattern">(?:(\s*next\s+value\s+for\s*MYCATSEQ_(\w+))(,|\)|\s)*)+</property>
INSERT INTO `travelrecord` (`id`,user_id) VALUES ('next value for MYCATSEQ_GLOBAL',"xxx");
--><!--必须带有MYCATSEQ_或者 mycatseq_进入序列匹配流程 注意MYCATSEQ_有空格的情况--><propertyname="sequnceHandlerPattern">(?:(\s*next\s+value\s+for\s*MYCATSEQ_(\w+))(,|\)|\s)*)+</property><propertyname="subqueryRelationshipCheck">false</property><!-- 子查询中存在关联查询的情况下,检查关联字段中是否有分片字段 .默认 false --><propertyname="sequenceHanlderClass">io.mycat.route.sequence.handler.HttpIncrSequenceHandler</property><!-- <property name="useCompression">1</property>--><!--1为开启mysql压缩协议--><!-- <property name="fakeMySQLVersion">5.6.20</property>--><!--设置模拟的MySQL版本号--><!-- <property name="processorBufferChunk">40960</property> --><!--
<property name="processors">1</property>
<property name="processorExecutor">32</property>
--><!--默认为type 0: DirectByteBufferPool | type 1 ByteBufferArena | type 2 NettyBufferPool --><propertyname="processorBufferPoolType">0</property><!--默认是65535 64K 用于sql解析时最大文本长度 --><!--<property name="maxStringLiteralLength">65535</property>--><!--<property name="sequenceHandlerType">0</property>--><!--<property name="backSocketNoDelay">1</property>--><!--<property name="frontSocketNoDelay">1</property>--><!--<property name="processorExecutor">16</property>--><!--
<property name="serverPort">8066</property> <property name="managerPort">9066</property>
<property name="idleTimeout">300000</property> <property name="bindIp">0.0.0.0</property>
<property name="dataNodeIdleCheckPeriod">300000</property> 5 * 60 * 1000L; //连接空闲检查
<property name="frontWriteQueueSize">4096</property> <property name="processors">32</property> --><!--分布式事务开关,0为不过滤分布式事务,1为过滤分布式事务(如果分布式事务内只涉及全局表,则不过滤),2为不过滤分布式事务,但是记录分布式事务日志--><propertyname="handleDistributedTransactions">0</property><!--
off heap for merge/order/group/limit 1开启 0关闭
--><propertyname="useOffHeapForMerge">0</property><!--
单位为m
--><propertyname="memoryPageSize">64k</property><!--
单位为k
--><propertyname="spillsFileBufferSize">1k</property><propertyname="useStreamOutput">0</property><!--
单位为m
--><propertyname="systemReserveMemorySize">384m</property><!--是否采用zookeeper协调切换 --><propertyname="useZKSwitch">false</property><!-- XA Recovery Log日志路径 --><!--<property name="XARecoveryLogBaseDir">./</property>--><!-- XA Recovery Log日志名称 --><!--<property name="XARecoveryLogBaseName">tmlog</property>--><!--如果为 true的话 严格遵守隔离级别,不会在仅仅只有select语句的时候在事务中切换连接--><propertyname="strictTxIsolation">false</property><!--如果为0的话,涉及多个DataNode的catlet任务不会跨线程执行--><propertyname="parallExecute">0</property></system><!-- 全局SQL防火墙设置 --><!--白名单可以使用通配符%或着*--><!--例如<host host="127.0.0.*" user="root"/>--><!--例如<host host="127.0.*" user="root"/>--><!--例如<host host="127.*" user="root"/>--><!--例如<host host="1*7.*" user="root"/>--><!--这些配置情况下对于127.0.0.1都能以root账户登录--><!--
<firewall>
<whitehost>
<host host="1*7.0.0.*" user="root"/>
</whitehost>
<blacklist check="false">
</blacklist>
</firewall>
--><username="root"defaultAccount="true"><propertyname="password">123456</property><propertyname="schemas">db01</property><!--No MyCAT Database selected 错误前会尝试使用该schema作为schema,不设置则为null,报错 --><!-- 表级 DML 权限设置 --><!--
<privileges check="false">
<schema name="TESTDB" dml="0110" >
<table name="tb01" dml="0000"></table>
<table name="tb02" dml="1111"></table>
</schema>
</privileges>
--></user><username="user"><propertyname="password">user</property><propertyname="schemas">db01</property><propertyname="readOnly">true</property></user></mycat:server>
mycat/conf/rule.xml
<?xml version="1.0" encoding="UTF-8"?><!-- - - Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License. - You
may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0
- - Unless required by applicable law or agreed to in writing, software -
distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT
WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the
License for the specific language governing permissions and - limitations
under the License. --><!DOCTYPEmycat:ruleSYSTEM"rule.dtd"><mycat:rulexmlns:mycat="http://io.mycat/"><tableRulename="rule1"><rule><columns>id</columns><algorithm>func1</algorithm></rule></tableRule><tableRulename="sharding-by-date"><rule><columns>createTime</columns><algorithm>partbyday</algorithm></rule></tableRule><tableRulename="rule2"><rule><columns>user_id</columns><algorithm>func1</algorithm></rule></tableRule><tableRulename="sharding-by-intfile"><rule><columns>sharding_id</columns><algorithm>hash-int</algorithm></rule></tableRule><tableRulename="auto-sharding-long"><rule><columns>id</columns><algorithm>rang-long</algorithm></rule></tableRule><tableRulename="mod-long"><rule><columns>id</columns><algorithm>mod-long</algorithm></rule></tableRule><tableRulename="sharding-by-murmur"><rule><columns>id</columns><algorithm>murmur</algorithm></rule></tableRule><tableRulename="crc32slot"><rule><columns>id</columns><algorithm>crc32slot</algorithm></rule></tableRule><tableRulename="sharding-by-month"><rule><columns>create_time</columns><algorithm>partbymonth</algorithm></rule></tableRule><tableRulename="latest-month-calldate"><rule><columns>calldate</columns><algorithm>latestMonth</algorithm></rule></tableRule><tableRulename="auto-sharding-rang-mod"><rule><columns>id</columns><algorithm>rang-mod</algorithm></rule></tableRule><tableRulename="jch"><rule><columns>id</columns><algorithm>jump-consistent-hash</algorithm></rule></tableRule><functionname="murmur"class="io.mycat.route.function.PartitionByMurmurHash"><propertyname="seed">0</property><!-- 默认是0 --><propertyname="count">2</property><!-- 要分片的数据库节点数量,必须指定,否则没法分片 --><propertyname="virtualBucketTimes">160</property><!-- 一个实际的数据库节点被映射为这么多虚拟节点,默认是160倍,也就是虚拟节点数是物理节点数的160倍 --><!-- <property name="weightMapFile">weightMapFile</property> 节点的权重,没有指定权重的节点默认是1。以properties文件的格式填写,以从0开始到count-1的整数值也就是节点索引为key,以节点权重值为值。所有权重值必须是正整数,否则以1代替 --><!-- <property name="bucketMapPath">/etc/mycat/bucketMapPath</property>
用于测试时观察各物理节点与虚拟节点的分布情况,如果指定了这个属性,会把虚拟节点的murmur hash值与物理节点的映射按行输出到这个文件,没有默认值,如果不指定,就不会输出任何东西 --></function><functionname="crc32slot"class="io.mycat.route.function.PartitionByCRC32PreSlot"><propertyname="count">2</property><!-- 要分片的数据库节点数量,必须指定,否则没法分片 --></function><functionname="hash-int"class="io.mycat.route.function.PartitionByFileMap"><propertyname="mapFile">partition-hash-int.txt</property></function><functionname="rang-long"class="io.mycat.route.function.AutoPartitionByLong"><propertyname="mapFile">autopartition-long.txt</property></function><functionname="mod-long"class="io.mycat.route.function.PartitionByMod"><!-- how many data nodes --><propertyname="count">3</property></function><functionname="func1"class="io.mycat.route.function.PartitionByLong"><propertyname="partitionCount">8</property><propertyname="partitionLength">128</property></function><functionname="latestMonth"class="io.mycat.route.function.LatestMonthPartion"><propertyname="splitOneDay">24</property></function><functionname="partbymonth"class="io.mycat.route.function.PartitionByMonth"><propertyname="dateFormat">yyyy-MM-dd</property><propertyname="sBeginDate">2015-01-01</property></function><functionname="partbyday"class="io.mycat.route.function.PartitionByDate"><propertyname="dateFormat">yyyy-MM-dd</property><propertyname="sNaturalDay">0</property><propertyname="sBeginDate">2014-01-01</property><propertyname="sEndDate">2014-01-31</property><propertyname="sPartionDay">10</property></function><functionname="rang-mod"class="io.mycat.route.function.PartitionByRangeMod"><propertyname="mapFile">partition-range-mod.txt</property></function><functionname="jump-consistent-hash"class="io.mycat.route.function.PartitionByJumpConsistentHash"><propertyname="totalBuckets">3</property></function></mycat:rule>