## **安裝環境分析**
兩臺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讀寫分離
- 基本命令
- 常見錯誤