MySQL运维5-Mycat配置

一、schema.xml

1.1 简介

schema.xml作为Mycat中最重要的配置文件之一,涵盖了Mycat的逻辑库、逻辑表、分片规则、分片节点即数据源的配置。主要包括一下三组标签

  • schema标签

    datanode标签

    datahost标签

1.2 schema标签

用于定于Mycat实例中的逻辑库,一个Mycat实例中,可以有多个数据库,可以通过schema标签来划分不同的逻辑库。Mycat中的逻辑库的概念,等同于MySQL中的database概念没需要操作某个逻辑库下的表时,就需要切换逻辑库,同MySQL一样,使用use xxxx语句。

    

核心属性:

  • name: 自定自定义的逻辑库苦命

    checkSQLschema: 在SQL语句操作时指定了数据库名称,执行时是否自动去除,true:自动去除,false不自动去除,即如果有true时,我们可以不进入数据库查询.

    sqlMaxLimit: 如果未指定limit进行查询,列表查询模式默认查询的条数。

checkSQLschema参数演示:

    

说明1:当checkSQLschema为true时,我们可以不进入数据库查询,即使用DB01.TB_ORDER的方式,但是如果checkSQLschema为false的时候,就不能这样写了,就必须要要先usr DB01;今日数据库里面在查找,所以这里大家就直接给true就行了。

1.3 schema标签中的table标签

table标签定义Mycat中逻辑库schema下的逻辑表,所有需要查分的表都需要在table标签中定义。

核心属性

  • name:定义逻辑表表名,在该逻辑库下唯一

    DataNode:定义逻辑表所属的dataNode,该属性需要与dataNode标签中的name对应,多个dataNode用逗号隔开

    rule: 分片规则的名称,分片规则名字是在rule.xml中定义的

    primaryKey: 逻辑表对应的真是表的主键

    type: 逻辑表的类型,目前逻辑表只有全局表和普通表,如果未配置,默认是普通表,全局表配置为global

1.4 dataNode标签

    

dataNode标签中定义了Mycat中的数据节点,也就是我们通常说的数据分片,一个dataNode标签就是一个独立的数据分片

核心属性

  • name:定义了数据节点名称

    dataHost:数据库实例主机名称,引用自dataHost标签中name属性

    database:定义分片所属数据库

1.5 dataHost标签

    

该标签在Mycat逻辑库中作为底层标签,直接定义了具体的数据库实例、读写分离,心跳语句。

核心属性:

  • name:唯一标识符,供上层标签使用

    maxCon/minCon:最大连接数/最小连接数

    balance:负载均衡策略,取值0,1,2,3 ,读写分离的时候,在详细说明这四个取值的意义。

    writeType:写操作分发方式(0:写操作转发到第一个writeHost,第一个挂了,切换到第二个;1:写操作随机发配到配置的writeHost)

    dbDriver:数据库驱动,支持native和jdbc,native主要支持MySQL5+,jdbc主要支持MySQL8+

1.6 schema.xml逻辑库映射

逻辑库的名字和mysql数据库中的名字可以不一致的,例如我们这里配置的逻辑库的名字是大写的DB01,而MySQL中的数据库名则是小写的db01,这取决于逻辑库和MySQL真实数据库的映射关系。

    

schema.xml整体配置流程即关系隐射示意

    

 二、rule.xml

rule.xml中定义了所有拆分表的规则,在使用过程中可以灵活的使用分片算法,或者对同一个分片算法使用不同的参数,它让分片过程可配置化,主要包含两类标签:tableRule,Function

  

  

而在schema.xml中配置的分片规则就是在这里定义的

  

说明1:在tableRule标签里面主要有columns和algorithm两个标签。

说明2:columns标签主要是分表的依据

说明3:algorithm标签主要是,分库分表的算法引用,这里algorithm里面的值就是Function标签的实现。

  

例如:auto-sharding-long 分表规则的,依据是rang-long这个算法。

  

