## **安装环境分析**
两台mysql数据库服务器:
```
Host1:192.168.25.134
Host2:192.168.25.166
host1环境
操作系统版本 : centos7.4
数据库版本 : mysql-5.6
mycat版本 :1.6 release
数据库名 : db1、db3
mysql节点2环境
操作系统版本 : centos7.4
数据库版本 : mysql-5.6
mycat版本 :1.6 release
数据库名 : db2
MyCat安装到节点1上(需要安装jdk)
```
## **配置schema.xml**
```
Schema.xml介绍
Schema.xml作为MyCat中重要的配置文件之一,管理着MyCat的逻辑库、表、分片规则、DataNode以及DataSource。
弄懂这些配置,是正确使用MyCat的前提。这里就一层层对该文件进行解析。
```
> schema 标签用于定义MyCat实例中的逻辑库
> Table 标签定义了MyCat中的逻辑表
> dataNode 标签定义了MyCat中的数据节点,也就是我们通常说所的数据分片。
>
> dataHost标签在mycat逻辑库中也是作为最底层的标签存在,直接定义了具体的数据库实例、读写分离配置和心跳语句。
> 注意:若是LINUX版本的MYSQL,则需要设置为Mysql大小写不敏感,否则可能会发生表找不到的问题。
> 在MySQL的配置文件中/etc/my.cnf \[mysqld\] 中增加一行
> lower_case_table_names=1
**Schema.xml配置实例**
```
<mycat:schema xmlns:mycat="http://org.opencloudb/">
<schema name="e3mall" checkSQLschema="false" sqlMaxLimit="100">
<!-- auto sharding by id (long) -->
<table name="tb_item" dataNode="dn1,dn2,dn3" rule="auto-sharding-long" />
</schema>
<dataNode name="dn1" dataHost="localhost1" database="db1" />
<dataNode name="dn2" dataHost="localhost2" database="db2" />
<dataNode name="dn3" dataHost="localhost1" database="db3" />
<dataHost name="localhost1" maxCon="1000" minCon="10" balance="0"
writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">
<heartbeat>select user()</heartbeat>
<!-- can have multi write hosts -->
<writeHost host="hostM1" url="192.168.25.134:3306" user="root"
password="root">
<!-- can have multi read hosts -->
</writeHost>
</dataHost>
<dataHost name="localhost2" maxCon="1000" minCon="10" balance="0"
writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">
<heartbeat>select user()</heartbeat>
<!-- can have multi write hosts -->
<writeHost host="hostM1" url="192.168.25.166:3306" user="root"
password="root">
<!-- can have multi read hosts -->
</writeHost>
</dataHost>
</mycat:schema>
```
## **配置server.xml**
### Server.xml介绍
server.xml几乎保存了所有mycat需要的系统配置信息。最常用的是在此配置用户名、密码及权限
```
<mycat:server xmlns:mycat="http://io.mycat/">
<!-- 全局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="localhost" user="root"/>
</whitehost>
<blacklist check="false">
</blacklist>
</firewall>
<user name="root" defaultAccount="true">
<property name="password">123456</property>
<property name="schemas">BBC</property>
</user>
<user name="user">
<property name="password">user</property>
<property name="schemas">BBC</property>
<property name="readOnly">true</property>
</user>
</mycat:server>
```
## **配置rule.xml**
> rule.xml里面就定义了我们对表进行拆分所涉及到的规则定义。我们可以灵活的对表使用不同的分片算法,或者对表使用相同的算法但具体的参数不同。这个文件里面主要有tableRule和function这两个标签。在具体使用过程中可以按照需求添加tableRule和function。
## **测试分片**
### **创建表**
配置完毕后,重新启动mycat。使用mysql客户端连接mycat,创建表。
> DROP TABLE IF EXISTS `tb_item`;
>
> CREATE TABLE `tb_item` (
>
> `id` bigint(20) NOT NULL COMMENT '商品id,同时也是商品编号',
>
> `title` varchar(100) NOT NULL COMMENT '商品标题',
>
> `sell_point` varchar(500) DEFAULT NULL COMMENT '商品卖点',
>
> `price` bigint(20) NOT NULL COMMENT '商品价格,单位为:分',
>
> `num` int(10) NOT NULL COMMENT '库存数量',
>
> `barcode` varchar(30) DEFAULT NULL COMMENT '商品条形码',
>
> `image` varchar(500) DEFAULT NULL COMMENT '商品图片',
>
> `cid` bigint(10) NOT NULL COMMENT '所属类目,叶子类目',
>
> `status` tinyint(4) NOT NULL DEFAULT '1' COMMENT '商品状态,1-正常,2-下架,3-删除',
>
> `created` datetime NOT NULL COMMENT '创建时间',
>
> `updated` datetime NOT NULL COMMENT '更新时间',
>
> PRIMARY KEY (`id`),
>
> KEY `cid` (`cid`),
>
> KEY `status` (`status`),
>
> KEY `updated` (`updated`)
>
> ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='商品表';
### **插入数据**
将此文件中的数据插入到数据库:
### **分片测试**
```
由于配置的分片规则为“auto-sharding-long”,所以mycat会根据此规则自动分片。
每个datanode中保存一定数量的数据。根据id进行分片
经测试id范围为:
Datanode1:1~5000000
Datanode2:5000000~10000000
Datanode3:10000001~15000000
当15000000以上的id插入时报错:
[Err] 1064 - can't find any valid datanode :TB_ITEM -> ID -> 15000001
```
- 序言
- 系统要求
- 版本更新日志
- 远丰商城技术对接说明
- 开发指导
- 系统架构
- 负载集群
- 云存储
- 框架内容
- 基础
- 开发规范
- 目录结构
- 架构
- 架构总览
- 数据库
- 数据库连接
- 基本使用
- 缓存
- 配置
- 路由
- 数据字典
- ucenter
- shop
- paycenter
- ucenter_admin
- shop_admin
- paycenter_admin
- shop1
- shop2
- shop3
- 通讯内容
- 商家中心
- 顶部导航栏
- 店铺信息栏
- 店铺及商品提示栏
- 交易提示栏
- 销售情况统计栏
- 集群架构图
- 单品销量排行栏
- 店铺运营推广栏
- 平台联系方式栏
- 订单物流
- 商品
- 商品列表
- 商品详情
- 商品发布与编辑
- 分销商品
- 关联版式
- 商品规格
- 图片空间
- 淘宝导入
- 订单流程
- 交易订单
- 订单退款/退货
- 促销
- 团购管理
- 加价购
- 限时折扣
- 满即送
- 代金券管理
- 分销
- 店铺
- 店铺设置
- 自销产品供应商
- 实体店铺
- 品牌申请
- 店铺信息
- 消费者保障服务
- 门店账号
- 分销商--产品供应商
- 分销明细
- 批发市场
- 商家微信公众号
- 售后服务
- 咨询管理
- 投诉管理
- 退款管理
- 退货管理
- 杂项
- 远程上传图片
- 接口(废弃,参考最外层接口项)
- 接口说明
- 品牌
- 商品规格
- 商品类型
- 商品分类
- 商品
- 订单
- 商品/店铺收藏
- 足迹
- 退款及退货
- 商家店铺
- 会员
- 入驻协议
- 订单接口
- 商品接口
- 订单物流接口
- 商家中心接口
- 促销接口
- 快递鸟物流接口
- 代金券接口
- 首页版块
- 团购
- 平台红包
- 限时折扣接口
- 拼团接口
- wap首页模板
- JS
- 银联支付
- 多语言
- 商品评分
- 图片加载
- 买家申请退款退货
- 商家退款退货
- 平台退款退货
- 添加发票
- 提交订单
- 确认订单
- 运费销售区域
- 获取会员地址
- 充值
- 导出XLS
- 商城系统集成
- 多语言实现
- 三级分销推广链接发展推广员
- app.ini.php
- 去分销
- 版本更新
- 物流支持
- 运营人员建议
- 业务逻辑
- 统计结算
- 客服消息
- 账号
- 三级分销
- IM
- 配置
- 平台帐号
- 活动数据表说明
- 接口
- 数据库中间键
- MyCat的优势
- 概念说明
- Mycat的下载及安装
- 参数配置案列
- Mycat读写分离
- 基本命令
- 常见错误