Mysql之 Mycat 分布式 列舉分片

2021-10-08 18:47:10 字數 2436 閱讀 6695

使用範圍:

對資料進行分片,如 t5表,這個表裡面,name有北京跟上海,北京在乙個表,上海在乙個表

t5 表

id name telnum

1   bj   1212

2   sh   22222

3   bj   3333

4   sh   44444

5   bj   5555

vim /usr/local/mycat/conf/schema.xml

<?xml version="1.0"?>

select user()

select user()

把一張表拆分兩張表,用rule,sharding-by-intfile (列舉分片)策略把t5表今進行拆分,分片到兩個節點sh1,sh2。

看一下列舉分片策略定義:

cat /usr/local/mycat/conf/rule.xml

sharding_id

hash-int

解釋:

sharding_id     考慮列舉分片最好拿什麼列做分片

hash-int  hash-in函式名字,通過mycat寫好的分片策略

根據測試環境:

name

hash-int

columns 標識將要分片的表字段,algorithm 分片函式, 其中分片函式配置中,mapfile標識配置檔案名稱

cat /usr/local/mycat/conf/rule.xml    

partition-hash-int.txt

解釋:

函式要有引數,引數:你的告訴,怎麼分配

partition-hash-int.txt   mapfile說明了,你就按照partition-hash-int.txt分片

小細節:mycat 預設不識別字串列,比如字串bj、或者文字,北京

所以需要加上1   type=1 支援字串列舉

根據測試環境:

partition-hash-int.txt

1

vim  /usr/local/mycat/conf/partition-hash-int.txt

bj=0     bj輸出到0 也就是sh1

sh=1 bj輸出到1 也就是sh2

default_node=1 如果需要其他地區,預設輸出到1 也就是sh2

準備測試環境

mysql  -uroot -p123456 -s /data/3307/mysql.sock -p 3307 -e "use taobao;create table t5 (id int not null primary key auto_increment,name varchar(20) not null);"

mysql -uroot -p123456 -s /data/3308/mysql.sock -p 3308  -e "use taobao;create table t5 (id int not null primary key auto_increment,name varchar(20) not null);"

重啟mycat 

mycat restart 

mysql -uroot -p123456 -h10.0.0.51 -p8066

use testdb;

insert into t5(id,name) values(1,'bj');

insert into t5(id,name) values(2,'sh');

insert into t5(id,name) values(3,'bj');

insert into t5(id,name) values(4,'sh');

insert into t5(id,name) values(5,'tj');

分別登入後端節點查詢資料

mysql -uroot -p123456 -s /data/3307/mysql.sock -e "select * from taobao.t5;"

+----+------+

| id | name |

+----+------+

|  1 | bj   |

|  3 | bj   |

+----+------+

mysql -uroot -p123456 -s /data/3308/mysql.sock -e "select * from taobao.t5;"

| id | name |

+----+------+

|  2 | sh   |

|  4 | sh   |

|  5 | tj   |

+----+------+

MySQL分布式集群之MyCAT的簡單使用

支援 sql 92標準 支援mysql集群,可以作為proxy使用 支援jdbc連線oracle db2 sql server,將其模擬為mysql server使用 支援galera for mysql集群,percona cluster或者mariadb cluster,提供高可用性資料分片集群...

mysql分布式搭建 MySQL分布式集群搭建

1 準備集群搭建環境 使用6臺虛擬機器來搭建mysql分布式集群,相應的實驗環境與對應的mysql節點之間的對應關係如下圖所示 管理節點 mgm 這類節點的作用是管理mysqlcluster內的其他節點,如提供配置資料,並停止節點,執行備份等。由於這類節點負責管理其他節點的配置,應該在啟動其他節點之...

mysql分布式事務

儲引擎實現事務的通用方式是基於 redo log 和 undo log。簡單來說,redo log 記錄事務修改後的資料,undo log 記錄事務前的原始資料。所以當乙個事務執行時實際發生過程簡化描述如下 先記錄 undo redo log,確保日誌刷到磁碟上持久儲存。更新資料記錄,快取操作並非同...