1. 程式人生 > >Mycat 入門 分庫分表

Mycat 入門 分庫分表

對mycat 幾天的學習和了解,基本有了大致的方向,今天就把學習到的分享下:

主要的配置檔案:server.xml 、 schema.xml、rule.xml

環境搭建

JDK 部署(因為mycat 是基於java 開發),java 開發者都經過知道部署,目前我安裝的版本是jdk-8u71,需要安裝包的可以直接我郵箱 接下來是Mycat下載,

http://dl.mycat.io/1.6-RELEASE/    最穩定的是1.5版本,如果不需要特別使用到1.6的特性,1.5 版本就足夠了, 目前我使用的是1.6

解壓目錄結構(window 版本)



進入conf 目錄


準備工作做好後,接下來我們開始進行分庫分表的操作,這裡我是對每月資料進行水平拆分

schema.xml


mycatdemo 採用的是sharding-by-month分片策略,進行了dwn1-dwn12 分片

<table> 引數

在table引數配置中使用了rule="sharding-by-month"分片函式,當然資料節點的數目沒有限制,在生產環境避免重複重啟mycat這個節點的範圍大小最好配置超過1年

rule屬性,該屬性用於指定邏輯表要使用的規則名字,規則名字在rule.xml中定義,必須與tableRule標籤中name屬性屬性值一一對應

<datanode>引數

該屬性用於繫結邏輯庫到某個具體的database上,該屬性的值需要和dataNode標籤中name屬性的值相互對應

<datahost>引數

該屬性用於定義該分片屬於哪個資料庫例項的,屬性值是引用dataHost標籤上定義的name屬性。

Server.xml


password :密碼      schemas   資料庫名 必須和schemas 屬性中name 一致

rule.xml

初步設定好後我們開始建表建庫

在物理庫中建立名為wallettran1-wallettran12的資料庫
mysql> create database wallettran1
建立表
DROP TABLE IF EXISTS `mycatdemo`;
CREATE TABLE `mycatdemo` (
 `id` INT(11) NOT NULL COMMENT 'Id',
 `mycatname` VARCHAR(50) ,
 `createtime` DATETIME NOT NULL,
 PRIMARY KEY (`id`)

注意,這裡是對每個庫裡面新增相同的表結構

操作完後重啟mycat 服務,進入mycat ,會看到裡面除了自帶的庫和表以外,還會額外有一個之前已經定義好的庫和表,這個時候我們像該庫中的表去新增資料

INSERT INTO mycatdemo(mycatname,createtime)VALUES('ceshi1','2015-4-4 00:00:00');
INSERT INTO mycatdemo(mycatname,createtime)VALUES('ceshi1','2015-7-7 00:00:00');
INSERT INTO mycatdemo(mycatname,createtime)VALUES('ceshi1','2015-10-1 00:00:00');
INSERT INTO mycatdemo(mycatname,createtime)VALUES('ceshi1','2015-6-8 00:00:00');
INSERT INTO mycatdemo(mycatname,createtime)VALUES('ceshi1','2015-9-12 00:00:00');
INSERT INTO mycatdemo(mycatname,createtime)VALUES('ceshi1','2015-11-3 00:00:00');

這裡需要注意的是新增資料的時候一定要帶上欄位名,不然會報錯的

進入localhostuser0user3資料庫,檢視資料是否按照之前確定的規則寫入不同的資料庫。