写点什么

MyCat 配置文件详解(二),java 自学视频谁讲的好

用户头像
极客good
关注
发布于: 刚刚

定义逻辑表的表名 , 在该逻辑库下必须唯一。 2. `dataNode` 定义的逻辑表所属的`dataNode` , 该属性需要与**dataNode 标签**中的**name 属性**的值对应。 如果一张表拆分的数据,存储在多个数据节点上,多个节点的名称使用`","`分隔 。 ![](https://upload-images.jianshu.io/upload_images/25222111-362cf92f8b6b521f.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) 3. ` rule` 该属性用于指定逻辑表的分片规则的名字, 规则的名字是在**rule.xml 文件**中定义的, 必须与**tableRule 标签**中**name 属性**对应。 ![](https://upload-images.jianshu.io/upload_images/25222111-b80f676489c99031.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) 4. `ruleRequired` 该属性用于指定表是否绑定分片规则, 如果配置为 true, 但是没有具体的 rule, 程序会报错。 5. `primaryKey` 逻辑表对应真实表的主键 如: 分片规则是使用主键进行分片, 使用主键进行查询时, 就会发送查询语句到配置的所有的`datanode`上; 如果使用该属性配置真实表的主键, 那么 MyCat 会缓存主键与具体`datanode`的信息,再次使用主键查询就不会进行**广播式查询**了, 而是直接将 SQL 发送给具体的`datanode`。 6. `type` 该属性定义了逻辑表的类型,目前逻辑表只有**全局表**和**普通表**。 全局表:type 的值是 `global` , 代表 **全局表** 。 普通表:无 7. `autoIncrement` mysql 对非自增长主键,使用`last_insert_id()` 是不会返回结果的,只会返回 0。所以,只有定义了自增长主键的表,才可以用`last_insert_id()`返回主键值。 mycat 提供了**自增长主键功能**,但是对应的 mysql 节点上数据表,没有`auto_increment`,那么在 mycat 层调用`last_insert_id()`也是不会返回结果的。 如果使用这个功能, 则最好配合数据库模式的全局序列。使用 `autoIncrement="true"` 指定该表使用自增长主键,这样 MyCat 才不会抛出 **"分片键找不到"** 的异常。 `autoIncrement` 的默认值为 false。 8. `needAddLimit` 指定表是否需要自动在每个语句的后面加上**limit 限制**, 默认为`true`。 *** >参考资料:`《开源数据库中间件 MyCat 实战笔记》` >快速入手通道:`发送简信“MyCat 资料”`免费获取 # 二、dataNode 标签 <dataNode name="dn1" dataHost="host1" database="db1" /> **dataNode 标签**中定义了 MyCat 中的数据节点, 也就是我们通常说的数据分片。**一个 dataNode 标签就是一个独立的数据分片**。 具体的属性 : | **属性** | **含义** | **描述**| |--|--|--| | name | 数据节点的名称 |需要唯一 ; 在 table 标签中会引用这个名字, 标识表与分片的对应关系 | dataHost | 数据库实例主机名称|引用自 dataHost 标签中 name 属性 | database | 定义分片所属的数据库 | # 三、dataHost 标签 <dataHost name="host1" maxCon="1000" minCon="10" balance="0" writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100"> <heartbeat>select user()</heartbeat> <writeHost host="hostM1" url="192.168.192.147:3306" user="root" password="itcast"></writeHost> </dataHost> 该标签在 MyCat 逻辑库中作为底层标签存在, 直接定义了具体的**数据库实例**、**读写分离**、**心跳语句**。 ## 1.属性 | **属性** | **含义** | **描述**| |--|--|--| | name | 数据节点名称 |唯一标识, 供上层标签使用 |maxCon|最大连接数|内部的 writeHost、readHost 都会使用这个属性 | minCon | 最小连接数 |内部的 writeHost、readHost 初始化连接池的大小 | balance | 负载均衡类型 |取值 0,1,2,3 ; 后面章节会详细介绍; |writeType|写操作分发方式|0 : 写操作都转发到第 1 台 writeHost, writeHost1 挂了, 会切换到 writeHost2 上;1 : 所有的写操作都随机地发送到配置的 writeHost 上 ; | dbType | 后端数据库类型 |mysql, mongodb ``` 【一线大厂 Java 面试题解析+核心总结学习笔记+最新架构讲解视频+实战项目源码讲义】 浏览器打开:qq.cn.hn/FTf 免费领取 ``` , oracle |dbDriver | 数据库驱动 |指定连接后端数据库的驱动,目前可选值有 native 和 JDBC。native 执行的是二进制的 MySQL 协议,可以使用 MySQL 和 MariaDB。其他类型数据库需要使用 JDBC(需要在 MyCat/lib 目录下加入驱动 jar) | switchType | 数据库切换策略 |取值 -1,1,2,3 ; 后面章节会详细介绍; ## 2.子标签 heartbeat 配置 MyCat 与后端数据库的心跳,用于检测后端数据库的状态。`heartbeat`用于配置心跳检查语句。例如 : MySQL 中可以使用 `select user()`, Oracle 中可以使用 `select 1 from dual`等。 ## 3.子标签 writeHost、readHost **指定后端数据库的相关配置**, 用于**实例化后端连接池**。 `writeHost`指定写实例, `readHost`指定读实例。 在一个`dataHost`中可以定义**多个 writeHost 和 readHost**。但是,如果`writeHost`指定的**后端数据库宕机**, 那么这个 writeHost 绑定的所有 readHost 也将不可用。 属性: | **属性名** | **含义** | **取值**|

用户头像

极客good

关注

还未添加个人签名 2021.03.18 加入

还未添加个人简介

评论

发布
暂无评论
MyCat配置文件详解(二),java自学视频谁讲的好