第115讲:Mycat核心配置文件各项参数的作用以及概念

文章目录

    • 1.Mycat配置文件相关概念
    • 2.Schema配置文件
    • 3.Rule配置文件
    • 4.Server配置文件

1.Mycat配置文件相关概念

在Mycat中核心的配置文件有schema.xml和rule.xml以及server.xml三个,其中schema.xml是用来配置数据库、表、读写分离、分片节点、分片规则等信息,rule.xml主要是用来定义拆分表的规则,server.xml包含了mycat的系统配置信息。

Mycat的配置文件都是xml形式的。

2.Schema配置文件

在schema.xml的配置文件中主要包含三组标签:

1)schema标签

<schema name="db_1" checkSQLschema="false" sqlMaxLimit="100" dataNode="sh1"></schema>

image-20220712214433538

schema标签主要用于定义逻辑库的,在一个Mycat实例中,可以配置多个逻辑库,一个逻辑库对应MySQL实例中的一个真实数据库,并且通过Mycat连接后,执行show databases看到的也都是schema中定义的逻辑库列表。

要通过mycat对哪一个数据库处理,就在这里定义该数据库。

schema标签中的重要属性:

  • name:定义逻辑库的库名,一般和数据库名称保持一致。
  • checkSQLschema:如果值为flase,当执行的SQL中包含了数据库的名称,执行时会自动去掉数据库名称,必须要进入到该数据库,再执行相应的SQL,一般该值都是true,避免导致SQL无法执行。
  • sqlMaxLimit:如果在查询SQL时,没有指定分页值,默认引用schema标签中配置的分页大小,避免全表查询。
  • dataNode:定义逻辑库所属的dataNode,该属性需要与dataNode标签中的name对应,声明逻辑库属于哪一个MySQL节点,多个dataNode逗号分隔。

2)schema标签中的table标签

<table name="TB_ORDER" dataNode="dn1,dn2,dn3" rule="auto-sharding-long" />

table标签用于定义Mycat逻辑库schema下的逻辑表,需要进行特殊处理,如拆分的表都在这里定义。

table标签中的重要属性:

  • name:定义逻辑表的表名,该表名在逻辑库schema下唯一。
  • dataNode:定义逻辑表所属的dataNode,该属性需要与dataNode标签中的name对应,声明逻辑表属于哪一个MySQL节点,多个dataNode逗号分隔。
  • rule:分片规则的名称。
  • primaryKey:逻辑表对应真实表的主键。
  • type
  • 逻辑表的类型,目前逻辑表只有全局表和普通表,如果未配置,就是普通表;全局表,配置为 global。

3)dataNode标签

<dataNode name="sh1" dataHost="mysql-1" database= "db_1" />

image-20220712215740968

dateNode标签是定义数据节点的,schema标签需要与dataNode标签关联,声明逻辑库属于哪个数据库实例上的真实数据库。

dateNode标签中的重要属性:

  • name:定义数据节点的名称,该名称会被schema标签调用。
  • dataHost:关联数据库实例主机的名称,引用dataHost标签中的name字段的值。
  • database:定义后端数据库实例中的真实所在的数据库名称。

3)dataHost标签

在dataHost标签中定义数据库实例信息,读写分离的配置也是在该标签中配置的。

image-20220712220406810

首先为dataHost标签声明一个名称,被dataNode标签调用,然后在dataHost标签中定义writeHost标签,声明写操作路由的数据库实例信息,然后定义readHost标签,定义读操作路由的数据库实例信息。

