当前位置: 首页 > news >正文

《Mycat分布式数据库架构》之配置详解

文章目录

        • 1、server.xml配置文件
          • 1.1 user标签
          • 1.2 system标签
        • 2、schema.xml配置文件
        • 3、rule.xml配置文件

前文回顾:
《Mycat分布式数据库架构》之原理及架构
《Mycat分布式数据库架构》之搭建详解


本文大佬超主要讲解Mycat的3个配置文件,也就是server.xml、schema.xml和rule.xml。

1、server.xml配置文件

server.xml 配置文件包含了Mycat的系统配置信息,对应的源码是SystemConfig.java。它有两个重要的标签,分别是user、system。


1.1 user标签
<user name="test">
	<property name="password">test</property>
	<property name="schemas">TESTDB</property>
	<property name="read0nly">true</property>
	<property name= "benchmark">11111</property>
	<property name= "usingDecrypt">1</property>
</user>

server.xml中的标签并不多,user 标签主要用于定义登录Mycat的用户和权限。在如上配置中定义了用户名和密码都为test的用户,该用户可以访问的schema只有TESTDB。

我们可以修改user标签的name属性来指定用户名,修改password的值来修改密码,修改readOnly的值为true 或false来限制用户的读写权限。如果需要同时访问多个schema,则多个schema之间使用英文逗号隔开,例如:

<property name="schemas">TESTDB, db1, db2</property>
  • benchmark属性
    通过设置benchmak属性的值来限制前端的整体连接数量,如果其值为0或不对其进行设置,则表示不限制连接数量。例如:
<property name="benchmark">1000</property>
  • usingDecrypt 属性
    通过设置usingDecrypt 属性的值来开启密码加密功能。默认值为0,表示不开启加密,值为1表示开启加密。

1.2 system标签

system标签与系统属性有关,部分属性介绍如下:

  • charset 属性
    字符集设置。

  • defaultSqlParser 属性
    由于 mycat 最初是时候 Foundation DB 的 sql 解析器,而后才添加的 Druid 的解析器。所以这个属性用来指定默认的解析器。

  • processors 属性
    这个属性主要用于指定系统可用的线程数,默认值为机器 CPU 核心线程数。

  • processorBufferChunk 属性
    这个属性指定每次分配 Socket Direct Buffer 的大小,默认是 4096 个字节。这个属性也影响 buffer pool 的长度。如果一次性获取的数过大 buffer 不够用 经常出现警告,则可以适当调大。

  • processorBufferPool 属性
    这个属性指定 bufferPool 计算比例值。由于每次执行 NIO 读、写操作都需要使用到 buffer,系统初始化的时候会建立一定长度的 buffer 池来加快读、写的效率,减少建立 buffer 的时间。

  • processorBufferLocalPercent 属性
    前面提到了 ThreadLocalPool。这个属性就是用来控制分配这个 pool 的大小用的,但其也并不是一个准确的值,也是一个比例值,默认值100。

  • processorExecutor 属性
    这个属性主要用于指定 NIOProcessor 上共享的 businessExecutor 固定线程池大小。mycat 在需要处理一些异步逻辑的时候会把任务提交到这个线程池中。新版本中这个连接池的使用频率不是很大了,可以设置一个较小的值。

  • sequnceHandlerType 属性
    指定使用 Mycat 全局序列的类型。0 为本地文件方式,1 为数据库方式,2 为时间戳序列方式,3 为分布式ZK ID 生成器,4 为 zk 递增 id 生成。


2、schema.xml配置文件

schema.xml 作为 MyCat 中重要的配置文件之一,管理着 MyCat 的逻辑库、表、分片规则、DataNode 以及 DataSource。

schema 标签用于定义 MyCat 实例中的逻辑库,MyCat 可以有多个逻辑库,每个逻辑库都有自己的相关配置。可以使用 schema 标签来划分这些不同的逻辑库。如果不配置 schema 标签,所有的表配置,会属于同一个默认的逻辑库。

  • dataNode
    该属性用于绑定逻辑库到某个具体的 database 上,1.3 版本如果配置了dataNode,则不可以配置分片表,1.4 可以配置默认分片,只需要配置需要分片的表即可。

  • checkSQLschema
    当该值设置为true时,如果执行语句select * from TESTDB.users;则MyCat会把语句修改为select * from users;。即把表示 schema 的字符去掉,避免发送到后端数据库执行时报错(ERROR1146 (42S02): Table ‘testdb.users’ doesn’t exist)。
    不过,即使设置该值为 true ,如果语句所带的是并非是 schema 指定的名字,例如:select * from db1.users; 那么 MyCat 并不会删除 db1 这个字段,如果没有定义该库的话则会报错,所以在提供 SQL语句的最好是不带这个字段。

  • sqlMaxLimit
    当该值设置为某个数值时。每条执行的 SQL 语句,如果没有加上 limit 语句,MyCat 也会自动的加上所对应的值。例如设置值为 100,执行select * from TESTDB.users;的效果为和执行select * from TESTDB.users limit 100;相同。

  • table 标签
    table 标签定义了 MyCat 中的逻辑表,所有需要拆分的表都需要在这个标签中定义。


