我的编程空间,编程开发者的网络收藏夹
学习永远不晚

怎么快速入门Mycat

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

怎么快速入门Mycat

这篇文章给大家介绍怎么快速入门Mycat ,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

什么是Mycat

至于什么是Mycat,可能在不同的角色下有不同的理解。对MySQL架构有过了解的话,都知道MySQL实际上是由Server层和存储引擎层组成的。所以对于DBA来说,Mycat 就是 MySQL 的Server层。而 Mycat 后面连接的 MySQL Server,就好象是 MySQL 的存储引擎。因此,Mycat 本身并不存储数据,数据是在后端的 MySQL 上存储的,因此数据的可靠性
以及事务等依旧是 MySQL 保证的。

对于开发人员来说,Mycat基本等同于MySQL。因为完全可以使用连接MySQL的方式去连接Mycat,除了默认端口不同之外,连接方式上没有区别。所以Mycat对于开发人员来说是透明的,只不过在SQL的使用上有一些限制。

而对于架构师来说,Mycat 是一个数据库中间件,可以用作读写分离、分表分库以及容灾备份等。对于使用Mycat的应用来说,其隐藏了数据库的存储逻辑。让我们无需在代码上去对读写分离等存储逻辑进行控制,从而达到不修改应用代码的前提下,扩展数据库架构。

由于Mycat是国内的开源项目,有非常完善且丰富的中文文档。所以本文就不对基础概念进行赘述了,建议参考Mycat权威指南在线版或到Mycat官网中了解更多关于Mycat的内容。


什么是数据库中间件

数据库中间件,就是介于数据库与应用之间,进行数据处理与交互的中间服务。由于对数据进行分片处理之后,从原有的一个库,被切分为多个分片数据库,所有的分片数据库集群构成了整个完整的数据库存储。

怎么快速入门Mycat

如上图所表示,数据被分到多个分片数据库后,应用如果需要读取数据,就要需要处理多个数据源的数据。

如果没有数据库中间件,那么应用将直接面对分片集群。那么数据源切换、事务处理以及数据聚合等问题都需要应用直接处理。这样就会导致原本该是专注于业务的应用,将会花大量的工作来处理分片后的问题,最重要的是每个应用处理将是完全的重复造轮子。

因此有了数据库中间件,应用只需要集中于业务处理。而大量的通用的数据聚合,事务,数据源切换都由中间件来处理,中间件的性能与处理能力将直接决定应用的读写性能,所以一款好的数据库中间件至关重要。


Mycat的主要作用

1、作为分布式数据库中间件使用:

Mycat不仅可以连接mysql还可以连接其他诸如oracle、sql server等数据库,因为Mycat是使用Java编写的,理论上只要Java能连接的数据库,Mycat都可以连接。这就可以使得应用无需直连数据库,而是连接Mycat,此时后端数据库对应用就是透明的。这样就可以对应用屏蔽后端数据库的复杂性,并保持连接方式的统一。

2、实现数据库集群的读写分离和负载均衡:

当系统发展到后期,数据量上来后,数据库架构通常会向集群演进。其中Replication集群方案,节点存在主从角色,也就是常说的主从架构。在这种集群下通常由主节点负责写,从节点负责读。而Mycat可以作为中间层实现读写分离,无需每个应用都写一套读写分离逻辑。并且当存在多个从节点时,Mycat还可以将读请求负载均衡到各个从节点上。

3、实现数据库的高可用:

当数据库架构是一主一从时,可以利用Mycat实现数据库的高可用。当主节点挂掉后,Mycat可以切换到从节点上进行读写。但不适用于一主多从的情况,因为主节点挂掉后,Mycat只能切换到其中一个从节点上,而不能改变节点的角色。这样就会导致剩余的从节点无法对其进行数据同步。因此,一主多从需采用MMM或MHA等方式来实现高可用。

4、对业务数据库进行垂直切分:

当系统中的写负载上来后,单个主节点开始无法承受写请求的压力,这时就需要增加主节点来分担负载。拥有多个主节点后,通常会将一个库里没有依赖关系的表拆分到不同的库中,或将一些大表拆成小表,以分散负载。这也就是数据库的垂直切分。

