目的:不同的数据库放不同的表,不同库下的表无法跨数据库关联,需要在程序中完成
    案例:test1表存放在3306库,test2存放在3308库(一主两从一备)
    例如:用户库,用户评论库,订单库放在不同的数据库

    server.xml,添加两个逻辑库,分别对应两个实例3306/3308上的物理库

    1. <user name="root">
    2. <property name="password">123456</property>
    3. <property name="schemas">TESTDB,test1,test2</property>
    4. <!-- 表级 DML 权限设置 -->
    5. <!--
    6. <privileges check="false">
    7. <schema name="TESTDB" dml="0110" >
    8. <table name="tb01" dml="0000"></table>
    9. <table name="tb02" dml="1111"></table>
    10. </schema>
    11. </privileges>
    12. -->
    13. </user>

    schema.xml

    <?xml version="1.0"?>
    <!DOCTYPE mycat:schema SYSTEM "schema.dtd">
    <mycat:schema xmlns:mycat="http://io.mycat/">
    <!--逻辑库test1/test2 下面的逻辑表test1/test2 分别放在逻辑节点node3306/node3308上-->
    <!-- TESTDB虽然没用,但server.xml有记录必须写上-->
    <schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100" dataNode="node3306">
    </schema>
    <schema name="test1" checkSQLschema="false" sqlMaxLimit="100" dataNode="node3306">
            <table name="test1" dataNode="node3306"/>
    </schema>
    
    <schema name="test2" checkSQLschema="false" sqlMaxLimit="100" dataNode="node3308">
            <table name="test2" dataNode="node3308"/>
    </schema>
    
    <!--逻辑库节点node3306/node3308分别对应逻辑主机下面的真实数据库-->
        <dataNode name="node3306" dataHost="host3306" database= "test" />
        <dataNode name="node3308" dataHost="host3308" database= "test" />
    <!--逻辑库节点host3306真实ip信息-->
        <dataHost name="host3306" maxCon="1000" minCon="10" balance="1"  writeType="0" dbType="mysql"  dbDriver="native" switchType="1">
            <heartbeat>select user()</heartbeat>
        <writeHost host="db1" url="192.168.247.161:3306" user="op_dbuser" password="root1234">
                <readHost host="db2" url="192.168.247.162:3306" user="op_dbuser" password="root1234" />
        </writeHost>
        <writeHost host="db3" url="192.168.247.161:3307" user="op_dbuser" password="root1234">
                <readHost host="db4" url="192.168.247.162:3307" user="op_dbuser" password="root1234" />
        </writeHost>
        </dataHost>
    <!--逻辑库节点host3308真实ip信息-->
        <dataHost name="host3308" maxCon="1000" minCon="10" balance="1"  writeType="0" dbType="mysql"  dbDriver="native" switchType="1">
            <heartbeat>select user()</heartbeat>
        <writeHost host="db1" url="192.168.247.161:3308" user="op_dbuser" password="root1234">
                <readHost host="db2" url="192.168.247.162:3308" user="op_dbuser" password="root1234" />
        </writeHost>
        <writeHost host="db3" url="192.168.247.161:3309" user="op_dbuser" password="root1234">
                <readHost host="db4" url="192.168.247.162:3309" user="op_dbuser" password="root1234" />
        </writeHost>
        </dataHost>
    </mycat:schema>
    
    逻辑库对应的物理库(test1与TESTDB数据节点一致,所以对应的是同一套库)
    
    MySQL [TESTDB]> show tables;
    +----------------+
    | Tables_in_test |
    +----------------+
    | test1          |
    | test3          |
    | test4          |
    | tr             |
    +----------------+
    4 rows in set (0.00 sec)
    
    
    MySQL [test1]> show tables;
    +----------------+
    | Tables_in_test |
    +----------------+
    | test1          |
    | test3          |
    | test4          |
    | tr             |
    +----------------+
    4 rows in set (0.00 sec)
    
    MySQL [test2]> show tables;
    +----------------+
    | Tables_in_test |
    +----------------+
    | test2          |
    | test3          |
    | test4          |
    +----------------+
    3 rows in set (0.01 sec)
    
    
    不同的表存放在不同的库
    
    MySQL [test1]>  insert into test1 (id,name,purchased) values(1,'aaa','2021-08-12'),(2,'bbb','2021-08-13');
    Query OK, 2 rows affected (0.04 sec)
    Records: 2  Duplicates: 0  Warnings: 0
    
    MySQL [test1]>  insert into test2 (id,name,purchased) values(3,'ccc','2021-08-14'),(4,'ddd','2021-08-15');
    ERROR 1146 (42S02): Table 'test.test2' doesn't exist
    MySQL [test1]> use test2;
    Reading table information for completion of table and column names
    You can turn off this feature to get a quicker startup with -A
    
    Database changed
    MySQL [test2]>  insert into test2 (id,name,purchased) values(3,'ccc','2021-08-14'),(4,'ddd','2021-08-15');
    Query OK, 2 rows affected (0.04 sec)
    Records: 2  Duplicates: 0  Warnings: 0