dataHost标签中的重要属性:

  • name:定义dataHost标签的名称,要被dataNode标签所关联。
  • maxCon/minCon:最大连接数(生产环境建议3000以上)/最小连接数。
  • balance:负载均衡类型。
    • 0表示不开启读写分离机制,所有的读操作都发送到当前可用的writeHost上。
    • 1表示全部readHost和第一个writeHost参与到select语句的负载均衡中,简单的说,当双主双从的模式下,(M1->S1,M2->S2,并且M1与 M2互为主备),正常情况下,M2、S1、S2都参与select语句的负载均衡,充当备用的M2不会参与负载均衡。
    • 2表示所有的读操作随机在writeHost、readHost上进行分发,MHA一主两从的模式下使用balance=2。
  • writeType:写操作的分发方式.
    • 0表示写操作只转发到第一个writeHost标签的数据库实例,当第一个数据库实例挂掉之后,再换到第二个writeHost标签的数据库实例。
    • 1表示随机分发到配置的writeHost标签的数据库实例。
  • switchType:主从是否切换
    • 1表示自动切换,当主库挂掉之后,自动选一个从库作为主库。
    • 2表示基于主从同步的状态再决定是否切换。
  • dbDriver:数据库驱动,支持 native、jdbc

在writeHost标签中也有很多重要的参数,其中readHost标签也是属于writeHost标签内的。

  • host:定义一个名称。
  • url:定义数据库的地址。
  • user:连接数据库的账号。
  • password:连接数据库的密码。

Schema配置文件的完整关联关系,schema关联dataNode,DataNode关联dataHost。

image-20220712222038949

3.Rule配置文件

在Rule配置文件中主要定义的是分片规则。

在Rule配置文件中主要有两组重要的标签:

  • <tableRule></tableRule>:在这个标签下定义分片的规则,包括对依据那个字段进行分片,实现这个分片规则要调用哪一个函数来等。
  • <function></function>:在这个标签下主要定义实现分片规则要用的算法以及分片规则属性。

image-20220715230834182

1)<tableRule></tableRule>标签下重要的参数:

参数作用
columns指定分片规则依据的字段
algorithm指定分片规则实现调用的函数

2)<function></function>标签下重要的参数:

参数含义
class指定该分片算法对应的类
mapFile对应的外部配置文件
type默认值为0 ; 0 表示Integer , 1 表示String
defaultNode默认节点 默认节点的所用:枚举分片时,如果碰到不识别的枚举值, 就让它路由到默认节点 ; 如果没有默认值,碰到不识别的则报错
count数据节点的数量
seed创建murmur_hash对象的种子,默认0
virtualBucketTimes一个实际的数据库节点被映射为这么多虚拟节点,默认是160倍,也就是虚拟节点数是物理节点数的160倍;virtualBucketTimes*count就是虚拟结点数量
weightMapFile节点的权重,没有指定权重的节点默认是1。以properties文件的格式填写,以从0开始到count-1的整数值也就是节点索引为key,以节点权重值为值。所有权重值必须是正整数,否则以1代替
bucketMapPath用于测试时观察各物理节点与虚拟节点的分布情况,如果指定了这个属性,会把虚拟节点的murmur hash值与物理节点的映射按行输出到这个文件,没有默认值,如果不指定,就不会输出任何东西
startIndex字符子串起始索引
size字符长度
partitionCount分区(分片)数量
defaultPartition默认分片(在分片数量定义时, 字符标示的分片编号不在分片数量内时,使用默认分片)
partitionLengthhash求模基数 ; length*count=1024 (出于性能考虑)
partitionCount分区数
hashSlicehash运算位 , 根据子字符串的hash运算 ; 0 代表 str.length(), -1 代表 str.length()-1 , 大于0只代表数字自身 ; 可以理解为substring(start,end),start为0则只表示0
dateFormat日期格式
sBeginDate开始日期
sEndDate结束日期,如果配置了结束日期,则代码数据到达了这个日期的分片后,会重复从开始分片插入
sPartionDay分区天数,默认值 10 ,从开始日期算起,每个10天一个分区

4.Server配置文件

在server.xml配置文件中主要包含了Mycat的系统配置信息,其中有两个重要的标签:

1)system标签

在system标签中配置的是Mycat的系统属性,包括端口号、SQL统计等等之类的属性。

image-20220712223610382

常用的属性以及含义列表如下。

