Mycat1.6 配置手册
Mycat1.6 有三个核心配置文件:server.xml、schema.xml 和 rule.xml,均位于 conf/ 目录下。
1. server.xml - 系统配置
1.1 系统参数
<system>
<property name="defaultSqlParser">druidparser</property>
<property name="charset">utf8</property>
<property name="processorBufferChunk">4096</property>
<property name="processors">32</property>
<property name="processorExecutor">32</property>
<property name="sequnceHandlerType">2</property>
<property name="useGlobleTableCheck">0</property>
<property name="handleDistributedTransactions">0</property>
<property name="useOffHeapForMerge">1</property>
<property name="memoryPageSize">1m</property>
<property name="spillsFileBufferSize">1K</property>
<property name="useStreamOutput">0</property>
<property name="systemReserveMemorySize">384m</property>
</system>
| 参数 | 默认值 | 说明 |
| defaultSqlParser | druidparser | SQL解析器类型 |
| charset | utf8 | 字符集 |
| processors | CPU核心数 | 业务线程数 |
| processorExecutor | 32 | 辅助线程数 |
| sequnceHandlerType | 2 | 全局序列类型: 0本地文件、1数据库、2时间戳、3ZK、4雪花 |
| handleDistributedTransactions | 0 | 0不处理、1弱XA、2强XA |
| useOffHeapForMerge | 1 | 是否使用堆外内存进行跨分片结果合并 |
1.2 用户配置
<user name="root">
<property name="password">123456</property>
<property name="schemas">TESTDB,db1,db2</property>
<property name="defaultSchema">TESTDB</property>
<property name="benchmark">100</property>
</user>
2. schema.xml - 数据库配置
2.1 Schema 节点
<schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1">
<table name="customer" dataNode="dn1,dn2" rule="sharding-by-intfile" />
<table name="orders" dataNode="dn1,dn2" rule="mod-long">
<childTable name="orders_items" primaryKey="id" joinKey="order_id" parentKey="id" />
</table>
<table name="hotnews" type="global" dataNode="dn1,dn2" />
</schema>
| 属性 | 说明 |
| name | 逻辑库名称 |
| checkSQLschema | 是否检查SQL中的schema信息 |
| sqlMaxLimit | SQL默认limit值 |
| dataNode | 该Schema默认数据节点 |
2.2 Table 节点
| 属性 | 说明 |
| name | 逻辑表名称 |
| dataNode | 数据节点(多个逗号分隔) |
| rule | 分片规则名称 |
| type | global(全局表) 或 省略(分片表) |
| primaryKey | 主键 |
| autoIncrement | 是否自增 |
| needAddLimit | 是否自动添加limit |
2.3 DataNode 节点
<dataNode name="dn1" dataHost="localhost1" database="db1" />
<dataNode name="dn2" dataHost="localhost1" database="db2" />
2.4 DataHost 节点
<dataHost name="localhost1" maxCon="1000" minCon="10" balance="0"
writeType="0" dbType="mysql" dbDriver="native" switchType="1">
<heartbeat>select user()</heartbeat>
<writeHost host="hostM1" url="192.168.1.100:3306" user="root" password="123456">
<readHost host="hostS1" url="192.168.1.101:3306" user="root" password="123456" />
</writeHost>
</dataHost>
| 属性 | 说明 |
| balance | 0不开启读写分离、1全部跟随、2所有操作随机分发 |
| writeType | 0所有写节点都写、1随机一个写节点写 |
| switchType | -1不自动切换、1自动切换、2基于MySQL主从同步状态切换 |
| dbDriver | native(原生) 或 jdbc |
| maxCon | 最大连接数 |
| minCon | 最小连接数 |
3. rule.xml - 分片规则配置
<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>
| 属性 | 说明 |
| tableRule.name | 规则名称,在schema.xml中引用 |
| columns | 分片键(列名) |
| algorithm | 分片函数名称 |
| function.class | 分片算法实现类 |
| property | 分片函数参数 |
4. 全局序列配置
# 方式1: 本地文件 (sequnceHandlerType=0)
# conf/myid.properties
# 使用 conf/sequence_conf.properties 配置各表序列
# 方式2: 数据库方式 (sequnceHandlerType=1)
# 在MySQL创建 MYCAT_SEQUENCE 表
CREATE TABLE MYCAT_SEQUENCE (
name VARCHAR(50) NOT NULL,
current_value INT NOT NULL,
increment INT NOT NULL DEFAULT 1,
PRIMARY KEY(name)
);
# 方式3: 时间戳方式 (sequnceHandlerType=2)
# 默认使用雪花算法,无需额外配置
提示: 配置文件修改后,可以使用管理端口执行 reload @@config_all; 热加载配置,无需重启Mycat。