Mycat入門教程

2021-08-17 19:48:15 字數 3755 閱讀 1509

官網鏈結

mysql:必須是5.5及其以上。

users只在db01中儲存。

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

create

database db01;

create

table users (

id int

notnull 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;

create

database db02;

create

table item (

id int

notnull auto_increment,

value

intnot

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

notnull auto_increment,

value

intnot

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;

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

service.xml主要配置mycat服務的引數,比如埠號,myact使用者名稱和密碼使用的邏輯資料庫等

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

schema.xml檔案主要配置資料庫的資訊,例如邏輯資料庫名稱,物理上真實的資料來源以及表和資料來源之間的對應關係和路由策略等。

配置如下所示:

server.xml

<?xml version="1.0" encoding="utf-8"?>

xmlns:mycat="">

name="defaultsqlparser">druidparserproperty>

name="mutinodelimittype">1property>

name="serverport">8066property>

name="managerport">9066property>

system>

name="test">

name="password">testproperty>

name="schemas">testdbproperty>

user>

name="user">

name="password">userproperty>

name="schemas">testdbproperty>

name="readonly">trueproperty>

user>

mycat:server>

<?xml version="1.0" encoding="utf-8"?>

xmlns:mycat="">

name="role1">

idcolumns>

mod-longalgorithm>

rule>

tablerule>

name="mod-long"

class="io.mycat.route.function.partitionbymod">

name="count">2property>

function>

mycat:rule>

<?xml version="1.0"?>

xmlns:mycat="">

name="testdb"

checksqlschema="false"

sqlmaxlimit="100">

name="users"

primarykey="id"

datanode="node_db01" />

name="item"

primarykey="id"

datanode="node_db02,node_db03"

rule="role1" />

schema>

name="node_db01"

datahost="datahost01"

database="db01" />

name="node_db02"

datahost="datahost01"

database="db02" />

name="node_db03"

datahost="datahost01"

database="db03" />

name="datahost01"

maxcon="1000"

mincon="10"

balance="0"

writetype="0"

dbtype="mysql"

dbdriver="native">

select user()heartbeat>

host="server1"

url="127.0.0.1:3306"

user="root"

password="123456"/>

datahost>

mycat:schema>

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());然後登入實際的資料庫,看分表是否成功。下圖顯示分表成功。 

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

Mycat入門教程

官網鏈結 在db02和db03中分別建立item表,sql指令碼如下 create database db02 create table item id int notnull auto increment,value intnot null default 0,indate datetime no...

mycat入門教程

mycat就是乙個資料庫中介軟體,資料庫的 它遮蔽了物理資料庫,應用連線mycat,然後mycat再連線物理資料庫 它支援水平拆分 分庫分表,通過分庫達到分表 支援多種分片規則,比如範圍切片 自然月分片 hash取模分片等 它支援mysql oracle mongodb sql server,並且支...

Mycat入門教程

官網鏈結 在db02和db03中分別建立item表,sql指令碼如下 create database db02 create table item id int not null auto increment,value int not null default 0,indate datetime ...