存在多个主节点就意味着应用可能需要对多个数据库进行操作,而Mycat可以将多个数据库抽象成一个逻辑库。这样对于应用来说就无需改动代码去操作多个数据源,只需要操作Mycat中的逻辑库即可。

5、对业务数据库进行水平切分:

当数据库进行了垂直切分后,可能依旧会有一些库的写负载比较高,或者数据量达到单表极限。那么就需要考虑进行水平切分,所谓水平切分就是分库分表。垂直切分与水平切分的区别在于:水平切分后每个库里的表结构是一样的,切分的是数据。而垂直切分则是不同的库里表结构是不一样的,切分的是表。

当数据库进行水平切分后,应用在写数据时就需要考虑应该将数据写入到哪一个库中。而Mycat可以通过特定的策略将写请求分发到某个数据库上,这样应用就只需要将写请求发给Mycat即可,无需考虑应该写哪个库。

6、控制数据库连接数量:

系统中存在比较多的应用,而每个应用都有自己的一个连接池,那么当访问量增大就有可能超出数据库的最大连接数量。此时就可以通过Mycat建立一个公共的连接池,所有的应用都统一通过这个连接池来获取数据库的连接。从而控制同时连接数据库的应用数量,起到一个限流的作用,可以保证系统更加的稳定。


Mycat基本元素

逻辑库:

通常对实际应用来说,并不需要知道Mycat的存在,业务开发人员只需要知道数据库的概念,所以数据库中间件可以被看做是一个或多个数据库集群构成的逻辑库,需要注意的是逻辑库不存储数据。所以不管中间件背后是怎么样的数据库架构,对于应用来说都是在操作一个数据库,而这个数据库就是Mycat抽象出来的逻辑库。

逻辑表:

既然有逻辑库,那么就会有逻辑表,分布式数据库中,对应用来说,读写数据的表就是逻辑表。逻辑表,可以是数据切分后,分布在一个或多个分片库中。也可以不做数据切分,不分片,只有一个表构成。同样,逻辑表也不存储数据。

逻辑表分类:

  • 分片表:数据被拆分到多个数据库中的表

  • 非分片表:数据未被拆分过的表

  • 全局表:结构类似于字典并存在于所有分片中的表,目的是解决跨分片数据 join

  • ER 表:按 ER 关系进行分片的表,目的是让子表的记录与所关联的父表记录存放在同一个数据分片上,保证数据 join不会跨库


Mycat安装

环境:

  • 系统:CentOS 7

  • JDK:11

  • Mycat:1.6.7.4

首先到官方下载地址获取下载链接,然后到linux使用如下命令进行下载并解压:

[root@txy-server ~]# cd /usr/local/class="lazy" data-src
[root@txy-server /usr/local/class="lazy" data-src]# wget http://dl.mycat.io/1.6.7.4/Mycat-server-1.6.7.4-release/Mycat-server-1.6.7.4-release-20200105164103-linux.tar.gz
[root@txy-server /usr/local/class="lazy" data-src]# tar -zxvf Mycat-server-1.6.7.4-release-20200105164103-linux.tar.gz -C /usr/local/

解压后,Mycat的目录结构如下:

[root@txy-server /usr/local/mycat]# ll -rh
total 24K
-rwxrwxrwx 1 root root  227 Jan  5 16:41 version.txt
drwxrwxrwx 2 root root 4.0K Jan  5 16:40 logs # 日志文件目录
drwxr-xr-x 2 root root 4.0K Jan  6 20:40 lib  # 库文件目录
drwxrwxrwx 4 root root 4.0K Jan  6 20:40 conf # 配置文件目录
drwxrwxrwx 2 root root 4.0K Oct 22 21:26 catlet
drwxr-xr-x 2 root root 4.0K Jan  6 20:40 bin  # 可执行文件目录
[root@txy-server /usr/local/mycat]#

为Mycat创建一个系统账户,并更改mycat目录的所属用户,因为在实际的环境中是不可能让程序拥有root账户权限的。命令如下:

[root@txy-server /usr/local]# useradd mycat -s /sbin/nologin
[root@txy-server /usr/local]# chown -R mycat:mycat mycat/

配置环境变量:

[root@txy-server ~]# vim /etc/profile
export MYCAT_HOME=/usr/local/mycat
export PATH=$PATH:$MYCAT_HOME/bin
[root@txy-server ~]# source /etc/profile

