本文咱們來介紹下MyCat的分庫分表操做mysql
在rule.xml
中定義了各類myCat支持的分片規則。程序員
注意
:算法
在master
中分別建立3個數據庫demo1
,demo2
,demo3
,由於主從的關係會同步到從庫中。sql
create database demo1 default character set utf8; create database demo2 default character set utf8; create database demo3 default character set utf8; 複製代碼
修改schema.xml文件中的信息,以下:數據庫
<?xml version="1.0"?> <!DOCTYPE mycat:schema SYSTEM "schema.dtd"> <mycat:schema xmlns:mycat="http://io.mycat/"> <schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100"> <table name="t_user" dataNode="dn1,dn2,dn3" rule="crc32slot" /> </schema> <dataNode name="dn1" dataHost="localhost1" database="demo1" /> <dataNode name="dn2" dataHost="localhost1" database="demo2" /> <dataNode name="dn3" dataHost="localhost1" database="demo3" /> <dataHost name="localhost1" maxCon="1000" minCon="10" balance="1" writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100"> <heartbeat>select user()</heartbeat> <!-- can have multi write hosts --> <writeHost host="hostM1" url="192.168.88.180:3306" user="root" password="123456"> <!-- can have multi read hosts --> <readHost host="hostS2" url="192.168.88.181:3306" user="root" password="123456" /> </writeHost> </dataHost> </mycat:schema> 複製代碼
注意
:後端
dataNode
crc32slot
writeHost
和readHost
的配置沒變 由於使用的是crc32slot
算法,且有3個數據庫,因此須要修改rule.xml中的配置微信
同時咱們須要刪除掉ruledata
目錄中的規則文件,否則修改的3
不會起做用前後端分離
重啓mycat服務微服務
查看分配規則測試
先刪除原來建立的t_user
表,而後經過mycat建立t_user
表示,經過mycat建立會多出來一個_slot
字段。
CREATE TABLE t_user ( `id` INT, `name` VARCHAR (30), `age` INT, PRIMARY KEY (`id`) ) ENGINE = INNODB DEFAULT CHARSET = utf8; 複製代碼
在mycat客戶端插入數據,而後去對應的物理庫中查詢具體的狀況
insert into t_user(id,name,age)values(1,'HG-93',14) 複製代碼
注意
:插入語句的語法要完整,不要偷懶省略字段,尤爲是id
自增加!!!
數據按照咱們設置的規則分別存儲到了各自數據的表結構中了。
而後咱們來看下查詢操做,經過mycat看可否將全部的數據都查詢出來,