属性取值含义
charsetutf8设置Mycat的字符集, 字符集需要与MySQL的字符集保持一致
nonePasswordLogin0,10为需要密码登陆、1为不需要密码登陆 ,默认为0,设置为1则需要指定默认账户
useHandshakeV100,1使用该选项主要的目的是为了能够兼容高版本的jdbc驱动, 是否采用HandshakeV10Packet来与client进行通信, 1:是, 0:否
useSqlStat0,1开启SQL实时统计, 1 为开启 , 0 为关闭 ; 开启之后, MyCat会自动统计SQL语句的执行情况 ; mysql -h 127.0.0.1 -P 9066 -u root -p 查看MyCat执行的SQL, 执行效率比较低的SQL , SQL的整体执行情况、读写比例等 ; show @@sql ; show @@sql.slow ; show @@sql.sum ;
useGlobleTableCheck0,1是否开启全局表的一致性检测。1为开启 ,0为关闭 。
sqlExecuteTimeout1000SQL语句执行的超时时间 , 单位为 s ;
sequnceHandlerType0,1,2用来指定Mycat全局序列类型,0 为本地文件,1 为数据库方式,2 为时间戳列方式,默认使用本地文件方式,文件方式主要用于测试
sequnceHandlerPattern正则表达式必须带有MYCATSEQ或者 mycatseq进入序列匹配流程 注意MYCATSEQ_有空格的情况
subqueryRelationshipChecktrue,false子查询中存在关联查询的情况下,检查关联字段中是否有分片字段 .默认 false
useCompression0,1开启mysql压缩协议 , 0 : 关闭, 1 : 开启
fakeMySQLVersion5.5,5.6设置模拟的MySQL版本号
defaultSqlParser由于MyCat的最初版本使用了FoundationDB的SQL解析器, 在MyCat1.3后增加了Druid解析器, 所以要设置defaultSqlParser属性来指定默认的解析器; 解析器有两个 : druidparser 和 fdbparser, 在MyCat1.4之后,默认是druidparser, fdbparser已经废除了
processors1,2…指定系统可用的线程数量, 默认值为CPU核心 x 每个核心运行线程数量; processors 会影响processorBufferPool, processorBufferLocalPercent, processorExecutor属性, 所有, 在性能调优时, 可以适当地修改processors值
processorBufferChunk指定每次分配Socket Direct Buffer默认值为4096字节, 也会影响BufferPool长度, 如果一次性获取字节过多而导致buffer不够用, 则会出现警告, 可以调大该值
processorExecutor指定NIOProcessor上共享 businessExecutor固定线程池的大小; MyCat把异步任务交给 businessExecutor线程池中, 在新版本的MyCat中这个连接池使用频次不高, 可以适当地把该值调小
packetHeaderSize指定MySQL协议中的报文头长度, 默认4个字节
maxPacketSize指定MySQL协议可以携带的数据最大大小, 默认值为16M
idleTimeout30指定连接的空闲时间的超时长度;如果超时,将关闭资源并回收, 默认30分钟
txIsolation1,2,3,4初始化前端连接的事务隔离级别,默认为 REPEATED_READ , 对应数字为3 READ_UNCOMMITED=1; READ_COMMITTED=2; REPEATED_READ=3; SERIALIZABLE=4;
sqlExecuteTimeout300执行SQL的超时时间, 如果SQL语句执行超时,将关闭连接; 默认300秒;
serverPort8066定义MyCat的使用端口, 默认8066
managerPort9066定义MyCat的管理端口, 默认9066

2)user标签

在user标签中主要是配置那些用户可以登陆到Mycat,该用户必须在数据库中存在,并且可以配置用户针对逻辑库、逻辑表的一些权限,如果同时对逻辑库或者逻辑表都设置了权限,那么逻辑表的权限大于逻辑库的权限。

image-20220712223249888

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/495297.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

transformers的tokenizer总结

1.BPE&#xff08;byte-pair encoding) 根据字母搭配出现的频率组成词根。 初始vocabulary&#xff1a;["b", "g", "h", "n", "p", "s", "u"] 假设训练数据中有10个hug,5个pug,12个pun&#xff0c;4…