而 rang-long这个算法就在function标签中有定义,而function标签中的class就是对应这个算法的实现类。

  

说明4:至于这里面的分库分表的规则具体的使用,我们会在后面分库分表实战章节,用到的时候在详细说。 

三、server.xml

server.xml配置文件包含了Mycat的系统配置,主要有两个重要的标签:system, user.

3.1 system标签

    

重要属性说明:

  • charset: 取值utf8: 设置Mycat的字符集,字符集需要与MySQL的字符集保持一致

    nonePasswordLogin: 取值 [0, 1], 0:需要登录密码登录,1:不需要登录密码登录,默认为0,设置为1,则需要指定默认账户

    useHandshakeV10: 取值 [0,1],使用该选项主要是为了能够兼容高低版本的jdbc驱动,是否采用handshakeV10来与client进行通讯,1:是,0:否

    useSqlStat: 取值[0,1],开启SQL实时统计 1:开启,0:关闭,开启之后Mycat会自动统计SQL语句的执行情况:mysql -h xxx.xxx.xxx.xxx -P 9066 -u root -p之后就可以查看,使用show @@sql; show @@sql.low; show @@sql.sum等,分别是查看Myact执行的sql, 执行效率比较低的SQL,SQL的整体执行情况,读写比例等等。

    useGlobelTableCheak: 取值[0,1],是否开启全局表一致性检查,1:开启,0关闭

    sqlExecuteTimeout: 取值1000等整数:SQL执行的超时时间单位为秒

    sequnceHandleType:取值[0,1,2],用来指定Mycat全局序列类型,0:本地文件,1:数据库方式,2:为时间戳方式,默认使用本地文件方式,文件方式主要用于测试

    sequnceHandlePattern: 正则表达式:必须带有MYCATSEQ或者mycatseq进入序列匹配流程

    subqueryRelationshipCheck: 取值[true,false],子查询存在关联查询的情况下,检查关联字段中是否有分片字段,默认false

    useCompression: 取值[0,1],开启mysql压缩协议,0:关闭,1:开始

    fakeMySQLVersion: 5.5,5.6,8.0.27等,设置模拟MySQL版本号

    defaultSqlParser: 由于Mycat的最初版本使用了FoundationDB的SQL解析器,在Mycat1.3后增加了Druid解析器,所以要设置defaultSqlParser属性来指定默认的解析器,解析器有两个:druidparser和fdbparser,在Mycat1.4之后默认是fruidparser,fdbparser已经废弃

    processors: 取值[1,2....] 指定系统可用的线程数量,默认值为CPU核心 乘以 每个核心运行的线程数,processors会影响processorBufferPool,processorBufferLocalPercent,processorExecutor属性,所以在性能调优时可以适当的修改processors的值

    processorBufferChunk: 指定每次分配Socker Direct Buffer默认值为4096字节,也会影响BufferPool长度,如果一次性获取字节过多而导致buffer不都用,则会出现警告,可以调大该值

    processorExecutor: 指定NIOProcessor上共享businessExecutor固定线程池的大小,Mycat把异步任务交给businessExecutor线程池,在新版本的Mycat中这个连接池使用频率不高,可以适当的把该值调小

    packetHeaderSize: 指定MySQL协议中的报文头长度,默认4个字节。

    maxPacketSize: 指定MySQL协议可以携带的数据最大大小,默认值为16M

    idleTimeout: 取值30等,指定连接的空闲时间的超时长度,如果超时将关闭资源并回收,默认30分钟

    txlsolation:取值[1,2,3,4], 初始化前端连接的事务隔离级别,默认为REPEATED_READ,对应数字3,READ_UNCOMMITED=1, READ_COMMITED=2,REPEATED_READ=3,SERIALIZABLE=4

    sqlExecuteTimeout: 取值 300 等, 执行SQL的超时时间,如果SQL语句执行超时,将关闭连接,默认300秒

    serverPort: 8066 ,定义Mycat的使用端口,默认8066

    managerPort: 9066, 定义Mycat的管理端口,默认9066

