iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >Mycat的安装配置
  • 947
分享到

Mycat的安装配置

2024-04-02 19:04:59 947人浏览 八月长安
摘要

什么是Mycat至于什么是Mycat,可能在不同的角色下有不同的理解。对Mysql架构有过了解的话,都知道mysql实际上是由Server层和存储引擎层组成的。所以对于DBA来说,Mycat 就是 Mysq

什么是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安装

环境:

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

[root@txy-server ~]# cd /usr/local/src
[root@txy-server /usr/local/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/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之后,要如何进行使用呢?第一步就是要了解其核心配置文件,由于篇幅有限关于配置的内容在下一篇中进行介绍:

  • Mycat 核心配置详解
您可能感兴趣的文档:

--结束END--

本文标题: Mycat的安装配置

本文链接: https://www.lsjlt.com/news/36910.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

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

下载Word文档
猜你喜欢
  • Mycat中如何配置schmea.xml
    这篇文章主要为大家展示了“Mycat中如何配置schmea.xml”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Mycat中如何配置schmea.xml”这篇文...
    99+
    2024-04-02
  • Docker中怎么安装mycat
    这篇文章主要讲解了“Docker中怎么安装mycat”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Docker中怎么安装mycat”吧!1.拉取镜像docker pull ...
    99+
    2023-06-27
  • MyCAT如何安装使用
    这篇文章主要介绍了MyCAT如何安装使用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。 MyCAT安装 mycat运行依赖于...
    99+
    2024-04-02
  • 【配置】JDK8的安装与配置
    文章目录 JDK8的安装与配置1、选择哪个版本的JDK?2、官网下载2.1 找到导航栏里的Resources下的 Java Downloads2.2 寻找存档版本 Java archive2....
    99+
    2023-09-09
    java 开发语言
  • Mycat 核心配置是怎么样的
    这篇文章给大家介绍Mycat 核心配置是怎么样的,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。常用配置文件间的关系由上图可以看到 Mycat 的核心配置文件均采用xml格式,这几个配置...
    99+
    2024-04-02
  • Mycat读写分离配置实践
       工作这些年来,也去了一些地方,有了一些见闻,隐隐感觉很多文化和猫有着千丝万缕的联系。就拿IT行业来说吧,猫有着很高的曝光率,比如大名鼎鼎的 tomcat,是由SUN的软件构架...
    99+
    2024-04-02
  • mycat中datanode和datahost如何配置
    这篇文章主要介绍了mycat中datanode和datahost如何配置,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。 ...
    99+
    2024-04-02
  • 安装与配置
    Python 下载网址 Welcome to Python.org 按照对应的操作系统选择 3、下滑找到3.10.0版本根据电脑配置选择64位或者32位. 注意,有embeddable package和windows installer两...
    99+
    2023-09-01
    python
  • 安装配置mariadb
    记录下安装配置mariadb的经历。 环境:ubuntu22 一、apt在线安装 apt代理配置  APT是Ubuntu系统中用于安装和升级软件包的工具,如果本地没有可用的软件包,APT将会连接到远程软件包服务器下载软件包。在某些情况下,用...
    99+
    2023-10-09
    mariadb 数据库
  • grafana3.1.0安装配置
    Grafana 是 Graphite 和 InfluxDB 仪表盘和图形编辑器。Grafana 是开源的,功能齐全的度量仪表盘和图形编辑器,支持 Graphite,InfluxDB 和 OpenTSDB。G...
    99+
    2024-04-02
  • MySQL8的安装与配置
    本篇内容介绍了“MySQL8的安装与配置”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!下载MySQL 8&...
    99+
    2024-04-02
  • JDK的安装与配置
    所有的开发,第一步必然是准备环境,而JDK提供了一套完整的工具和环境,使开发人员能够编写、编译和运行Java应用程序。是Java开发的基础,为开发者提供了丰富的功能和工具,简化了Java应用程序开...
    99+
    2023-09-27
    java 开发语言
  • python2.7.10安装配置
    因工作需要使用python 2.7版本,而Centos自带的是python2.6.6。所以得安装python2.7-------------本来打算使得pyenv,可是公司网络不给力总下载不了,15M的东西都下载不了。。。。不说,,,已跪!...
    99+
    2023-01-31
  • mysql的安装和配置
    MySQL的安装和配置 MySQL是一款开源的关系型数据库管理系统,它可以运行在多种操作系统上,包括Linux、Windows和macOS。 步骤1:下载MySQL软件包 可以从MySQL官网(htt...
    99+
    2023-09-08
    mysql 数据库
  • eclipse的安装与配置
    1、下载 eclipse 下载地址:https://www.eclipse.org/downloads/ 点击 【Download Package】 找到JavaEE IDE,点击【Windows x86_64】 点击【Selec...
    99+
    2023-08-18
    eclipse java ide
  • Kafka的安装与配置
    一    jar包方式安装Kafka jar包下载地址:https://kafka.apache.org/downloads下载   1.配置java环境 1、上传jdk-8u341-linux-x64.tar.gz到服务器并安装: # t...
    99+
    2023-09-28
    kafka java linux 后端 中间件
  • nagios3安装配置
    一、nagios简介        nagios是一款用于系统和网络监控的应用程序,它可以在你的设定的条件下对主机和服务进行监控,在状态变差和变好的时候可以给管理员出告警信息。        nagios所需要的运行条件...
    99+
    2023-01-31
  • MySQL 安装配置
    MySQL 安装配置 MySQL 是最流行的关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle公司。 MySQL所使用的SQL语言是用于访问数据库的最常用标准化语言。 MySQL由于其体积小、速度快、总体拥有成本低,...
    99+
    2023-09-14
    mysql 数据库
  • MySQL8.0.32的安装与配置
    1、下载 地址:MySQL官网 2、解压 解压之后的文件里边是没有data文件的,需要创建一个空文件夹命名为data(后面需要用),并且需要创建一个初始化文件,命名为my,后缀名为.ini。my.ini文件以记事本方式打开输入以下配...
    99+
    2023-08-16
    数据库 mysql java
  • JAVA的安装与配置
    目录 一、Java的下载与安装 1、软件的下载 2、安装JDK         二、JAVA环境变量的配置 1、右键点击我的电脑      点击属性,进入系统设置面板      找到高级系统设置 2.点击环境变量 3.找到系统变量,点击新...
    99+
    2023-09-30
    java
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作