一、mycat概述

  mycat是阿里巴巴企业下的开源的,基于JAVA语言编写的MySQL数据库中间件,可以像使用MySQL一样来使用Mycat,对于开发人员来说根本感觉不到mycat的存在。之前在国内使用数据库分库分表,读写分离最主流的就是使用mycat,但是截止到今日2023-12-13日,mycat的网站的下载链接已经不能打开了,不知道是服务器暂时出问题,还是没有人维护了,以后都不在支持更新下载了,但是作为曾经的主流中间件,我个人觉得还是有必要学习一下。我之前保留了Mycat1.6的linux版本现在分享给大家

  mycat1.6: 链接: https://pan.baidu.com/s/1fq8LddDexRBqzBhZi4760Q 提取码: hjif

  JDK8: 链接: https://pan.baidu.com/s/1sQhSR5GgmxB3STpihOqCAw 提取码: 0b6l

  mysql-connector的jar包:链接: https://pan.baidu.com/s/1kxhqT8eB-V5Az5qpxT8nhw 提取码: 23pu

   

 

二、准备测试环境

  2.1 JDK 安装

    因为mycat是基于JAVA语言编写的,所以在安装mycat的时候,需要先安装JDK,mycat需要的JDK8,可以使用我给的JDK链接下载后安装,也可以直接在线安装。

    在线安装指令:yum install java-1.8.0-openjdk* -y (基于centos7上的安装)

    安装好之后,运行 java -version,看到一下输出表示安装成功

[root@localhost centos7]# java -version
openjdk version "1.8.0_392"
OpenJDK Runtime Environment (build 1.8.0_392-b08)
OpenJDK 64-Bit Server VM (build 25.392-b08, mixed mode)

  2.2 MySQL服务器准备

    因mycat主要功能有分库分表和读写分离,所以至少需要准备两台具有mysql(8.0.27)服务的服务器,这里我准备了三台测试服务器.

    服务器1:192.168.3.90 安装了JDK8, MySQL-8.0.27

    服务器2:192.168.3.91 安装了JDK8, MySQL-8.0.27,mycat1.6

    服务器3:192.168.3.92 安装了JDK8, MySQL-8.0.27

    说明服务器1和服务器3作为mysql服务器使用,服务器2即作为mysql服务器使用,也作为mycat服务器使用。

    

  2.3 Mycat准备

    将下载好的 Mycat-server-1.6.7.3-release-20210913163959-linux.tar.gz 和 mysql-connector-java-8.0.27.jar 放在192.168.3.91服务器的 /usr/local/下

    

    解压 Mycat : tar -zxvf Mycat-server-1.6.7.3-release-20210913163959-linux.tar.gz    

    

    解压之后就会有一个mycat文件夹

三、Mycat文件目录

  进入到mycat文件夹,可以看到里面有5个文件夹一个版本说明的文件

  

  • bin: 存放可执行文件,用于启动停止mycat
  • conf: 存放mycat的配置文件
  • lib: 存放mycat的项目依赖包(jar包)
  • logs: 存放mycat的日志文件

  说明:因为Mycat1.6 默认的mysql连接器是是mysql5+的版本,现在我的mysql版本都是8+的,所以需要将mycat的mysql连接器替换一下,而替换的文件,就是我给大家下载的mysql-connector-java-8.0.27.jar,这是mysql8+的的连接器。

  替换步骤,首先进入到mycat的lib文件中找到:mysql-connector-java-5.1.35.jar ,然后删除,在将我给大家的 mysql-connector-java-8.0.22.jar 复制进来

  

  

  注意:复制的这个进入是没有执行权限了,需要给mysql-connector-java-8.0.27.jar 增加执行权限:chmod 777 mysql-connector-java-8.0.27.jar

  

四、mycat逻辑结构

  

  说明:mycat只做逻辑处理,并不保存数据,其真实数据仍然是保存在mysql数据库中的。

