Mycat实战,高性能mysql集群

周六将编写内容,敬请期待..

在这之前,我先把上篇文章里面的效果图展示下,不知道大家是否和我完成的效果一样!

Mycat实战,高性能mysql集群_第1张图片

上图中,右侧是运行中的5节点mysql集群和2节点的haproxy集群,在每个haproxy节点中还运行着一个keepalived服务,同时在宿主机上也运行了一个keepalived服务,虚拟ip和宿主机ip保持 一致(也可以自己定义其它ip);左侧是用navicat连接了5节点mysql服务和keepalived,这里为了演示效果,实际应用中,web应用只需要连接keepalived暴露的3306即可,和使用单节点mysql一样使用即可。接下来,我们看一下haproxy提供的监控页面:

Mycat实战,高性能mysql集群_第2张图片

通过监控页面,我们可以时时看到每个节点健康状况,现在每个节点背景色都是绿色的,如果出现了严重不可用的问题,对应节点背景颜色会显示红色,关于上次文章的复习就到这里。敬请期待本次mycat实战,如何实现高性能mysql集群。

大家久等了!今天也要加油鸭!

在前面我们已经解决了数据库单节点问题,可靠的pxc集群提供了高可用存储服务,接下来我来讲解如何通过数据库中间件

mycat来实现数据库的垂直拆分和水平拆分。

垂直拆分:

在项目初期,我们把所有的表都放在一个数据库中,随着业务增长,数据库性能出现瓶颈,于是我们把表进行按功能划分,例如:用户模块,订单模块,车辆管理,权限管理等单独拆分出来作为独立的数据库,以便提升业务处理能力。

Mycat实战,高性能mysql集群_第3张图片

在本次演示中,我创建了4个容器来分别代表4个业务对应的数据库,分别是:db-customer,db-vehicle,db-rbac,db-order

在实际项目中,这4个db也对应4个web服务,这里不做介绍了。

在这4个数据库中,我分别建了一张表:customer_login,vehicle_info,rbac_menu,order

通过navicat连接到这4个数据库

Mycat实战,高性能mysql集群_第4张图片

基础数据库有了,下面我们开始在另外一台服务器上安装mycat服务

通过weget直接下载解压即可:

wget http://dl.mycat.io/1.6.5/Mycat-server-1.6.5-release-20180122220033-linux.tar.gz

由于mycat是java开发的,因此依赖java环境,没有配置java环境的,自行配置

 

 

Mycat实战,高性能mysql集群_第5张图片

这里面是我配置好的java环境变量,mycat环境变量,可以看出我的mycat是解压在/usr/local/目录下的

进入mycat/bin目录下

Mycat实战,高性能mysql集群_第6张图片

mycat提供两种启动方式,看到上面两个箭头了吗,这里我选择mycat 命令方式:

启动:mycat start

停止:mycat stop

启动前我们需要修改一下mycat内存配置参数

Mycat实战,高性能mysql集群_第7张图片

如图所示,这里我设置为1G,根据自己服务器内存大小合理设置,我的服务器是2G内存

修改完毕,保存,退出,启动mycat

查看启动结果

Mycat实战,高性能mysql集群_第8张图片

查看wrapper.log日志,如果最后出现

MyCAT Server startup successfully. see logs in logs/mycat.log

说明启动成功!接下来我们是垂直拆分的关键步骤,配置逻辑库和物理库的关系

Mycat实战,高性能mysql集群_第9张图片

在conf目录下我讲4个配置文件

日志配置:log4j2.xml

水平拆分规则:rule.xml

mycat对外曝露的逻辑库配置:server.xml

mycat对内物理库配置:schema.xml

由于每个文件的配置参数很多,我这里只是抛砖引玉,不做过多介绍,大家通过本次练习后自己下去了解。

Mycat实战,高性能mysql集群_第10张图片

Mycat实战,高性能mysql集群_第11张图片

通过以上2个文件的配置,数据库的垂直拆分简单实现就完成了,我们启动mycat服务,用navicat连接8066端口

Mycat实战,高性能mysql集群_第12张图片

对开发人员来说,直接连接mycat189上的数据库,和之前一样操作。这就是所谓的对开发透明,在此之前我们通过在应用程序中配置多数据源来实现垂直拆分,十分不便。好了,休息一会儿,玩把农药,后面再说水平拆分是怎么实现的。

你可能感兴趣的:(mysql,java)