MySQL运维4-Mycat入门
一、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入门的更多相关文章
- 转:三思!大规模MySQL运维陷阱之基于MyCat的伪分布式架构
在微信公众号看到一篇关于mycat的文章,觉得分析的很不错,给大家分享一下 三思!大规模MySQL运维陷阱之基于MyCat的伪分布式架构 原文链接:https://mp.weixin.qq.com/s ...
- MySQL运维开发之路
MySql h1 { color: rgba(0, 60, 128, 1); text-align: center } h1:hover { color: rgba(0, 255, 111, 1) } ...
- MySQL运维工具
Mysql运维过程中设计的各类工具以及各个场景的的命令行的分类.大体总结如下的xmind图片(.xmind附件 加 Q1123654342). 大体上分为: 实例管理工具.高可用工具.慢日志查询工具. ...
- mysql运维必会的一些知识点整理
(1)基础笔试命令考察 1.开启MySQL服务 /etc/init.d/mysqld start service mysqld start systemctl start mysqld 2.检测端口是 ...
- mysql运维
反反复复装了好多次的mysql,上学的时候从来没有考虑过稳定性,装起来,能跑通,增删改查没有问题万事大吉.参与工作后参与平台搭建和维护,平台的稳定性是首先必须要考虑的问题,之前装mysql使用经历了密 ...
- MySQL运维开发相关的所有工具
http://www.ruzuojun.com/topic/592.html Percona Toolkit 安装使用 http://cenalulu.github.io/mysql/mysql- ...
- 美图秀秀DBA谈MySQL运维及优化
美图秀秀DBA谈MySQL运维及优化 https://mp.weixin.qq.com/s?__biz=MzI4NTA1MDEwNg==&mid=401797597&idx=2& ...
- mysql运维必会的一些知识点整理(转自民工哥)
(1)基础笔试命令考察 1.开启MySQL服务 /etc/init.d/mysqld start service mysqld start systemctl start mysqld 2.检测端口是 ...
- 搭建稳固的MySQL运维体系
MySQL 监控要点 MySQL 监控要点,主要涉及服务器和 MySQL 两个方向的监控告警. 在这两个监控告警方向需要重点关注监控策略.监控趋势图及报警方式. 监控策略指的是每个监控项的告警阈值,例 ...
- 公司没有 DBA,Mysql 运维自己来
如果你的公司有 DBA,那么我恭喜你,你可以无视 Mysql 运维.如果你的公司没有 DBA,那你就好好学两手 Mysql 基本运维操作,行走江湖,防身必备. 环境:CentOS7 版本: 一.虚拟机 ...
随机推荐
- 【双系统】Win10/Win11 引导 Ubuntu
目录 纲要 注意 写在最前 1. Win 分区 2. Ubuntu刻盘 3. 安装 Ubuntu 4. 配置引导 纲要 本文主要介绍了如何在已安装 Win10/Win11 前提下安装 Ubuntu 双 ...
- C++ ASIO 实现异步套接字管理
Boost ASIO(Asynchronous I/O)是一个用于异步I/O操作的C++库,该框架提供了一种方便的方式来处理网络通信.多线程编程和异步操作.特别适用于网络应用程序的开发,从基本的网络通 ...
- 数据可视化【原创】vue+arcgis+threejs 实现立体光圈闪烁效果
本文适合对vue,arcgis4.x,threejs,ES6较熟悉的人群食用. 效果图: 素材: 主要思路: 先用arcgis externalRenderers封装了一个ExternalRender ...
- 在 Net7.0环境下通过反射创建泛型实例和调用泛型方法
一.介绍 最近没事干,就用闲暇时间写点东西,也记录一下温习历程.老人说的好,好记性,不如烂笔头.时间一长,当时记忆的再清楚,都会变得模糊,索性就写博客记录下来,如果下次需要,直接打开博客就找到了,不用 ...
- containerd镜像拉取配置
背景: 公司要求部署最一套新版的k8s系统来部署生产应用,说实话很头疼.因为k8s自1.23版本之后就用不docker作为容器的默认运行时了,而是采用的containerd,这就带来了一系列的问题.没 ...
- 熟练掌握并充分利用CSS3的新特性,更新完毕。
1.1 尝试新颖的CSS3特性 首先,我们来看一个具体的案例. https://code.juejin.cn/pen/7277536985772720139 1.2 CSS3新特性简介和浏览 ...
- 文心一言 VS 讯飞星火 VS chatgpt (99)-- 算法导论9.3 5题
五.用go语言,假设你已经有了一个最坏情况下是线性时间的用于求解中位数的"黑箱"子程序.设计一个能在线性时间内解决任意顺序统计量的选择问题算法. 文心一言: 为了在线性时间内解决任 ...
- Redis和Memcache区别,优缺点对比(转)
转自 https://www.cnblogs.com/JavaBlackHole/p/7726195.html 1. Redis和Memcache都是将数据存放在内存中,都是内存数据库.不过memca ...
- Linux系列教程——Linux磁盘管理、Linux进程管理、Linux系统服务、 Linux计划任务
@ 目录 1 Linux磁盘管理 1.磁盘的基本概念 1.什么是磁盘 2.磁盘的基本结构 3.磁盘的预备知识 1.磁盘的接口类型 2.磁盘的基本术语 3.磁盘在系统上的命名方式 4.磁盘基本分区Fdi ...
- Typora +Picgo 搭建个人笔记
目录 Typora +Picgo 搭建个人笔记 一.Picgo +Github 搭建图床 1.基础设置 2. 将配置导出,方便下次使用 二.Typora:设置 : 1. 基本设置 2. 导出自动提交 ...