五、mycat小案例

  5.1 需求

    现有tb_order数据表,表中数据量很大,磁盘IO及容量都达到瓶颈,现在需要对tb_order表进行数据分片,分为三个数据节点,每个节点主机位于不同的服务器上,在dataNode1,dataNode2和dataNode3中TB_ORDER的表结构一样,保存的数据不一样,即采用水平分表的策略保存数据。结构如下:  

    

  5.2 创建数据库

    原始数据库:里面处理系统创建的数据库外,没有任何自己创建的数据库。

    

    现在需要根据需求在每个服务器上都创建db01数据库

    

  5.3 mycat分片配置schema.xml

    在mycat中做分片配置的主要是在conf文件夹下面的schema.xml中配置,里面有关于逻辑库、逻辑表、数据节点、节点主机、分片规则等配置。

    

    修改后的schema.xml如下

    

  5.4 mycat 用户及权限配置server.xml

    server.xml的配置比较多,我们只需要更改其中user的部分

    

  5.5 mycat 启动

    切换到mycat的安装目录中的bin文件夹下,执行如下指令 ./mycat start (启动) 和 ./mycat stop (停止),mycat 默认端口 8066

    

    注意:我们要想判断mycat是否启动成功可以使用 tail -f /usr/local/mycat/logs/wrapper.log 查看日志,如果日志中出现"MyCAT Server startup successfully. see logs in logs/mycat.log" 则说明启动成功

  5.6 mycat 登录

    登录指令:mysql -h 192.168.3.91 -P 8066 -uroot -p, 这个指令是和普通的mysql数据库连接是一样的,所以使用mycat对程序员来说是无感的。

    

    然后创建TB_ORDER表,这是报了一个错误:ERROR 1105 (HY000): backend connect: java.lang.IllegalArgumentException: Invalid DataSource:0

    

    这里报的错误未必就是其具体的错误描述,至于到底是什么错误,需要我们去看一下mycat.log中的具体问题

    

    这个错误表明数据库服务器在192.168.3.30上因为连接错误被阻止了。你可能在某个地方有一台尝试连接到这个数据库服务器的设备或应用程序,导致了连接错误。需要使用mysqladmin -u root -p flush-hosts 解除阻止就行了。

    

    注意:mysqladmin是mysql的指令,需要进入到mysql安装目录下的bin目录下,或者将该指令添加到了环境变量中,方可直接使用。

      

    在此创建表,即可成功

    

    

  关于mycat小案例,启动mycat,使用mycat连接数据库,使用mycat创建表就演示到这里,后面的博客继续讲解mycat的使用

  

MySQL运维4-Mycat入门的更多相关文章

  1. 转:三思!大规模MySQL运维陷阱之基于MyCat的伪分布式架构

    在微信公众号看到一篇关于mycat的文章,觉得分析的很不错,给大家分享一下 三思!大规模MySQL运维陷阱之基于MyCat的伪分布式架构 原文链接:https://mp.weixin.qq.com/s ...

  2. MySQL运维开发之路

    MySql h1 { color: rgba(0, 60, 128, 1); text-align: center } h1:hover { color: rgba(0, 255, 111, 1) } ...

  3. MySQL运维工具

    Mysql运维过程中设计的各类工具以及各个场景的的命令行的分类.大体总结如下的xmind图片(.xmind附件 加 Q1123654342). 大体上分为: 实例管理工具.高可用工具.慢日志查询工具. ...

  4. mysql运维必会的一些知识点整理

    (1)基础笔试命令考察 1.开启MySQL服务 /etc/init.d/mysqld start service mysqld start systemctl start mysqld 2.检测端口是 ...

  5. mysql运维

    反反复复装了好多次的mysql,上学的时候从来没有考虑过稳定性,装起来,能跑通,增删改查没有问题万事大吉.参与工作后参与平台搭建和维护,平台的稳定性是首先必须要考虑的问题,之前装mysql使用经历了密 ...

  6. MySQL运维开发相关的所有工具

    http://www.ruzuojun.com/topic/592.html   Percona Toolkit 安装使用 http://cenalulu.github.io/mysql/mysql- ...

  7. 美图秀秀DBA谈MySQL运维及优化

    美图秀秀DBA谈MySQL运维及优化 https://mp.weixin.qq.com/s?__biz=MzI4NTA1MDEwNg==&mid=401797597&idx=2& ...

  8. mysql运维必会的一些知识点整理(转自民工哥)

    (1)基础笔试命令考察 1.开启MySQL服务 /etc/init.d/mysqld start service mysqld start systemctl start mysqld 2.检测端口是 ...

  9. 搭建稳固的MySQL运维体系

    MySQL 监控要点 MySQL 监控要点,主要涉及服务器和 MySQL 两个方向的监控告警. 在这两个监控告警方向需要重点关注监控策略.监控趋势图及报警方式. 监控策略指的是每个监控项的告警阈值,例 ...

  10. 公司没有 DBA,Mysql 运维自己来

    如果你的公司有 DBA,那么我恭喜你,你可以无视 Mysql 运维.如果你的公司没有 DBA,那你就好好学两手 Mysql 基本运维操作,行走江湖,防身必备. 环境:CentOS7 版本: 一.虚拟机 ...