教育数字化调研团走进锐捷,共议职业教育数字化转型新思路

为贯彻落实国家教育数字化战略行动部署和2024年全国教育工作会议精神,加快推进职业教育数字化转型与发展,梳理职业教育数字化转型的现状、问题及发展趋势,并总结展示职业教育数字化转型的好经验、好做法,培育职业教育数字化创新成果,推动数字技术与职业教育深度融合、提高数字化…

学习JavaEE的日子 Day32 线程池 上

Day32 线程池 1.引入 一个线程完成一项任务所需时间为&#xff1a; 创建线程时间 - Time1线程中执行任务的时间 - Time2销毁线程时间 - Time3 2.为什么需要线程池(重要) 线程池技术正是关注如何缩短或调整Time1和Time3的时间&#xff0c;从而提高程序的性能。项目中可以把Time…

PostgreSQL关系型数据库介绍与部署

使用背景 在过去的几年中&#xff0c;PostgreSQL的使用量逐渐增加&#xff0c;而Oracle和MySQL的使用量则有所下降。这主要是由于以下几个原因&#xff1a;开源和免费、功能丰富、可扩展性强、安全性高、跨平台支持好、社区活跃、成熟稳定。这些因素使得PostgreSQL成为了许多开…

2014年认证杯SPSSPRO杯数学建模A题(第二阶段)轮胎的花纹全过程文档及程序

2014年认证杯SPSSPRO杯数学建模 A题 轮胎的花纹 原题再现&#xff1a; 轮胎被广泛使用在多种陆地交通工具上。根据性能的需要&#xff0c;轮胎表面常会加工出不同形状的花纹。在设计轮胎时&#xff0c;往往要针对其使用环境&#xff0c;设计出相应的花纹形状。   第二阶段问…

深度学习语义分割篇——DeepLabV1原理详解篇

&#x1f34a;作者简介&#xff1a;秃头小苏&#xff0c;致力于用最通俗的语言描述问题 &#x1f34a;专栏推荐&#xff1a;深度学习网络原理与实战 &#x1f34a;近期目标&#xff1a;写好专栏的每一篇文章 &#x1f34a;支持小苏&#xff1a;点赞&#x1f44d;&#x1f3fc;、…

UMEDITOR – 支持WORD上传的富文本编辑器

1.下载代码 https://gitee.com/xproer/zyoffice-umeditor1x 2.引入组件 3.配置接口 效果

使用yolov9来实现人体姿态识别估计(定位图像或视频中人体的关键部位)教程+代码

yolov9人体姿态识别&#xff1a; 相较于之前的YOLO版本&#xff0c;YOLOv9可能会进一步提升处理速度和精度&#xff0c;特别是在姿态估计场景中&#xff0c;通过改进网络结构、利用更高效的特征提取器以及优化损失函数等手段来提升对复杂人体姿态变化的捕捉能力。由于YOLOv9的…

出口落叶就能获取暴利,他却要断了这条财路!学会人生算法重启装置应用!——早读(逆天打工人爬取热门微信文章解读)

重启装置的应用&#xff0c;你学会了吗&#xff1f; 引言Python 代码第一篇 人民日报 出口落叶就能获取暴利&#xff0c;他却要断了这条财路&#xff01;第二篇 人民日报 来啦 早班车新闻要闻社会政策 结尾 昨日之覆辙 非明日之方向 泰戈尔曾言 你不能拽着自己的头发离开地面 因…

电商企业如何用数据打造破局利器:电商API数据采集实时接口助力企业618双十一各大活动

在电商行业中&#xff0c;618大促无疑是一场引爆商机的盛宴。 随着市场环境的变更&#xff0c;如何在这样高强度的活动期间脱颖而出&#xff0c;成为每个品牌都需要面对的重要问题。 大促期间&#xff0c;实时、准确的数据是核心竞争力。因为在大促中&#xff0c;核心渠道、核…

HBase的Python API(happybase)操作

