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

前文回顾:
《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等,敬请关注。


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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员大佬超

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值