可以實現按照地區進行分表
根據不同的列舉(常量)進行分表儲存
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...