分布式数据库中间件 MyCat 搞起来!
关于 MyCat 的铺垫文章已经写了三篇了:
今天终于可以迎接我们的大 Boss 出场了!
MyCat 简介
前面文章我们提到,如果数据量比较大的话,我们需要对数据进行分库分表,分完之后,原本存在一个数据库中的数据,现在就存在多个数据库中了,就像下面这样:

那么此时 MyCat 所扮演的角色就是分布式数据库中间件!
MyCat 是一个开源的分布式数据库中间件,它实现了 MySQL 协议,在开发者眼里,他就是一个数据库代理,我们甚至可以使用 MySQL 的客户端工具以及命令行来访问 MyCat 。
MyCat 现在已经不仅仅只支持 MySQL 了,同时也支持 MSSQL、Oracle、DB2、以及 PostgreSQL等主流数据库。甚至像 MongoDB 这种 NoSQL 也支持。
快速入门
搭建读写分离
要搞 MyCat ,一般要先搭建好 MySQL 的读写分离,MySQL 的读写分离可以参考松哥之前的这篇文章:
MyCat 安装
环境:
- CentOS7
- JDK1.8
MyCat 使用 Java 开发,因此,运行 MyCat ,一定要具备 Java 环境,配置 Java 运行环境这个比较容易,网上资料也很多,我就不详细介绍了。
Java 环境安装好之后,首先下载 MyCat:
wget http://dl.mycat.io/1.6.7.1/Mycat-server-1.6.7.1-release-20190213150257-linux.tar.gz
下载完成后,对下载文件进行解压。
tar -zxvf Mycat-server-1.6.7.1-release-20190213150257-linux.tar.gz
解压成功后,会出现一个 mycat 目录,进入到 mycat/conf 目录,对 mycat 进行配置:
首先来配置 schema.xml 文件:

- 首先在
schema中指定逻辑库的名字,逻辑库是指MyCat中的库,这个库不存储数据,数据存储在MySQL中的物理库中。 - 逻辑库中配置逻辑表,配置逻辑表时,需要指定
dataNode节点,dataNode就是指数据库存储的位置 - 配置
dataNode,dataNode指定dataHost和物理库的名字。 dataHost则配置MySQL的主机和从机的位置,登录密码等。主机和从机都可以配置多个。
配置完 schema.xml 后 ,接下来配置 server.xml。
server.xml 中主要配置 MyCat 的登录用户名和密码,以及需要操作的逻辑库。

配置完成后,接下来就可以启动 MyCat 了 。
执行 MyCat 解压目录下的 bin 目录下的 mycat 命令,可以启动 MyCat
./bin/mycat start
如果启动后,提示无法创建 mycat.pid 文件,就自己手动创建一个 mycat.pid 文件。启动成功之后,就可以在本地连接 MyCat 了,连接方式和 MySQL 一样,唯一的区别在于端口号不同。
在连接 MyCat 之前,先在 MySQL 物理库中创建 db1、db2 以及 db3 三个数据库。
使用 SQLyog 连接:

也可以在 cmd 命令行登录 MyCat :

登录成功后 ,在 MyCat 的窗口中,执行如下命令,创建表:
create table t_user (id integer primary key,username varchar(255))
执行成功后,我们会发现物理库中出现了相应的表。
接下来,手动往各个物理库的物理表中存储一条数据,然后在 MyCat 窗口中查询:

这样就可以查询到 三个库中的三个表中的数据。
问题分析
整个过程不难,但是有的小伙伴在第一次配置的过程中还是容易出错,因此我这里还是来说两句,出错了要如何定位。
一般来说,配置 MyCat 出错,问题可能发生在两个阶段。第一个阶段就是客户端连接 MyCat 出错,第二个阶段就是 MyCat 连接 MySQL 出错。
无论你是使用 SQLyog 还是 Navicat ,我们在连接数据库的过程中,都可以先测试连接,很多人卡在这一步。
如果在测试连接的时候就连接不通,说明是 MyCat 的问题,这个时候检查步骤如下:
- 首先当然是查看日志信息,看能不能找出端倪
- 通过 jps 命令查看 mycat 是否成功启动
- 检查 server.xml 中配置是否正确,用户名密码是否输入正确
这是第一种可能的问题,第二种问题就是测试连接没问题,但是测试完后,却连接不上。反映到 Navicat 上,就是测试连接没问题,测完之后,点击连接名要打开连接时,Navicat 就崩了,出现这个问题一般是 MyCat 在连接 MySQL 出问题了,这个时候就要去检查 schema.xml 文件中关于 MySQL 主机和从机的配置是否正确,数据库地址是否正确,用户名密码是否正确。
结语
好了,本文主要简单介绍了下 MyCat 的安装问题,下篇文章我们来看 MyCat 中的分片规则问题。
参考资料:
关注公众号【江南一点雨】,专注于 Spring Boot+微服务以及前后端分离等全栈技术,定期视频教程分享,关注后回复 Java ,领取松哥为你精心准备的 Java 干货!

