一、概念与图示
schema.xml配置的几个术语与其关系图示:
二、schema 标签
schema 标签用于定义 MyCat 实例中的逻辑库,如:
<schema name="USERDB" dataNode="dn1" checkSQLschema="false" sqlMaxLimit="100"> |
1. name属性
配置逻辑库的名字(即数据库实例名);
2. dataNode属性
用于配置该逻辑库默认的分片。没有通过table标签配置的表,就会走到默认的分片上。这里注意没有配置在table标签的表,用工具查看是无法显示的,但是可以正常使用。
如果没有配置dataNode属性,则没有配置在table标签的表,是无法使用的。注意,dual表在mycat中,也被视为一个表。
查询:select sysdate() from dual LIMIT 0, 1000
错误代码: 1064 can't find table define in schema DUAL schema:USERDB |
另外,通过mycat建表,而该表并没有提前配置table标签,则mycat会找到默认的dataNode,并把表建在默认的dataNode上。如果没有配置默认dataNode,则mycat会报错。
查询:create table test(id varchar(10)) 错误代码: 1064 op table not in schema----TEST |
而如果该表有配置table标签,则表会分别在table标签指定的dataNode上建表。
3. checkSQLschema属性
boolean类型。
当前端执行【select *from USERDB.tf_user;】时(表名前指定了mycat逻辑库名),两种取值:
true:mycat会把语句转换为【select * from tf_user;】
false:会报错
查询:SELECT * FROM USERDB.tf_user LIMIT 0, 1000 错误代码: 1064 find no Route:SELECT * FROM USERDB.tf_user LIMIT 0, 1000 |