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 ;