Mycat水平分片策略(水平分表拆分)

2021-09-24 04:31:00 字數 2358 閱讀 8201

可以實現按照地區進行分表

根據不同的列舉(常量)進行分表儲存

1.mysql中建立3個資料庫分別為user_db1 user_db2 user_db3

2.在3個資料庫中建立3個一樣的資料表 order_info  order_info表中有字段name

3.配置mycat環境

schema.xml

<?xml version="1.0"?>

select user()

指定表名為order_info 指定資料庫集群 指定分片規則 為role2

rule.xml

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

name

hash-int

partition-hash-int.txt11

name    指定表中字段 該欄位決定存入哪個庫

hash-int   規則方法

class="io.mycat.route.function.partitionbyfilemap" 採用分片列舉演算法partition-hash-int.txt  指定列舉檔案

wuhan=0

shanghai=1

suzhou=2

1 表示列舉不為數值1 如果不在列舉中則預設存入節點14.啟動mycat練級mycat資料庫 新增以下3條資料

同時mycat虛擬資料庫中查詢 可以將資料全部查詢出來 包括分頁 模糊查詢等都支援

根據id欄位取模集群台數 得出的結果分別分配給不同節點。節點從0開始

比如1%3=1 分配到節點1  也就是user_db2

3%3 =0 分配到節點0  也就是user_db1

修改rule.xml檔案 新增role1取模規則

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

name

hash-int

idmod-long

partition-hash-int.txt11

3

這裡需要注意的是 tablerule 需要放一起 function也需要放一起 不然啟動時候會出現報錯schema.xml檔案

<?xml version="1.0"?>

select user()

新增啟動mycat  新增測試資料

mycat 水平分表

相對於垂直拆分的區別是 垂直拆分是把不同的表拆到不同的資料庫中,而水平拆分是把同乙個表拆到不同的資料庫中。水平拆分不是將表的資料做分類,而是按照某個欄位的某種規則來分散到多個庫之中,每個表中包含一部分資料。例如,分庫中的舉例,orders表水平分到order win和order linux兩個庫中。...

mycat水平分表

和垂直分庫不同,水平分表,是將那些io頻繁,且資料量大的表進行水平切分。基本的配置和垂直分庫一樣,我們需要改的就是我們的 schema.xml和rule.xml檔案配置 server.xml不用做任何修改 除此之外,我們還需要在兩個分片資料庫伺服器上建立分片用的資料庫10.0.4.181上建立 or...

mycat 水平分片配置 最基礎入門學習

前提,準備3至4臺伺服器,如果3臺的話,其中一台既是mysql,也是mycat伺服器 並在每台伺服器上 安裝好jdk1.8和mysql jdk1.8安裝步驟,可檢視博文 mysql安裝步驟,可檢視博文,mysql的遠端訪問許可權,最好開啟,方便測試,方法自行baidu 主機分布情況 172.16.2...