3、rule.xml配置文件

rule.xml 里面就定义了我们对表进行拆分所涉及到的规则定义。我们可以灵活的对表使用不同的分片算法,或者对表使用相同的算法但具体的参数不同。

这个文件里面主要有 tableRule 和 function 这两个标签。在具体使用过程中可以按照需求添加 tableRule 和 function。

  • tableRule标签
    name 属性指定唯一的名字,用于标识不同的表规则。
    rule 标签则指定对物理表中的哪一列进行拆分和使用什么路由算法。
    columns 标签内指定要拆分的列名字。
    algorithm 标签使用 function 标签中的 name 属性。连接表规则和具体路由算法。当然,多个表规则可以连接到同一个路由算法上。table 标签内使用。让逻辑表使用这个规则进行分片。
<tableRule name="rule1">
	<rule>
		<columns>id</columns>
		<algorithm>func1</algorithm>
	</rule>
</tableRule>
  • function 标签
    name 指定算法的名字。
    class 制定路由算法具体的类名字。
    property 为具体算法需要用到的一些属性。
<function name="hash-int" class="io.mycat.route.function.PartitionByFileMap">
	<property name="mapFile">partition-hash-int.txt</property>
</function>

后续继续更新Mycat数据切分实战以及应用层连接Mycat等,敬请关注。


更多技术干货,请持续关注程序员大佬超。
原创不易,转载请注明出处。

相关文章:

  • springboot bean找不到问题
  • [河北银行 2022 CTF]
  • 通过数据库建表实战来理解数据库知识
  • 200A FS3L200R10W3S7FB11 EasyPACK 950V IGBT模块
  • 微信小程序知识点汇总
  • 用于标记和纯化的325143-98-4,Biotin-SS-Sulfo-NHS ester生物素化 试剂
  • 多御安全浏览器全新chromium95内核全面兼容
  • opencv图像滤波
  • SAP事务码开关控制,TCODE
  • 关于WebGL,Three.js,OpenGL,Direct3D,CSS3D,GPU
  • 武汉星起航跨境:北京商务局发文,明确促进跨境电子商务发展
  • 单分散荧光碳量子点-聚苯乙烯微球/量子点纳米线功能化聚苯乙烯微球探针制备过程
  • 深度学习专题交流(第05~08次课):深度神经网络基本原理
  • .NET MVC、 WebAPI、 WebService【ws】、NVVM、WCF、Remoting
  • Maven打包插件介绍
  • 【刷算法】求1+2+3+...+n
  • create-react-app项目添加less配置
  • CSS盒模型深入
  • CSS实用技巧干货
  • es6
  • gulp 教程
  • interface和setter,getter
  • Java知识点总结(JavaIO-打印流)
  • MyEclipse 8.0 GA 搭建 Struts2 + Spring2 + Hibernate3 (测试)
  • PHP 使用 Swoole - TaskWorker 实现异步操作 Mysql
  • spring cloud gateway 源码解析(4)跨域问题处理
  • 持续集成与持续部署宝典Part 2:创建持续集成流水线
  • 京东美团研发面经
  • 理解 C# 泛型接口中的协变与逆变(抗变)
  • 前端代码风格自动化系列(二)之Commitlint
  • 学习Vue.js的五个小例子
  • Android开发者必备:推荐一款助力开发的开源APP
  • 智能情侣枕Pillow Talk,倾听彼此的心跳
  • ### Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLTr
  • #WEB前端(HTML属性)
  • (1/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
  • (22)C#传智:复习,多态虚方法抽象类接口,静态类,String与StringBuilder,集合泛型List与Dictionary,文件类,结构与类的区别
  • (33)STM32——485实验笔记
  • (6)【Python/机器学习/深度学习】Machine-Learning模型与算法应用—使用Adaboost建模及工作环境下的数据分析整理
  • (附源码)springboot人体健康检测微信小程序 毕业设计 012142
  • (附源码)ssm高校升本考试管理系统 毕业设计 201631
  • (转)Mysql的优化设置
  • .bat批处理(三):变量声明、设置、拼接、截取
  • .NET CORE 第一节 创建基本的 asp.net core
  • .NET Core 项目指定SDK版本
  • .Net IE10 _doPostBack 未定义
  • .net 托管代码与非托管代码
  • .NET/ASP.NETMVC 深入剖析 Model元数据、HtmlHelper、自定义模板、模板的装饰者模式(二)...
  • .NET/C# 的字符串暂存池
  • .NET/C# 使用 #if 和 Conditional 特性来按条件编译代码的不同原理和适用场景
  • .NET/C# 在 64 位进程中读取 32 位进程重定向后的注册表
  • .NET6使用MiniExcel根据数据源横向导出头部标题及数据
  • .NET8.0 AOT 经验分享 FreeSql/FreeRedis/FreeScheduler 均已通过测试
  • .NET多线程执行函数
  • @configuration注解_2w字长文给你讲透了配置类为什么要添加 @Configuration注解