MyCat配置文件详解(二,Java黑科技实现原理揭秘

时间:2021-08-10
本文章向大家介绍MyCat配置文件详解(二,Java黑科技实现原理揭秘,主要包括MyCat配置文件详解(二,Java黑科技实现原理揭秘使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
  1. ruleRequired
    该属性用于指定表是否绑定分片规则, 如果配置为true, 但是没有具体的rule, 程序会报错。
  2. primaryKey
    逻辑表对应真实表的主键
    如: 分片规则是使用主键进行分片, 使用主键进行查询时, 就会发送查询语句到配置的所有的datanode上; 如果使用该属性配置真实表的主键, 那么MyCat会缓存主键与具体datanode的信息,再次使用主键查询就不会进行广播式查询了, 而是直接将SQL发送给具体的datanode
  3. type
    该属性定义了逻辑表的类型,目前逻辑表只有全局表普通表
    全局表:type的值是 global , 代表 全局表
    普通表:无
  4. autoIncrement
    mysql对非自增长主键,使用last_insert_id() 是不会返回结果的,只会返回0。所以,只有定义了自增长主键的表,才可以用last_insert_id()返回主键值。 mycat提供了自增长主键功能,但是对应的mysql节点上数据表,没有auto_increment,那么在mycat层调用last_insert_id()也是不会返回结果的。
    如果使用这个功能, 则最好配合数据库模式的全局序列。使用 autoIncrement="true" 指定该表使用自增长主键,这样MyCat才不会抛出 "分片键找不到" 的异常。 autoIncrement 的默认值为false。
  5. 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 , 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也将不可用。

属性:

属性名 含义 取值
host 实例主机标识 对于writeHost一般使用 *M1;对于readHost,一般使用 *S1;
url 后端数据库连接地址 如果是native,一般为 ip:port ; 如果是JDBC, 一般为jdbc:mysql://ip:port/
user 数据库用户名 root
password 数据库密码 itcast
weight 权重 在readHost中作为读节点权重
usingDecrypt 密码加密 默认 0 否 , 1 是

学习分享,共勉

这里是小编拿到的学习资源,其中包括“中高级Java开发面试高频考点题笔记300道.pdf”和“Java核心知识体系笔记.pdf”文件分享,内容丰富,囊括了JVM、锁、并发、Java反射、Spring原理、微服务、Zookeeper、数据库、数据结构等大量知识点。同时还有Java进阶学习的知识笔记脑图(内含大量学习笔记)!

资料都是免费提供的,整理不易,有需要的朋友可以转发分享下,同时可以关注我,定期分享学习资源还会更新一些技术分享!

资料免费领取:点击这里即可免费获取!

整理不易,有需要的朋友转发支持下,感谢感谢!

Java核心知识体系笔记.pdf

中高级Java开发面试高频考点题笔记300道.pdf

架构进阶面试专题及架构学习笔记脑图

Java架构进阶学习视频分享

原文地址:https://www.cnblogs.com/hgysvadavvc/p/15123901.html