下载:建议大家选择1.6-RELEASE版本,毕竟是比较稳定的版本。
Mycat的安装其实只要解压下载的目录就可以了,非常简单。安装完成后,目录如下:
Mycat的配置文件都在conf目录里面,这里介绍几个常用的文件:
Mycat作为主数据库中间件,肯定是与代码弱关联的,所以代码是不用修改的,使用Mycat后,连接数据库是不变的,默认端口是8066。连接方式和普通数据库一样,如:jdbc:mysql://192.168.0.2:8066/
server.xml
示例
我这里配置了一个账号test密码也是test,针对数据库lunch,读写权限都有,没有针对表做任何特殊的权限。
schema.xmlschema.xml是最主要的配置项,首先看我的配置文件。
schema:
table:
dataNode
dataHost
配置如下:
注意:Mycat主从分离只是在读的时候做了处理,写入数据的时候,只会写入到writehost,需要通过mycat的主从复制将数据复制到readhost,这个问题当时候我纠结了好久,数据写入writehost后,readhost一直没有数据,以为是自己配置的问题,后面才发现Mycat就没有实现主从复制的功能,毕竟数据库本身自带的这个功能才是最高效稳定的。
至于其他的场景,如同时主从和分表分库也是支持的了,只要了解这个实现以后再去修改配置,都是可以实现的。而热备及故障专业官方推荐使用haproxy配合一起使用,大家可以试试。
Mycat的启动也很简单,启动命令在Bin目录:
##启动mycatstart##停止mycatstop##重启mycatrestart如果在启动时发现异常,在logs目录中查看日志。
mycat启动后,执行命令不成功,可能实际上配置有错误,导致后面的命令没有很好的执行。
Mycat带来的最大好处就是使用是完全不用修改原有代码的,在mycat通过命令启动后,你只需要将数据库连接切换到Mycat的地址就可以了。如下面就可以进行连接了:
mysql-h192.168.0.1-P8806-uroot-p123456连接成功后可以执行sql脚本了。所以,可以直接通过sql管理工具(如:navicat、datagrip)连接,执行脚本。我一直用datagrip来进行日常简单的管理,这个很方便。
Mycat还有一个管理的连接,端口号是9906.
mysql-h192.168.0.1-P9906-uroot-p123456连接后可以根据管理命令查看Mycat的运行情况,当然,喜欢UI管理方式的人,可以安装一个Mycat-Web来进行管理,有兴趣自行搜索。
简而言之,开发中使用Mycat和直接使用Mysql机会没有差别。
使用Mycat后总会遇到一些坑,我将自己遇到的一些问题在这里列一下,希望能与大家有共鸣:
Mycat是不是配置以后,就能完全解决分表分库和读写分离问题?Mycat配合数据库本身的复制功能,可以解决读写分离的问题,但是针对分表分库的问题,不是完美的解决。或者说,至今为止,业界没有完美的解决方案。分表分库写入能完美解决,但是,不能完美解决主要是联表查询的问题,Mycat支持两个表联表的查询,多余两个表的查询不支持。其实,很多数据库中间件关于分表分库后查询的问题,都是需要自己实现的,而且节本都不支持联表查询,Mycat已经算做地非常先进了。分表分库的后联表查询问题,大家通过合理数据库设计来避免。
Mycat支持哪些数据库,其他平台如.net、PHP能用吗?官方说了,支持的数据库包括MySQL、SQLServer、Oracle、DB2、PostgreSQL等主流数据库,很赞。尽量用Mysql,我试过SQLServer,会有些小问题,因为部分语法有点差异。
Mycat非JAVA平台如.net、PHP能用吗?可以用。这一点MyCat做的也很棒。