Mycat 的原理:中最重要的一个动词是“拦截”,它拦截了用户发送过来的 SQL 语句,首先对 SQL 语句做了
一些特定的分析:如分片分析、路由分析、读写分离分析、缓存分析等,然后将此 SQL 发往后端的真实数据库,
并将返回的结果做适当的处理,最终再返回给用户。
前置操作
建库(userdb_1,userdb_2,userdb_3)
##建表
DROP TABLE IF EXISTS `user_info`;
CREATE TABLE `user_info` (
`name` varchar(255) COLLATE utf8_croatian_ci DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_croatian_ci;
枚举法:sharding-by-intfile
partition-hash-int.txt
文件里面有三个枚举值,分别代表不同的库,
wuhan 对应userdb_1库;shanghai对应userdb_2库;suzhou对应userdb_3库;
wuhan=0
shanghai=1
suzhou=2
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. -->
<!DOCTYPE mycat:rule SYSTEM "rule.dtd">
<mycat:rule xmlns:mycat="http://io.mycat/">
<!--
tableRule配置是
name 为schema.xml 中table 标签中对应的 rule="rule2" ,也就是配置表的分片规则,
columns 是表的切分字段: name
algorithm 是规则对应的切分规则:映射到functi