以列舉法,取餘法為例:
列舉法:sharding-by-intfile
在schema.xml中,有:
# 其中表明了,在employee中必須要有id這個字段,採用的分片規則是sharding-by-intfile列舉
vim rule.xml #檢視分片規則
sharding_id #表中必須有這個字段,因為要根據這個字段進行分片
hash-int #分片呼叫的函式,在這個檔案下方可以找到
partition-hash-int.txt #函式呼叫的配置檔案
vim partition-hash-int.txt #修改呼叫配置檔案
10000=0 #當sharding_id欄位的值是10000時,資料儲存在資料節點dn1裡
10010=1 #當sharding_id欄位的值是10010時,資料儲存在資料節點dn2裡
10020=2 #當sharding_id欄位的值是10020時,資料儲存在資料節點dn3裡
通過以上資訊可以看出,employee表採用的是列舉的分片方式
employee表中必須包括id和sharding_id兩個字段
sharding_id必須從10000,10010,10020這三個值當中選擇
重啟mycat:/usr/local/mycat/bin/mycat restart
遠端建表:(在client上連線分片伺服器)
mysql -h192.168.4.151 -p8066 -uroot -p123456
mysql>use testdb;
# 操作會同步到資料庫伺服器上
create table employee(
id int primary key, #分片要求的主鍵
sharding_id int, #根據這個字段進行分片
name char(10),
age int
);插入資料進行驗證
insert into employee(id, sharding_id , name, age) values(1,10000,"jason",20) #dn1
insert into employee(id, sharding_id , name, age) values(1,10010,"jack",22) #dn2
insert into employee(id, sharding_id , name, age) values(1,10020,"john",21) #dn3
# 在三颱資料庫上查詢的資料不同,
# 通過client連線mycat使用select * from employee 可以查詢到所有資料
取餘法:mod-long
在schema.xml中,有:
# 其中表明了,hotnews這個表採用mod-long的分片方式
vim rule.xml #檢視分片規則
id #表中必須要有這個字段,需要根據這個字段分片
mod-long #分片呼叫的函式
3 #指定求模數字,id%3
通過以上資訊可以看出hotnews中必須要有id這個字段,因為需要根據這個字段進行分片
分片的規則是對3取餘,id%3
重啟mycat:/usr/local/mycat/bin/mycat restart
遠端建表:(在client上連線分片伺服器)
mysql -h192.168.4.151 -p8066 -uroot -p123456
mysql>use testdb;
# 操作會同步到資料庫伺服器上
create table hotnews(
id int primary key, #分片要求根據這個字段進行分片,id可以不是主鍵,最後定義成主鍵
name char(10),
age int
);插入資料驗證:
insert into hotnews(id,name,aget)values(1,"jack",22) #dn2
insert into hotnews(id,name,aget)values(2,"marry",29) #dn3
insert into hotnews(id,name,aget)values(3,"jagger",27) #dn1
# 在三颱資料庫伺服器中可以查到不同的資料
# client連線mycat伺服器使用select * from hotnews可以看到所有的資料
寫總結的第四十二天!!! mycat分片規則
mycat 分片規則 mycat全域性表 如果你的業務中有些資料類似於資料字典,比如配置檔案的配置,常用業務的配置或者資料量不大很少變動的表,這些表往往不 是特別大,而且大部分的業務場景都會用到,那麼這種表適合於mycat全域性表,無須對資料進行切分,只要在所有的分片上儲存一 份資料即可,mycat...
Mycat 分片規則詳解
mycat位於應用和資料庫的中間層,可以理解為資料庫的 不是所有的表都需要分片,資料量小並且不需要做水平切分的表稱之為非分片表 資料量大到單庫效能 容量不足以支撐,資料需要通過水平切分到不同資料庫中的表稱之為分片表。er模型是實體關係模型,廣泛採用概念模型設計方法,基本元素是實體 關係和屬性。myc...
MyCat分片規則之取模分片
除了上一章總結的列舉分片之外,mycat中還有一種比較常見的分片 取模分片規則,本節將總結如何實現取模分片。a 建立資料庫和表結構 create database testmod1 create database testmod2 use testmod1 create table user id ...