可以理解下Mycat的背景和运用情形,这样利用起来比较有信心。
Mycat下载地址:http://dl.mycat.io/
官网有个文档,属于详细的先容,初次入门,看起来比较花韶光。

下载:
建议大家选择 1.6-RELEASE 版本,毕竟是比较稳定的版本。
安装:
根据不同的系统选择不同的版本。包括linux、windows、mac,作者考虑还是非常全面的,当然,也有源码版的。(ps:源码版的下载后,只要配置精确,就可以正常运行调试,这个赞一下。)
Mycat的安装实在只要解压下载的目录就可以了,非常大略。
安装完成后,目录如下:
Mycat的配置文件都在conf目录里面,这里先容几个常用的文件:
Mycat的架构实在很好理解,Mycat是代理,Mycat后面便是物理数据库。和Web做事器的Nginx类似。对付利用者来说,访问的都是Mycat,不会打仗到后真个数据库。
我们现在做一个主从、读写分离,大略分表的示例。构造如下图:
Mycat作为主数据库中间件,肯定是与代码弱关联的,以是代码是不用修正的,利用Mycat后,连接数据库是不变的,默认端口是8066。连接办法和普通数据库一样,如:jdbc:mysql://192.168.0.2:8066/
server.xml
示例
重点关注下面这段,其他默认即可。
我这里配置了一个账号test 密码也是test,针对数据库lunch,读写权限都有,没有针对表做任何分外的权限。
schema.xml
schema.xml是最紧张的配置项,首先看我的配置文件。
参数 解释 schema数据库设置,此数据库为逻辑数据库,name与server.xml中schema对应dataNode分片信息,也便是分库干系配置dataHost物理数据库,真正存储数据的数据库
每个节点的属性逐一解释:
schema:
table:
dataNode
dataHost
数据库分表分库
配置如下:
我在192.168.0.2、192.168.0.3均有数据库lunch。
lunchmenu、restaurant、userlunch、users这些表都只写入节点dn1,也便是192.168.0.2这个做事,而dictionary写入了dn1、dn2两个节点,也便是192.168.0.2、192.168.0.3这两台做事器。分片的规则为:mod-long。
紧张关注rule属性,rule属性的内容来源于rule.xml这个文件,Mycat支持10种分表分库的规则,基本能知足你所须要的哀求,这个必须赞一个,其他数据库中间件彷佛都没有这么多。
table中的rule属性对应的便是rule.xml文件中tableRule的name,详细有哪些分表和分库的实现,建议还是看下文档。我这里选择的mod-long便是将数据均匀拆分。由于我后端是两台物理库,以是rule.xml中mod-long对应的function count为2,见下面部分代码:
数据库读写分离
配置如下:
这样的配置与前一个示例配置改动如下:
删除了table分配的规则,以及datanode只有一个
datahost也只有一台,但是writehost总添加了readhost,balance改为1,表示读写分离。
以上配置达到的效果便是102.168.0.2为主库,192.168.0.3为从库。
把稳:Mycat主从分离只是在读的时候做了处理,写入数据的时候,只会写入到writehost,须要通过mycat的主从复制将数据复制到readhost,这个问题当时候我纠结了好久,数据写入writehost后,readhost一贯没有数据,以为是自己配置的问题,后面才创造Mycat就没有实现主从复制的功能,毕竟数据库本身自带的这个功能才是最高效稳定的。
至于其他的场景,犹如时主从和分表分库也是支持的了,只要理解这个实现往后再去修正配置,都是可以实现的。而热备及故障专业官方推举利用haproxy合营一起利用,大家可以试试。
利用Mycat的启动也很大略,启动命令在Bin目录:
如果在启动时创造非常,在logs目录中查看日志。
wrapper.log 为程序启动的日志,启动时的问题看这个
mycat.log 为脚本实行时的日志,SQL脚本实行报错后的详细缺点内容,查看这个文件。mycat.log是最新的缺点日志,历史日志会根据韶光天生目录保存。
mycat启动后,实行命令不堪利,可能实际上配置有缺点,导致后面的命令没有很好的实行。
Mycat带来的最大好处便是利用是完备不用修正原有代码的,在mycat通过命令启动后,你只须要将数据库连接切换到Mycat的地址就可以了。如下面就可以进行连接了:
连接成功后可以实行sql脚本了。
以是,可以直接通过sql管理工具(如:navicat、datagrip)连接,实行脚本。我一贯用datagrip来进行日常大略的管理,这个很方便。
Mycat还有一个管理的连接,端口号是9906.
连接后可以根据管理命令查看Mycat的运行情形,当然,喜好UI管理办法的人,可以安装一个Mycat-Web来进行管理,有兴趣自行搜索。
简而言之,开拓中利用Mycat和直策应用Mysql机会没有差别。
常见问题利用Mycat后总会碰着一些坑,我将自己碰着的一些问题在这里列一下,希望能与大家有共鸣:
Mycat是不是配置往后,就能完备办理分表分库和读写分离问题?
Mycat合营数据库本身的复制功能,可以办理读写分离的问题,但是针对分表分库的问题,不是完美的办理。或者说,至今为止,业界没有完美的办理方案。
分表分库写入能完美办理,但是,不能完美办理紧张是联表查询的问题,Mycat支持两个表联表的查询,多余两个表的查询不支持。 实在,很多数据库中间件关于分表分库后查询的问题,都是须要自己实现的,而且节本都不支持联表查询,Mycat已经举措看成地非常前辈了。
分表分库的后联表查讯问题,大家通过合理数据库设计来避免。
Mycat支持哪些数据库,其他平台如 .net、PHP能用吗?
官方说了,支持的数据库包括MySQL、SQL Server、Oracle、DB2、PostgreSQL 等主流数据库,很赞。
只管即便用Mysql,我试过SQL Server,会有些小问题,由于部分语法有点差异。
Mycat 非JAVA平台如 .net、PHP能用吗?
可以用。这一点MyCat做的也很棒。
参考《Mycat威信指南》: http://www.mycat.io/document/Mycat_V1.6.0.pdf
官网 :http://www.mycat.io/
如果想闇练利用Mycat,建议要仔细看看官方推举的文档,可能须要花点韶光。本文只是大略的先容下Mycat的配置,希望能快速让大家对Mycat有个认识,官方的文档理解起来也很随意马虎,只是须要的韶光更多,本文为解释的参数,请参考官方文档。