MyCat全局表

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 ;

原文地址:https://www.cnblogs.com/luliang888/p/11147940.html