mycat實現mysql分庫分表

2021-09-20 11:39:08 字數 2702 閱讀 9566

1. mycat介紹

mycat是乙個開源的分布式資料庫系統,是乙個實現了mysql協議的伺服器,前端使用者可以把它看作是乙個資料庫**,用mysql客戶端工具和命令列訪問,而其後端可以用mysql原生協議與多個mysql伺服器通訊,也可以用jdbc協議與大多數主流資料庫伺服器通訊,其核心功能是分表分庫,即將乙個大表水平分割為n個小表,儲存在後端mysql伺服器裡或者其他資料庫裡。
mycat發展到目前的版本,已經不是乙個單純的mysql**了,它的後端可以支援mysql、sql server、oracle、db2、postgresql等主流資料庫,也支援mongodb這種新型nosql方式的儲存,未來還會支援更多型別的儲存。而在終端使用者看來,無論是那種儲存方式,在mycat裡,都是乙個傳統的資料庫表,支援標準的sql語句進行資料的操作,這樣一來,對前端業務系統來說,可以大幅降低開發難度,提公升開發速度

2.使用介紹:

本次演示的是基於mysql資料庫,通過中介軟體mycat實現分庫分表功能。

3.環境

3臺物理機linux作業系統

其中兩台安裝mysql 5.7

另一台安裝mycat

4.原理圖

5.搭建過程

mycat分為3個重要的配置檔案,分別為 schema.xml server.xml rule.xml

1.scheme.xml

此配置檔案是設定整體的scheme拆分任務;節點配置資訊;表拆分資訊;以及底層mysql資料庫登入方式。

具體內容如下:

<?xml version="1.0"?>

--schema任務配置

--表test1 拆分的節點以及拆分規則

--節點資訊配置

select user()

select user()

2.server.xml

此檔案配置全域性防火牆資訊。

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

0 0

20m-vy288c43d05418f4 01

1m1k

0 384m

true

123456

mysql

3.rule.xml

此配置檔案配置的是表的拆分規則,以及拆分規則底層檔案配置,

具體內容如下:

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

c language governing permissions and - limitations

under the license. -->

--表test1拆分規則配置

idrang-long

idfunc1

02160 2

partition-hash-int.txt

autopartition-long.txt38

128 24

yyyy-mm-dd

2015-01-01

partition-range-mod.txt

3

6.底層mysql配置mysql需要授予mycat所在主機的登入許可權

在192.168.0.3上:

mysql> grant all on db1.* to 'root'@'192.168.0.4' identified by '123';
mysql> grant all on db2.* to 'root'@'192.168.0.4' identified by '123';

在192.168.0.4上:

mysql> grant all on db3.* to 'root'@'192.168.0.4' identified by '123';

mysql> grant all on db4.* to 'root'@'192.168.0.4' identified by '123';

7.測試功能

1.開啟mycat:

2.在mycat所在主機登入mysql

由上圖可以看到,在mycat所在主機中登入mysql 會看到已經建立好的schema 下面有兩個表 test1 test2

3.插入資料測試:

插入三條資料,在mycat 所在主機select會顯示所有資料

在底層資料庫中指揮顯示根據拆分規則插入的資料:

192.168.0.4中結果如下

192.168.0.3中結果如下

mysql 分庫分表mycat部署

垂直分割 縱向切分 把單一的表,拆分成多個表,並分散到不同的資料庫 主機 上。乙個資料庫由多個表構成,每個表對應不同的業務,可以按照業務對錶進行分類,將其分布到不同的資料 庫 主機 上,實現專庫專用,讓不同的庫 主機 分 擔不同的業務 水平分割 橫向切分 按照表中某個欄位的某種規則,把向表中寫入的記...

MyCat分表分庫規則實現

先根據擷取欄位的日期分組,再根據字段值資料按天入錶 author fx demon public class partitionbysubstringrangedateday extends abstractpartitionalgorithm implements rulealgorithm ov...

Mycat分庫分表

schema.xml 配置 name dn1 datahost localhost1 database db1 name dn2 datahost localhost1 database db2 name dn3 datahost localhost1 database db3 把localhost...