mycat中间件(五)mycat配置文件之schema.xml 第一部分
来源:互联网 发布:龙珠直播软件 编辑:程序博客网 时间:2024/05/16 18:16
导言
前面的文章,我们介绍了关于
schema.xml
<mycat:schema xmlns:mycat="http://io.mycat/">......</mycat:schema>
所包围的。
而最先被包围的是<schema>
标签,故而我们先说明一下schema标签
schema标签
<mycat:schema xmlns:mycat="http://io.mycat/"><schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100">....</schema>....</mycat:schema>
在schema.xml中,结构就如上所示。schema标签总的来说,属性是由这一行所定义的。
<schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100"></schema>
这个配置说明了三点
- name属性,说明了mycat中,会有一个逻辑库,该库的名字是TESTDB;
- checkSQLschema为false,说明当执行
select * from TESTDB.travelrecord
语句的时候,mycat不会把表示的schema(该处是TESTDB)给去掉。该处被去掉的schema(即TESTDB)是由schema标签所定义的。- sqlMaxLimit说明了在每条执行的SQL 语句,如果没有加上limit 语句,MyCat 也会自动的加上所对应limit 100数值。
schema标签的说明
1.6版本,如果你没有随便更改设置的话,只有一个
如果不配置schema标签,所有的表配置,会属于同一个默认的逻辑库。
如果配置了不同的两个逻辑库,那么逻辑库的基本意思,其实和mysql中所讲述的Database是一致的。而需要注意的是在查询这两个不同的逻辑库中表的时候需要切换到该逻辑库下才可以查询到所需要的表
两个逻辑库的实践
我们需要创建一个表。我们之前的安装(前面文章所安装)已经有一个TESTDB逻辑库。
我们输入下列命令:
mysql -u root -p ## 登录mysqlcreate schema db4 ## 创建databaseuse db4 ## 使用该database
创建
CREATE TABLE `people` ( `people_id` varchar(64) NOT NULL DEFAULT '0', `people_name` varchar(64) DEFAULT NULL, PRIMARY KEY (`people_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
我们可以在schema.xml配置增加一行:
....<schema name="USERDB" checkSQLschema="false" sqlMaxLimit="100"><table name="people" dataNode="dn4" ></table></schema>....<dataNode name="dn4" dataHost="localhost1" database="db4" />
datahost(name为localhost1),USERDB和TESTDB使用同一个
我们还需要修改server.xml,去修改用户的权限
<property name="schemas">TESTDB,USERDB</property>
然后重启
测试
show databases;use USERDBshow tables;
schema标签的属性说明
- dataNode属性
该属性用于绑定逻辑库到某个具体的database 上
以下面举例
<schema name="USERDB" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn2"><!-配置需要分片的表--><table name="tuser" dataNode="dn1"/></schema>
tuser就绑定到dn1所配置的具体database上,可以直接访问这个database,没有配置的表则会走默认节点dn2 没有配置在分片里面的表工具查看无法显示,但是可以正常使用
checkSQLschema属性
该属性用于绑定逻辑库到某个具体的database 上- 该值若为true
- 非schema 指定的名字
select * from db1.travelrecord;
,若db1 不是schema 指定,则mycat不会删除db1 . - schema 指定的名字
select * from TESTDB.travelrecord;
,若TESTDB 是schema 指定,则mycat 会修改为select * from travelrecord;
即把表示schema 的字符去掉
- 非schema 指定的名字
- 该值若为true
- sqlMaxLimit属性
当该值设置为某个数值时。每条执行的SQL 语句,如果没有加上limit 语句,MyCat 也会自动的加上所对应的值。
例如设置值为100,执行select * from TESTDB.travelrecord;
的效果为和执行select * from TESTDB.travelrecord limit 100;
相同。
设置该值的话,MyCat 默认会把查询到的信息全部都展示出来,造成过多的输出。所以,在正常使用中,还是建议加上一个值,用于减少过多的数据返回。
当然SQL 语句中也显式的指定limit 的大小,不受该属性的约束。需要注意的是,如果运行的schema 为非拆分库的,那么该属性不会生效。需要手动添加limit 语句。
table标签
这是一个有关
<table name="hotnews" primaryKey="hotnews_id" autoIncrement="true" dataNode="dn1,dn2,dn3"rule="mod-long" />
该例子中,table 标签定义了MyCat 中的逻辑表,所有需要拆分的表都需要在这个标签中定义。那么我们可以从上诉例子看出什么信息?
该例子中,定义了一个hotnews表,其主键定义为“hostnews_id”,设置为可自增,而且其分片规则是mod-long,其数据分片分在了dn1,dn2,dn3三个分片节点上。
table 标签的属性说明
name属性
定义逻辑表的表名。唯一字段。dataNode属性
定义这个逻辑表所属的dataNode , 该属性的值需要和dataNode 标签中name 属性的值相互对应。
如果需要定义的dn 过多可以使用如下的方法减少配置:
<tablename="travelrecord"dataNode="multipleDn$0-99,multipleDn2$100-199"rule="auto-shardinglong"></table><dataNodename="multipleDn"dataHost="localhost1"database="db$0-99" ></dataNode><dataNodename="multipleDn2"dataHost="localhost1"database=" db$0-99" ></dataNode>
- rule属性
用于指定逻辑表要使用的规则名字,规则名字在rule.xml 中定义,必须与tableRule 标签中name 属性属性值一一对应
- ruleRequired属性
该属性用于指定表是否绑定分片规则,如果配置为true ,但没有配置具体rule 的话 ,程序会报错。
- primaryKey属性
该逻辑表对应真实表的主键
例如:分片的规则是使用非主键进行分片的,那么在使用主键查询的时候,就会发送查询语句到所有配置的DN 上,如果使用该属性配置真实表的主键。那么MyCat 会缓存主键与具体DN 的信息,那么再次使用非主键进行查询的时候就不会进行广播式的查询,就会直接发送语句给具体的DN,但是尽管配置该属性,如果缓存并没有命中的话,还是会发送语句给具体的DN,来获得数据。
- type属性
该属性定义了逻辑表的类型。global :全局表
- autoIncrement属性
如果要使用这个功能最好配合使用数据库模式的全局序列。
默认是禁用的。autoIncrement= “true ”指定这个表有使用自增长主键。此时使用last_insert_id() 才会返回插入的分片键值。
- subTables属性
使用方式添加subTables= ”t_order$1−2,t_order3 ”dataNode 在分表条件下只能配置一个,分表条件下不支持各种条件的join 语句。
备注
该功能在1.6版本开启
- needAddLimit属性
指定表是否需要自动的在每个语句后面加上limit 限制。
默认为true 。
- mycat中间件(五)mycat配置文件之schema.xml 第一部分
- Mycat配置文件之schema.xml
- Mycat之——配置文件schema.xml
- Mycat之——配置文件schema.xml
- MyCat配置文件详解--schema.xml
- MySQL分布式集群之MyCAT的配置文件schema.xml详解
- Mycat配置文件schema.xml的详解
- Mycat配置文件之server.xml
- Mycat配置文件之rule.xml
- myCat schema.xml详解
- myCat schema.xml详解
- myCat schema.xml详解
- Mycat之——配置文件server.xml
- Mycat之——配置文件rule.xml
- Mycat之——配置文件server.xml
- Mycat之——配置文件rule.xml
- Mycat配置之一:schema.xml
- Mycat中间件
- HTML5新增的全局属性
- 安装Redis
- 流式布局FlowLayout的动态添加删除
- java并发编程:自定义同步工具
- dubbo 的安装和使用
- mycat中间件(五)mycat配置文件之schema.xml 第一部分
- 第六次C++作业
- Cocos2d-x下Lua调用自定义C++类和函数的最佳实践
- 写给迷茫的程序员
- vlayout源码思路解析
- 和文本框有关的练习(JTextArea和document)
- spring 加载自定义配置
- 02_插入算法
- JAVA设计模式-策略模式应用实例