Java开发分库分表需要解决的问题及mycat是怎样实现分库分表的?( 六 )


至于其他的场景 。如同时主从和分表分库也是支持的了 。只要了解这个实现以后再去修改配置 。都是可以实现的 。而热备及故障专业官方推荐使用haproxy配合一起使用 。大家可以试试 。
使用
Mycat的启动也很简单 。启动命令在Bin目录:

Java开发分库分表需要解决的问题及mycat是怎样实现分库分表的?

文章插图
如果在启动时发现异常 。在logs目录中查看日志 。
wrapper.log 为程序启动的日志 。启动时的问题看这个
mycat.log 为脚本执行时的日志 。SQL脚本执行报错后的具体错误内容,查看这个文件 。mycat.log是最新的错误日志 。历史日志会根据时间生成目录保存 。
mycat启动后 。执行命令不成功 。可能实际上配置有错误 。导致后面的命令没有很好的执行 。
Mycat带来的最大好处就是使用是完全不用修改原有代码的 。在mycat通过命令启动后 。你只需要将数据库连接切换到Mycat的地址就可以了 。如下面就可以进行连接了:
Java开发分库分表需要解决的问题及mycat是怎样实现分库分表的?

文章插图
连接成功后可以执行sql脚本了 。
所以 。可以直接通过sql管理工具(如:navicat、datagrip)连接 。执行脚本 。我一直用datagrip来进行日常简单的管理 。这个很方便 。
Mycat还有一个管理的连接 。端口号是9906.
Java开发分库分表需要解决的问题及mycat是怎样实现分库分表的?

文章插图
连接后可以根据管理命令查看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做的也很棒 。

推荐阅读