3.2 user标签

    

说明1:server.xml中允许有多个user,即同时配置多个用户的权限

说明2:如果一个账户可以访问多个逻辑库,多个逻辑库之间用逗号隔开

说明3:dml中的四个二进制数分别代表增,改,查,删的权限

说明4:如果逻辑表和逻辑库的权限冲突,则就近原则,即优先使用逻辑表的权限

文章转载自:Se7eN_HOU

原文链接:https://www.cnblogs.com/Se7eN-HOU/p/17901253.html

项目体验地址:引迈 - JNPF快速开发平台_低代码开发平台_零代码开发平台_流程设计器_表单引擎_工作流引擎_软件架构

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

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

相关文章

如何用 Cargo 管理 Rust 工程系列 丙

以下内容为本人的学习笔记,如需要转载,请声明原文链接 微信公众号「ENG八戒」https://mp.weixin.qq.com/s/viSsCaFR2x9hZOvo1PoRqA 添加依赖项 前面已经提到过在 cargo 配置文件 Cargo.toml 中如何手动添加工程依赖项,cargo 同样提供了 add …

万户 OA OfficeServer.jsp 任意文件上传漏洞复现

0x01 产品简介 万户OA是面向政府组织及企事业单位的FlexOffice自主安全协同办公平台。 0x02 漏洞概述 万户OA OfficeServer.jsp接口存在任意文件上传漏洞,攻击者可通过该漏洞上传任意文件从而控制整个服务器。 0x03 复现环境 FOFA: (banner="OASESSIONID" &a…

音频ncm格式转mp3格式

做个笔记,ncm格式转mp3格式 参考:传送门 import os import json import base64 import struct import logging import binascii from glob import glob from tqdm.auto import tqdm from textwrap import dedent from Crypto.Cipher import AES from mu…

鸿蒙开发ArkTS语言-XML解析

XML概述 XML(可扩展标记语言)是一种用于描述数据的标记语言,旨在提供一种通用的方式来传输和存储数据,特别是Web应用程序中经常使用的数据。XML并不预定义标记。因此,XML更加灵活,并且可以适用于广泛的应用…

深入理解 hash 和 history:网页导航的基础(下)

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云…

C语言——输出魔方阵

目录 一、前言: 二、算法设计: 三、代码实现: 五、效果展示: 一、前言: 魔方矩阵又称幻方,是有相同的行数和列数,并在每行每列、对角线上的和都相等的矩阵。魔方矩阵中的每个元素不能相同。你…

华为数通——网络参考模型

OSI参考模型 七层 应用层:最靠近用户的一层,为应用程序提供网络服务。 六层 表示层:数据格式转换编码格式UTF-8。 五层 会话层:双方之间建立、管理和终止会话。 四层 传输层:建立、维护和取消端到端的数据传输过…

七. 使用ts写一个贪吃蛇小游戏

之前学习了几篇的ts基础,今天我们就使用ts来完成一个贪吃蛇的小游戏。 游戏拆解 我们将我们的任务进行简单拆解分析。 首先我们应该有一个窗口,我们叫做屏幕。让蛇在里面移动,所有我们应该想到要设计一个大盒子当作地图。考虑到食物以及蛇…

Spark编程实验一:Spark和Hadoop的安装使用

一、目的与要求 1、掌握在Linux虚拟机中安装Hadoop和Spark的方法; 2、熟悉HDFS的基本使用方法; 3、掌握使用Spark访问本地文件和HDFS文件的方法。 二、实验内容 1、安装Hadoop和Spark 进入Linux系统,完成Hadoop伪分布式模式的安装。完成Ha…

字符串——OJ题

📘北尘_:个人主页 🌎个人专栏:《Linux操作系统》《经典算法试题 》《C》 《数据结构与算法》 ☀️走在路上,不忘来时的初心 文章目录 一、字符串相加1、题目讲解2、思路讲解3、代码实现 二、仅仅反转字母1、题目讲解2、思路讲解3…

DSP的ADC简单笔记

DSP不需要复用GPIO,是单独的ADC引脚,与GPIO不共用 ADC时钟在PCLKCR0寄存器 所以还要配置HSPCLK HISPCP/HSPCLK寄存器 所以ADC的输入时钟,有固定公式; 控制寄存器1 简单配置3个东西; 控制寄存器2 设置为1软件触发 控…

如何使用ArcGIS Pro拼接影像

为了方便数据的存储和传输,我们在网上获取到的影像一般都是分块的,正式使用之前需要对这些影像进行拼接,这里为大家介绍一下ArcGIS Pro中拼接影像的方法,希望能对你有所帮助。 数据来源 本教程所使用的数据是从水经微图中下载的…

GZ015 机器人系统集成应用技术样题2-学生赛

2023年全国职业院校技能大赛 高职组“机器人系统集成应用技术”赛项 竞赛任务书(学生赛) 样题2 选手须知: 本任务书共 25页,如出现任务书缺页、字迹不清等问题,请及时向裁判示意,并进行任务书的更换。参赛队…

【Qt QML 入门】TextField

TextField 是一个单行文本编辑器,它继承自TextInput,具备TextInput的所有功能,同时扩展了 TextInput 并增加了占位符文本功能和装饰选项。 自定义文本输入框: import QtQuick import QtQuick.Window import QtQuick.ControlsWindo…

【Android】MVC与MVP的区别,MVP网络请求实践

一、MVC模式 目录 一、MVC模式二、MVP模式 1、MVP的简单应用 1.1 导入相关依赖包并设置权限1.2 实现Model1.2 实现Presenter1.3 实现View1.4分析项目结构和绑定过程1.5效果展示 2、MVP结合RxJava 一、MVC模式 MVC(Model(模型)——View(视图)——Controller(控制…

QT-坦克大战游戏

QT-坦克大战游戏 一、演示效果二、关键程序三、下载链接 一、演示效果 二、关键程序 #include "score.h" Score::Score(){health30; maxHealthhealth;QLabel *label1 new QLabel(this);label1->setFrameStyle(QFrame::Plain | QFrame::Box);label1->setStyle…

element-plus 结合Vue Router时出现的问题及解决方法之一

1、单文件应用element-plus中的Menu 侧边栏 <template><el-row class"tac"><el-col :span"12"><!-- <h5 class"mb-2">Custom colors</h5> --><el-menuactive-text-color"#ffd04b"background-…

Leetcode—2414.最长的字母序连续子字符串的长度【中等】

2023每日刷题&#xff08;六十&#xff09; Leetcode—2414.最长的字母序连续子字符串的长度 实现代码 class Solution { public:int longestContinuousSubstring(string s) {int ans 1;int t 1;for(int i 1; i < s.size(); i) {if(s[i] - s[i - 1] 1) {t;ans max(an…

大数据生态圈kafka在物联网中的应用测试

背景 由物联网项目中使用到了Tbox应用管理车辆&#xff0c;在上报数据的过程中&#xff0c;需要将终端产生的数据通过kafka的produce topic customer对数据进行处理后&#xff0c;放置到mysql中。完成数据二进制到json转换工作。 Kafka的使用 查看kafka的topic ./kafka-topi…

直角三角形判断_分支结构 C语言xdoj56

问题描述 设直角三角形两条直角边长度为a和b&#xff0c;斜边长度为c&#xff0c;则a&#xff0c;b&#xff0c;c满足a^2b^2c^2&#xff0c; 输入三个整数a&#xff0c;b&#xff0c;c&#xff0c;判断对应的三角形是不是直角三角形&#xff0c;不是则输出“no”&#xff0…