MyCat全局表:
在一些系統中,可能有一些重要的數據字典信息,例如:如果要進行欄目的分類,或者進行某些類別的定義,這個時候就可以通過一個數據字典的形式進行描述,這樣一來,幾乎所有的項目都有可能用到這些數據字典表,於是就可以在所有的數據庫里面進行這些數據表的重復定義,這樣的操作就稱為全部表。
1. 在兩台數據庫中進行全局表的定義,但是為了區分本次使用不同數據庫的名稱進行配置:
DROP DATABASE IF EXISTS yootk_groupb ; CREATE DATABASE yootk_groupb CHARACTER SET UTF8 ; use yootk_groupb ; CREATE TABLE dict( did BIGINT AUTO_INCREMENT , title VARCHAR(50) , content TEXT , CONSTRAINT pk_did PRIMARY KEY(did) ) engine=innodb ;
DROP DATABASE IF EXISTS yootk_groupc ; CREATE DATABASE yootk_groupc CHARACTER SET UTF8 ; use yootk_groupc ; CREATE TABLE dict( did BIGINT AUTO_INCREMENT , title VARCHAR(50) , content TEXT , CONSTRAINT pk_did PRIMARY KEY(did) ) engine=innodb ;
此時的兩個數據庫名稱時完全不同的,而且是保存在不同點的數據庫服務器上的,但是表名稱一定要相同;
2.【MyCat】 所有的配置項一定要在schema.xml配置文件中進行定義:vim /usr/local/mycat/conf/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="info" primaryKey="id" dataNode="dna,dnb,dnc" rule="info-mod-long"/>
</schema>
<dataNode name="dna" dataHost="localhost1" database="yootk" />
<dataNode name="dnb" dataHost="localhost2" database="yootk" />
<dataNode name="dnc" dataHost="localhost3" database="yootk" />
<dataHost name="localhost1" maxCon="1000" minCon="10" balance="2" writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">
<heartbeat>select user()</heartbeat>
<writeHost host="hostM1" url="192.168.195.148:3306" user="root" password="mysqladmin">
<readHost host="hostS2" url="192.168.195.149:3306" user="root" password="mysqladmin" />
</writeHost>
</dataHost>
<dataHost name="localhost2" maxCon="1000" minCon="10" balance="2" writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">
<heartbeat>select user()</heartbeat>
<writeHost host="hostM1" url="192.168.195.150:3306" user="root" password="mysqladmin"/>
</dataHost>
<dataHost name="localhost3" maxCon="1000" minCon="10" balance="2" writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100">
<heartbeat>select user()</heartbeat>
<writeHost host="hostM1" url="192.168.195.151:3306" user="root" password="mysqladmin"/>
</dataHost>
</mycat:schema>
3.【MyCat】 此時的配置追加有三個新的邏輯數據庫,所以修改server.xml文件:vim /usr/local/mycat/conf/server.xml
<user name="root" defaultAccount="true">
<property name="password">123456</property>
<property name="schemas">TESTDB,TESTDB-B,TESTDB-C</property>
</user>
4. 【MyCat】啟動MyCat服務:/usr/local/mycat/bin/mycat restart
5.【MyCat】 登錄到MyCat數據操作端口:mysql -uroot -p123456 -P8066 -DTESTDB -h127.0.0.1
6.【MyCat】 在MyCat主機中,向dict數據庫中追加數據內容:
INSERT INTO dict(title,content) VALUES ('info-a',@@hostname) ;
INSERT INTO dict(title,content) VALUES ('info-b',@@hostname) ;
INSERT INTO dict(title,content) VALUES ('info-c',@@hostname) ;
此時所增加的數據會自動保存到所有與全局表有關的數據庫之中,即:這類的全局信息表可以進行統一的維護操作;
7. 進行查詢:select title,count(*) from info group by title ;