由于我这里机器内存只有2G,所以需要修改一下Mycat启动参数,将最大内存改为1G,该参数默认是2G。当然,如果你的机器内存足够的话就不需要更改:

[root@txy-server /usr/local]# vim mycat/conf/wrapper.conf
wrapper.java.additional.4=-XX:MaxDirectMemorySize=1G

启动Mycat服务:

[root@txy-server ~]# mycat start

查看日志,输出了successfully表示启动成功:

[root@txy-server ~]# more /usr/local/mycat/logs/wrapper.log |grep successfully
INFO   | jvm 1    | 2020/01/06 21:16:51 | MyCAT Server startup successfully. see logs in logs/mycat.log
[root@txy-server ~]#

Mycat启动后默认会监听8066、9066等端口,如果开启了防火墙,还需要对端口进行放行。开放端口的命令如下:

[root@txy-server ~]# firewall-cmd --zone=public --add-port=${端口号}/tcp --permanent
[root@txy-server ~]# firewall-cmd --reload

到此为止,我们就成功将Mycat服务搭建起来了。

关于怎么快速入门Mycat 就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

怎么快速入门Mycat

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Nginx怎么快速入门

本文小编为大家详细介绍“Nginx怎么快速入门”,内容详细,步骤清晰,细节处理妥当,希望这篇“Nginx怎么快速入门”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。Nginx 是一款面向性能设计的 HTTP 服务器
2023-06-28

怎么快速入门Java编程

本篇内容主要讲解“怎么快速入门Java编程”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么快速入门Java编程”吧!  自学Java编程的好处是时间自由、经济消耗低,但存在的主要问题是你无法确
2023-06-02

python 快速入门

导入#from dir1 import test#import dir1.test as test列表推到:b3 =[x for x in xing if x in ming]print(b3) li = [1, 2, 3, 4][elem
2023-01-31

Python3快速入门

Python3快速入门Python3快速入门(一)——Python简介https://blog.51cto.com/9291927/2385592Python3快速入门(二)——Python3基础https://blog.51cto.com
2023-01-31

JDBC快速入门

JDBC快速入门 详解1.0DriverManager功能1   功能22.0 connection对象 3.0 statement对象  4.0 ResultSet遍历结果集的一个案例 import java.sql.*;public class DQLte
JDBC快速入门
2020-11-18

怎么快速入门轻量快速的CI工具Drone

怎么快速入门轻量快速的CI工具Drone,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。前言公司之前一直在使用 Jenkins 作为 CI/CD 工具, Jenkins 非常强大
2023-06-19

零基础怎么快速入门Python

这篇文章主要讲解了“零基础怎么快速入门Python”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“零基础怎么快速入门Python”吧!1、Python 介绍学习一门新的语言之前,首先简单了解下
2023-06-02

Oracle快速入门_day01

公司目前项目使用到了Oracle数据库 本人之前接触不多 计划4天 将Oracle数据库 快速入门 并结合开发使用,Oracle与MySql语法相似度很高,要一起学的小伙伴压力不要太大Oracle数据库简介Oracle Database,又名Oracle RD
Oracle快速入门_day01
2016-05-18

FastAPI--快速入门(1)

FastAPI 是一个高性能 Web 框架,用于构建 API。主要特性:快速:非常高的性能,与 NodeJS 和 Go 相当快速编码:将功能开发速度提高约 200% 至 300%更少的错误:减少约 40% 的人为错误直观:强大的编辑器支持,
2023-01-31

SendPkt快速入门[Python]

SendPkt快速入门作者:gashero电邮:harry.python@gmail.com原文地址:http://gashero.yeax.com/?p=26项目主页:http://sendpkt.googlecode.com日期:200
2023-01-31

python3.x 快速入门

Edit the > 2018/6/15 11:26:53 1认识Python人生苦短,我用python - 优雅,明确,简单 是python设计哲学 - python的设计目标之一, 是让代码具备高度的可阅读性 - python 被广泛用
2023-01-31

Python语言怎样快速入门

本篇文章给大家分享的是有关Python语言怎样快速入门,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。【简介】Python是一种动态解释型的编程语言。Python可以在Windo
2023-06-17

编程热搜

目录