使用範圍:
對資料進行分片,如 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,確保日誌刷到磁碟上持久儲存。更新資料記錄,快取操作並非同...