mycat配置文件的详细介绍


这篇文章主要为大家分享mycat的配置文件。文中还介绍了mycat常用的几个分片算法的计算过程和使用方法,希望大家通过这篇文章能有所收获。由上图可以看到 Mycat 的核心配置文件均采用xml格式,这几个配置文件的用途如下:应用连接Mycat服务时,Mycat首先会通过server.xml中的配置信息进行用户认证。用户通过验证后,所看到的逻辑库、逻辑表都是schema.xml中所配置的。当使用了水平切分时,Mycat会通过rule.xml里配置的规则来定位具体的物理数据库位置,从而完成写入/读取数据。用于配置 Mycat 的系统参数,其格式如下:配置 Mycat 服务端口示例:常见的系统参数举例:用于配置Mycat的访问用户及权限,其格式如下:配置示例:除了配置对库的权限可能还不够,有时候我们需要配置用户对某些表的访问权限。如下示例:dml属性配置的数字是权限位,分别对应着insert,update,select,delete四种权限。例如,当dml的值为0110时,表示拥有updateselect权限,不具有insertdelete权限。所以权限位为1时代表拥有对应的操作权限,为0时代表没有该操作权限。在该示例中,mall用户对:以上配置用户的示例中,密码都是以明文的形式写在配置文件中。但用户的密码是安全敏感的,一般不会直接在配置文件中写明文密码,而是写一个加密过后的密码。否则只要拥有查看server.xml文件的权限,就能轻易获取到各个用户的密码,这是非常不安全的。因此,Mycat 提供了一个工具用于加密明文密码,该工具在一个jar包内,可使用如下命令对密码进行加密:参数说明:执行成功后,会得到一个加密后的字符串:复制该字符串,替换配置文件中的明文密码,如下示例:我们都知道Mycat是使用Java进行开发的,所以其日志框架也是使用Java生态圈内的log4j2。Mycat日志相关的配置都在 log4j2.xml 文件中,本小节将介绍一些常用的配置项。用于配置 Mycat 日志输出格式,默认如下:更多Pattern取值详见官方文档这里截取了一段 Mycat 的日志内容,可以看到与Pattern是一一对应上的:用于配置 Mycat 的日志输出级别,默认为info级别:关于log4j2的内建日志级别详见官方文档当我们需要通过Mycat实现数据分片时就得用到rule.xml配置文件,该文件用于配置:这是一个分片规则的配置示例:上面示例中所提到的<function>标签是用于配置表的分片算法或者说分片函数,如下示例:每个分片算法的所需参数可能不一样,所以property标签是可以有多个的,其属性也因具体的分片算法而异。如下示例:Mycat 内置了非常多的分片算法,并且我们也可以针对实际情况自行开发属于自己的分片算法。我们来看看常用分片算法都有哪些:简单取模分片算法的工作原理:
配置示例:总结:当需要取模的列为非整型时,就可以使用哈希取模分片算法。其工作原理如下图:
配置示例:总结:前两种分片算法都是通过算法本身去计算出分片位置,是无法人工控制的。如果需要人工控制分片位置时,就可以使用到分片枚举算法。该算法使得我们可以指定一些枚举值来对分片位置进行控制,其实也就相当于是人工指定了某些数据应该到哪个分片。例如,某张表中有个存储用户所在区域id的列,我们希望将区域id与数据库所在的区域进行映射,以实现区域id为1的数据被分片到区域1数据库中,区域id为2的数据被分片到区域2数据库中,以此类推。在这种场景下就可以使用分片枚举算法,其工作原理如下图:
配置示例:总结:以上所介绍到的分片算法都是根据列进行分片的,在实际工作中我们可能会遇到这样一个需求:需要通过字符串的前几位或后几位进行分片。例如,通过订单号的前五位进行分片计算,或按用户的姓氏进行分片。在这种场景下,就可以使用字符串范围取模分片算法。例如,需要对ABCDEFGHI这个字符串的前三位进行分片计算,其计算过程如下图:
工作原理:
配置示例:总结:用途:schema 标签用于定义逻辑库,示例:使用了schema 标签定义逻辑库之后,还需要使用table 标签定义逻辑表。示例:dataNode 标签用于定义数据节点,数据节点指向的是存储逻辑表的物理数据库。示例:dataHost 标签用于定开发云主机域名义后端物理数据库主机信息,该标签内有两个子标签,可以定义一组数据库主机信息。例如,定义一组主从集群结构的数据库主机信息:
在一个dataHost内可以定义多个writeHostreadHost。但是,如果writeHost指定的后端数据库宕机,那么这个writeHost绑定的所有readHost都将不可用。另一方面,由于这个writeHost宕机系统会自动的检测到,并切换到备用的writeHost上去。配置示例:另外,slaveThreshold 属性是用于配合writeType属性实现根据主从延时来进行主从切换的,其官方文档描述如下:1.4 开始支持MySQL主从复制状态绑定的读写分离机制,让读更加安全可靠,配置如下:MyCAT 心跳检查语句配置为show slave statusdataHost 上定义两个新属性:switchType="2"slaveThreshold="100",此时意味着开启MySQL主从复制状态绑定的读写分离与切换机制,Mycat心跳机制通过检测show slave status 中的”Seconds_Behind_Master“、”Slave_IO_Running“、”Slave_SQL_Running” 三个字段来确定当前主从同步的状态以及Seconds_Behind_Master 主从复制时延,当Seconds_Behind_Master > slaveThreshold时,读写分离筛选器会过滤掉此Slave机器,防止读到很久之前的旧数据,而当主节点宕机后,切换逻辑会检查Slave上的Seconds_Behind_Master是否为0,为0时则表示主从同步,可以安全切换,否则不会切换。heartbeat 标签内指明用于和后端数据库进行心跳检查的语句。例如,MySQL可以使用select user(),Oracle可以使用select 1 from dual 等。这个标签还有一个connectionInitSql属性,主要是当使用Oracla数据库时,需要执行的初始化SQL语句就这个放到这里面来。例如:alter session set nls_date_format='yyyy-mm-dd hh34:mi:ss'注:如果是配置主从切换的语句在1.4之后必须是:show slave status这两个标签都用于配置一组主从数据库的相关信息,Mycat用这两个标签配置的连接信息实例化后端连接池。唯一不同的是,writeHost 配置写实例(master)、readHost 配置读实例(salve),并且readHostwriteHost 的子标签。通过这两个标签可以组合读/写实例以满足系统的要求。在一个dataHost内可以定义多个writeHostreadHost。但是,如果writeHost指定的后端数据库宕机,那么这个writeHost绑定的所有readHost都将不可用。另一方面,当一个writeHost宕机时系统会自动检测到,并切换到备用的writeHost 上去。这两个标签的属性相同,这里就一起介绍:
看完上述内容,你们对mycat的配置文件有进一步的了解吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注开发云行业资讯频道,感谢各位的阅读。

相关推荐: mysql是如何添加索引的

本文主要给大家简单讲讲mysql是如何添加索引的,相关专业术语大家可以上网查查或者找一些相关书籍补充一下,这里就不涉猎了,直奔主题,希望可以给大家带来一些实际帮助。 1、添加PRIMARY KEY(主键索引) 2、添加UNIQUE(唯一索引)3、添加INDEX…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 06/09 15:13
下一篇 06/09 15:14

相关推荐