window環境下運行的Mycat入門教程:拓撲結構

mycat介紹

介紹在官方網站上有比較詳細的介紹,在這裡復制粘貼沒什麼意思,大傢到官網上看

官網鏈接

前置條件

本教程是在window環境下運行的,實際生產推薦在Linux上運行。

必備條件(自行安裝,如果不會裝請先打好基礎在來學習):

JDK:建議是1.7及其以上。

MySQL:必須是5.5及其以上。

拓撲結構

這裡寫圖片描述

兩張表users和item,三個資料庫db01,db02,db03(三個庫在一個資料庫實例上)

users隻在db01中存儲。

item表被分割到db02和db03中存儲。

create database db01;

CREATE TABLE users (

id INT NOT NULL AUTO_INCREMENT,

name varchar(50) NOT NULL default '',

indate DATETIME NOT NULL default '0000-00-00 00:00:00',

PRIMARY KEY (id)

)AUTO_INCREMENT= 1 ENGINE=InnoDB DEFAULT CHARSET=utf8;

在db02和db03中分別創建item表,SQL腳本如下

create database db02;

CREATE TABLE item (

id INT NOT NULL AUTO_INCREMENT,

value INT NOT NULL default 0,

indate DATETIME NOT NULL default '0000-00-00 00:00:00',

PRIMARY KEY (id)

)AUTO_INCREMENT= 1 ENGINE=InnoDB DEFAULT CHARSET=utf8;

create database db03;

CREATE TABLE item (

id INT NOT NULL AUTO_INCREMENT,

value INT NOT NULL default 0,

indate DATETIME NOT NULL default '0000-00-00 00:00:00',

PRIMARY KEY (id)

)AUTO_INCREMENT= 1 ENGINE=InnoDB DEFAULT CHARSET=utf8;

開始使用

先打mycat官方網站上下載安裝包,網址為mycat 下載圖如下所示:

下載圖示

然後在conf目錄下編輯service.xml,rule.xml,schema.xml三個文件。

service.xml主要配置mycat服務的參數,比如端口號,myact用戶名和密碼使用的邏輯資料庫等

role.xml主要配置路由策略,主要有分片的片鍵,拆分的策略(取模還是按區間劃分等)

schema.xml文件主要配置資料庫的信息,例如邏輯資料庫名稱,物理上真實的數據源以及表和數據源之間的對應關系和路由策略等。

配置如下所示:

server.xml

druidparser

1

8066

9066

test

TESTDB

user

TESTDB

true

role.xml

該路由表表明采用mod2的方式進行路由。通過下面可知是對item表的id鍵進行取模分表的,取模分到db02和db03,而users表直接路由到db01中。

id

mod-long

schema.xml 資料庫的url,usename,password按實際情況填寫。

select user()

12345678910111213141516171819202122

啟動測試在命令行切換到bin目錄下,然後執行如下命令:

這裡寫圖片描述

正確啟動後會顯示如下命令:

這裡寫圖片描述

然後表示我們啟動服務成功。

驗證結果在命令行訪問mycat邏輯資料庫,采用如下的命令:mysql -utest -ptest -h127.0.0.1 -P8066 -DTESTDB現在通過資料庫查詢資料庫和表,發現隻有邏輯資料庫TESTDB而不是db01, db02, db03;而且表也是統一顯示的,而不是分佈在不同的實際資料庫中。參考圖片如下:

這裡寫圖片描述

現在在訪問Mycat在資料庫中插入數據,看數據能否按照前面配置的路由規則進行分表。現在執行如下的SQL語句進行數據的插入。insert into users(name,indate) values('kk',now());

insert into users(name,indate) values('ss',now());

insert into item(id,value,indate) values(1,100,now());

insert into item(id,value,indate) values(2,100,now());1234

然後在mycat上查看是否插入成功,下圖顯示插入成功。

這裡寫圖片描述

然後登錄實際的資料庫,看分表是否成功。下圖顯示分表成功。

這裡寫圖片描述

圖上顯示,插入的users表中的數據全部在db01中,而item表中的數據通過Id取模後均勻的分佈在db02和db03中。這樣就根據實際的路由策略進行瞭分表。

測試完成!!~數據進行瞭分庫分表!

You May Also Like