vlambda博客
学习文章列表

最受好评的数据库中间件Mycat的正确下载和配置详细解析

最受好评的数据库中间件Mycat的正确下载和配置详细解析


前言


Mycat是一个广受好评的数据库中间件,已经在很多产品上进行使用了。希望通过这篇文章的介绍,能学会Mycat的使用。

文件下载


  • Mycat官网:http://www.mycat.org.cn/


最受好评的数据库中间件Mycat的正确下载和配置详细解析


  • 建议大家选择 1.6-RELEASE 版本,毕竟是比较稳定的版本.



最受好评的数据库中间件Mycat的正确下载和配置详细解析


根据不同的系统选择不同的版本。包括linux、windows、mac,作者考虑还是非常周全的,当然,也有源码版的。(ps:源码版的下载后,只要配置正确,就可以正常运行调试).


  • 配置环境:


    |- 最重要的MySql环境,因为MyCat就是服务于MySql数据库.

    |-  jdk下载(1.7以上) –mycat是基于java开发的,需要java编译环境.


  • Mycat的安装其实只要解压下载的目录就可以了,非常简单。


文件结构


1. 文件列表:

bin:mycat命令,启动(startup_nowrap.bat)、重启、停止等
catlet:catlet为Mycat的一个扩展功能
conf:Mycat 配置信息,重点关注*
lib:Mycat引用的jar包,Mycat是java开发的
logs:日志文件,包括Mycat启动的日志和运行的日志。

2. 主要配置文件:

       主要的配置文件都在conf文件夹下

  • conf-|

  • server.xml:Mycat的配置文件,设置账号、参数等 -- 对用的用户名和密码进行设置

  • schema.xml:Mycat对应的物理数据库和数据库表的配置 --- 所有的物理表,物理数据库之间的联系都在这个xml文件下

  • rule.xml:Mycat分片(分库分表)规则---就是对主从分离的一种规范根据id 或者name

  • Mycat作为主数据库中间件,肯定是与代码弱关联的,所以代码是不用修改的,使用Mycat后,连接数据库是不变的,默认端口是8066。连接方式和普通数据库一样,如jdbc:mysql://192.168.0.2:8066/






配置解析


1. server.xml


 
<Property>标签基本都是处理MYCAT运行监控、读写量控制等基本配置要求,可以不用修改。
<User> 标签是基于连接MYCAT的必要配置,配置用户名、密码、逻辑库名称,如下图:

最受好评的数据库中间件Mycat的正确下载和配置详细解析


2. server.xml

  • <Schema>

功能:管理着MyCat的逻辑库、表、分片规则,具体属性。

属性:name(定义自己的逻辑数据库,因为要映射到自己的MYCAT之中)。checkSQLschema(布尔值,设置ture的时候我们进行查询:数据库名.表名,这样的方式,MYCAT会自动去掉数据库名)。sqlMaxLimit(设置查询的时候默认返回多少数据,如果在SQL设置了Limit,这个属性不会影响到)。


最受好评的数据库中间件Mycat的正确下载和配置详细解析


  • <Table>

功能:标签定义了MyCat中的逻辑表,所有需要拆分的表都需要在这个标签中定义,如图示。

属性:name(定义逻辑表的表名)


primaryKey(定义逻辑表中的主键)

autoIncrement(布尔值,定义为true时指定这个表增长主键)

dataNode(里面需要去定义dataNode的另外一个配置,这是定位到物理数据库的物理表中,通过逻辑表映射到真正的物理表中,可以写入多个库中的表,可实现分库)

rule(该属性用于指定逻辑表要使用的规则名字,规则名字在 rule.xml 中定义)


最受好评的数据库中间件Mycat的正确下载和配置详细解析


  • <dataNode>

功能:标签定义 MyCat中的数据节点,也就是我们通常所说的数据分片。一个dataNode标签就是一个独立的数据分片,如图示。

属性:name(定义数据节点的名字,这个名字需要是唯一的,我们需要在table标签上应用这个名字,来建立表与分片对应的关系)

dataHost(该属性用于定义该分片属于哪个数据库实例的,属性值是引用dataHost标签上定义的name属性)

database(该属性用于定义该分片属性哪个具体数据库实例上的具体库)


最受好评的数据库中间件Mycat的正确下载和配置详细解析


  • <dataHost>

功能:作为Schema.xml中最后的一个标签,该标签在mycat逻辑库中也是作为最底层的标签存在,直接定义了具体的数据库实例、读写分离配置和心跳语句,如下图

属性:name(唯一标识dataHost标签,供dataNode的标签使用)

maxCon(指定每个读写实例连接池的最大连接)

minCon(指定每个读写实例连接池的最小连接,初始化连接池的大小)


balance{

负载均衡类型,目前的取值有3 种:

1. balance="0", 不开启读写分离机制,所有读操作都发送到当前可用的writeHost上。

2. balance="1",全部的readHost与stand bywriteHost参与select语句的负载均衡,简单的说,当双主双从模式(M1->S1,M2->S2,并且 M1 与 M2 互为主备),正常情况下,M2,S1,S2都参与select语句的负载均衡。

3. balance="2",所有读操作都随机的在writeHost、readhost上分发。

4. balance="3",所有读请求随机的分发到wiriterHost对应的readhost执行,writerHost 不负担读压力


writeType{

负载均衡类型,目前的取值有 3 种:

1. writeType="0", 所有写操作发送到配置的第一个writeHost,第一个挂了切到还生存的第二个 writeHost,重新启动后已切换后的为准,切换记录在配置文件中:dnindex.properties.

2. writeType="1",所有写操作都随机的发送到配置的 writeHost

-0 表示不自动切换。

- 1 默认值,自动切换。

- 2 基于 MySQL 主从同步的状态决定是否切换。


dbType(指定后端连接的数据库类型,目前支持二进制的mysql协议,还有其他使用JDBC连接的数据库。例如:mongodb、oracle、spark等)

dbDriver(指定连接后端数据库使用的Driver,目前可选的值有native和JDBC)

switchType(是否设置主从切换,

-1:不切换

1:自动切换

2:基于MySQL主从状态

3:基于集群配置于MySQLgalary cluster切换机制)

<heartbeat>这个标签内指明用于和后端数据库进行心跳检查的语句,用于初始化SQL语句


最受好评的数据库中间件Mycat的正确下载和配置详细解析


3. rule.xml


rule.xml里面就定义了我们对表进行拆分所涉及到的规则定义。

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

简单来说就是在function标签下定义好分表分片规则,然后应用到tableRule标签中,最后映射到schema.xml,function标签如下图


最受好评的数据库中间件Mycat的正确下载和配置详细解析


Function标签:

|---  name 指定算法的名字。

|---  class 制定路由算法具体的类名字。

|---  property 为具体算法需要用到的一些属性。

tableRule标签设置如下图


最受好评的数据库中间件Mycat的正确下载和配置详细解析


tableRunle标签:

|---  name 属性指定唯一的名字,用于标识不同的表规则。

|---  rule 标签则指定对物理表中的哪一列进行拆分和使用什么路由算法

|---  columns 指定要拆分的列名字。

|---  algorithm 使用 function 标签中的 name 属性。连接表规则和具体路由算法。多个表规则可以连接到同一个路由算法上。table 标签内使用。让逻辑表使用这个规则进行分片。


"你可以到mycat官网上面获取《Mycat权威指南》

也可以到mycat github上面获取代码以及相关文档。


小普持续推出有价值的文章,关注“普适极客”👇

♥一起在技术研发的最前沿共同成长!♥