一、Windows下安装Python库&#xff1a;happybase pip install happybase -i https://pypi.tuna.tsinghua.edu.cn/simple 二、 开启HBase的Thrift服务 想要使用Python API连接HBase&#xff0c;需要开启HBase的Thrift服务。所以&#xff0c;在Linux服务器上&#xff0c;执行如…

PCL 彩色点云RGB转灰度并显示

目录 一、算法原理1、原理概述2、参考文献二、代码实现三、结果展示本文由CSDN点云侠原创,原文链接。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的爬虫与GPT。 一、算法原理 1、原理概述 不同要素之间的灰度差异较为明显。点云灰度值与RGB属性的关系为:

Mysql数据库:高级SQL语言详解

目录 前言 一、按关键字排序查询 1、单字段排序 1.1 按某一字段升序排序 1.2 按某一字段降序排序 1.3 结合where进行条件进行排序 2、多字段排序 2.1 按多字段升序排序 2.2 按多字段降序排序 2.3 案例操作 3、区间判断及查询不重复记录 3.1 区间判断 3.1.1 AND/OR…

【数据结构】链表习题之反转链表和删除链表中等于给定值 val 的所有节点

&#x1f451;个人主页&#xff1a;啊Q闻 &#x1f387;收录专栏&#xff1a;《数据结构》 &#x1f389;道阻且长&#xff0c;行则将至 前言 今天的博客是关于链表的题目&#xff0c;力扣上的题目之反转链表和删除链表中等于给定值 val 的所有节点 一.反转…

PMP考试难不难,通过率怎样?

PMP考试自从新考纲调整后有几次考试难度是非常高的&#xff0c;那段时间我也看网上好多机构通过率都不咋地&#xff0c;当时也是因为官方的出题难度稍高&#xff0c;还组织了免费的重考&#xff0c;也是后来逐渐开始归于平常了吧&#xff0c;直到现在都是我认为比较简单的选择题…

Go通道机制与应用详解

目录 一、概述二、Go通道基础通道&#xff08;Channel&#xff09;简介创建和初始化通道通道与协程&#xff08;Goroutine&#xff09;的关联nil通道的特性 三、通道类型与操作通道类型1. 无缓冲通道 (Unbuffered Channels)2. 有缓冲通道 (Buffered Channels) 通道操作1. 发送操…

杂货铺 | 使用 Github Pages 和 Hexo 搭建自己的独立博客

文章目录 &#x1f4da;Step1&#xff1a;安装Node.js和Git&#x1f4da;Step2&#xff1a;安装并初始化配置Hexo&#x1f4da;Step3&#xff1a;本地查看效果&#x1f4da;Step4&#xff1a;将博客部署到Github Pages上&#x1f407;创建项目代码库&#x1f407;配置SSH密钥&a…

VUE 支持 超大上G,多附件上传

代码&#xff1a;https://gitee.com/xproer/up6-vue-cli 1.引入up6组件 2.配置接口地址 接口地址分别对应&#xff1a;文件初始化&#xff0c;文件数据上传&#xff0c;文件进度&#xff0c;文件上传完毕&#xff0c;文件删除&#xff0c;文件夹初始化&#xff0c;文件夹删除&…

应急 | BuleHero挖矿蠕虫最新变种分析

背 景 挖矿蠕虫病毒BuleHero擅长利用各类漏洞攻击、弱密码爆破攻击。病毒作者不断更新变种&#xff0c;是近期最活跃的挖矿蠕虫病毒之一。攻击者最新的BuleHero挖矿蠕虫实现入侵后&#xff0c;还会释放挖矿程序&#xff0c;使服务器的资源被消耗挖矿&#xff0c;极大影响正常业…

【蓝桥杯】蓝桥杯算法复习(三)

&#x1f600;大家好&#xff0c;我是白晨&#xff0c;一个不是很能熬夜&#x1f62b;&#xff0c;但是也想日更的人✈。如果喜欢这篇文章&#xff0c;点个赞&#x1f44d;&#xff0c;关注一下&#x1f440;白晨吧&#xff01;你的支持就是我最大的动力&#xff01;&#x1f4…