mycat分片規則的使用

2021-09-28 18:00:07 字數 2261 閱讀 4135

以列舉法,取餘法為例:

列舉法: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 ...