随机推荐

  1. Python图片与Base64相互转换

    import base64 #必须的 pic=open("img.png","rb")#读取本地文件 pic_base=base64.b64encode(pic ...

  2. HTML一键打包APK工具 如何进行实名认证购买和激活

    HTML一键打包APK工具 价格表 授权时长 价格 1小时 49 1天 99 1个月 199 1个季度 399 半年 599 1年 799 付费版功能 功能点 免费版 付费版 去除广告信息 × √ 去 ...

  3. Solution -「HNOI 2016」最小公倍数(lacks of code)

    Description Link. 给出一个带权无向图,边权为 \(2^{a}\cdot3^{b}\) 形式. 给出 \(q\) 组形如 \(u,v,a,b\) 的询问,问 \(u,v\) 中是否存在 ...

  4. 洛谷题解 | P1046 陶陶摘苹果

    ​ 目录 题目描述 输入格式 输出格式 输入输出样例 说明/提示 题目思路 AC代码 题目描述 陶陶家的院子里有一棵苹果树,每到秋天树上就会结出 10 个苹果.苹果成熟的时候,陶陶就会跑去摘苹果.陶陶 ...

  5. Python常用模块-20个常用模块总结

    目录 time模块 datetime模块 random 模块 os 模块 sys 模块 json 和 pickle 模块 hashlib和hmac 模块 logging 模块 numpy 模块 pan ...

  6. 【动画进阶】神奇的背景,生化危机4日食 Loading 动画还原

    最近,在 Steam 玩一款老游戏(生化危机 4 重置版),其中,每当游戏转场的过程中,都有这么一个有趣的 Loading 动画: 整个效果有点类似于日食效果,中间一圈黑色,向外散发着太阳般的光芒. ...

  7. element ui的多个表格复选框,展开列显示错误

    今天在公司写页面的时候碰到一个bug,我们的那个页面上有多个表格. 用v-if来判断显示,然后再使用复选框和展开列的时候出了问题.先是复选框,第二个表格的复选框下一列不显示,我试了试,在下面的一列都会 ...

  8. python~windows自动化工具 uiautomation库

    微软提供了关于自动化操作PC端桌面应用程序的工具,官方描述为: Microsoft UI Automation is an accessibility framework that enables W ...

  9. ExtJS的使用方法汇总(1)——配置和表格控件使用

    在网上差一些关于ExtJS的相关资料,看到这篇博客写的不错,拿出来分享一下! 博客文章:ExtJS的使用方法汇总(1)--配置和表格控件使用              ExtJS的使用方法汇总(2)- ...

  10. 内存与CPU:计算机默契交互的关键解析

    内存 内存和CPU之间的交互是计算机体系结构中至关重要的一部分.它们之间的互动类似于一对不可分割的爱侣,彼此相互依赖且密不可分.没有内存,CPU无法执行程序指令,这样计算机就会变得毫无意义.同样地,如 ...