分布式数据库中间件 MyCat 搞起来!的更多相关文章
- 开源分布式数据库中间件MyCat源码分析系列
MyCat是当下很火的开源分布式数据库中间件,特意花费了一些精力研究其实现方式与内部机制,在此针对某些较为重要的源码进行粗浅的分析,希望与感兴趣的朋友交流探讨. 本源码分析系列主要针对代码实现,配置. ...
- 分布式数据库中间件Mycat百亿级数据存储(转)
此文转自: https://www.jianshu.com/p/9f1347ef75dd 2013年阿里的Cobar在社区使用过程中发现存在一些比较严重的问题,如高并发下的假死,心跳连接的故障,只实现 ...
- 分布式数据库中间件 MyCat | 分库分表实践
MyCat 简介 MyCat 是一个功能强大的分布式数据库中间件,是一个实现了 MySQL 协议的 Server,前端人员可以把它看做是一个数据库代理中间件,用 MySQL 客户端工具和命令行访问:而 ...
- 分布式数据库中间件TDDL、Amoeba、Cobar、MyCAT架构比较分
比较了业界流行的MySQL分布式数据库中间件,关于每个产品的介绍,网上的资料比较多,本文只是对几款产品的架构进行比较,从中可以看出中间件发展和演进路线 框架比较 TDDL Amoeba Cobar M ...
- 华为云分布式数据库中间件DDM和开源MyCAT对比
前言 华为云分布式数据库中间件(Distributed Database Middleware)是解决数据库容量.性能瓶颈和分布式扩展问题的中间件服务,提供分库分表.读写分离.弹性扩容等能力,应对海量 ...
- 开源数据库中间件-MyCat
开源数据库中间件-MyCat产生的背景 如今随着互联网的发展,数据的量级也是成指数的增长,从GB到TB到PB.对数据的各种操作也是愈加的困难,传统的关系型数据库已经无法满足快速查询与插入数据的需求.这 ...
- 浅析分布式数据库中间件DDM
前言 DDM是什么?这是华为云Paas推出的分布式数据库中间件,DDM(Distributed Database Middleware)是一个实现了Mysql协议栈的服务器,前端用户可以把它看做一个数 ...
- 数据库中间件MyCat学习总结(1)——MyCat入门简介
为什么需要MyCat? 虽然云计算时代,传统数据库存在着先天性的弊端,但是NoSQL数据库又无法将其替代.如果传统数据易于扩展,可切分,就可以避免单机(单库)的性能缺陷. MyCat的目标就是:低成本 ...
- 分布式数据库中间件–(3) Cobar对简单select命令的处理过程
友情提示:非原文链接可能会影响您的阅读体验,欢迎查看原文.(http://blog.geekcome.com) 原文地址:http://blog.geekcome.com/archives/284 在 ...
随机推荐
- spring集成Quartz时区问题造成任务晚执行八小时
项目中在Spring中集成了Quartz,配置的每日凌晨执行的定时任务都是到了八点多才执行,经过一番查找,可能是时区问题造成的. 一种解决办法是在JVM启动参数中增加 --Duser.timezone ...
- vue 使用jquery (全局)
1 全局配置jquery , 个人习惯 , 离不开jquery了 然后重启项目 就 完事
- Msg DisPatch
一天写了个Carlife 协议数据分流器 #include <stdio.h> #include <string.h> typedef unsigned char uint8_ ...
- wpf控件开发基础(5) -依赖属性实践
原文:wpf控件开发基础(5) -依赖属性实践 知识回顾 接上篇,回顾这三篇讲了什么东西 首先说明了属性的现存问题,然后介绍了依赖属性的基本用法及其解决方案,由于依赖属性以静态属性的方式存在,进而又介 ...
- 数据结构 - 只需选择排序(simple selection sort) 详细说明 和 代码(C++)
数据结构 - 只需选择排序(simple selection sort) 本文地址: http://blog.csdn.net/caroline_wendy/article/details/28601 ...
- 记一次虚拟化环境下Windows IO性能的解析
前言随着云计算技术与服务的发展和进步,越来越多的客户选择将业务部署到云端.但由于引入了虚拟化层,在业务部署过程中经常会遇到IO问题,通常也不易调试.本文主要介绍利用perf.systemtap等工具, ...
- C# NetCore使用AngleSharp爬取周公解梦数据 起因和页面数据拆解
起因 最近突然心血来潮想做个小程序,学习一下小程序开发流程,然后新手就想做个查询的就可以了,少点交互能力,这种思来想去还是周公解梦比较靠谱, 网上一搜,还真有小程序源码,但是这里面似乎数据都是取第三方 ...
- 各种Message中文解释(一部分)
函数功能:该函数将指定的消息发送到一个或多个窗口.此函数为指定的窗口调用窗口程序,直到窗口程序处理完消息再返回.该函数是应用程序和应用程序之间进行消息传递的主要手段之一. 函数原型:LRESUL ...
- WPF无边框实现拖动效果
这是在做弹幕的时候遇到的一个需求 透明背景,拖动弹幕=.= private void Window_MouseLeftButtonDown(object sender, MouseButtonEven ...
- WPF特效-鱼游动动画3
原文:WPF特效-鱼游动动画3 WPF不支持骨骼,故使用3DMax导出了序列模型文件(.mtl;.obj). 方法1: 使用Blend 2013打开所有obj文件,拖动排列一下即可在usercontr ...