首页 > 数据库 >MySQL运维4-Mycat入门

MySQL运维4-Mycat入门

时间:2023-12-14 13:33:23浏览次数:27  
标签:8.0 java 运维 数据库 MySQL mycat mysql 服务器 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的使用

 

 

  

 

标签:8.0,java,运维,数据库,MySQL,mycat,mysql,服务器,Mycat
From: https://www.cnblogs.com/Se7eN-HOU/p/17897962.html

相关文章

  • mysql的备份方法详解
    MySQL数据库备份是确保数据安全的重要步骤。有多种备份方法可用,以下是几种常见的MySQL备份方法:1.使用mysqldump命令行工具:mysqldump是MySQL提供的备份工具,通过命令行使用。以下是基本的备份和恢复示例:备份整个数据库:mysqldump-uusername-pdatabase_name>backup.sql......
  • JavaWeb - day07 - MySQL - DQL、多表设计
    01.MySQL-DQL-基本查询介绍DQL英文全称是DataQueryLanguage(数据查询语言),用来查询数据库表中的记录。查询关键字:SELECT查询操作是所有SQL语句当中最为常见,也是最为重要的操作。在一个正常的业务系统中,查询操作的使用频次是要远高于增删改操作的。当我们打开某个网站或APP......
  • MySQL使用JSON存储数据
    1.优点1.不用为数据中的每个key值新建一个字段,可以任意的增减字段而无需修改数据表结构,甚至可以减少数据表的设计。2.可以减少数据表的查询,减少关联查询,一个查询的结果就可以代替几个查询的结果,降低数据库服务器的压力。2.缺点1、json数据仅仅只能用于展示display,如果用于条件......
  • Linux 部署1Panel现代化运维管理面板教程并且实现远程访问(运维福音!!)
    1Panel是一个现代化、开源的Linux服务器运维管理面板。高效管理,通过Web端轻松管理Linux服务器,包括主机监控、文件管理、数据库管理、容器管理等下面我们介绍在Linux本地安装1Panel并结合cpolar内网穿透工具实现远程访问1Panel管理界面1.Linux安装1Panel执行如下......
  • 使用NineData,轻松完成阿里云RDS MySQL至ClickHouse数据迁移
    云数据库RDSMySQL和云数据库ClickHouse是阿里云推出的两个备受欢迎的数据库解决方案,它们为用户提供了可靠的数据存储方案、分析数仓方案,本文介绍如何快速将RDSMySQL的数据同步到云数据库ClickHouse。如何快速将RDSMySQL的数据同步到云数据库为什么要将RDSMySQL的......
  • mysql_repl - 轻便型的MySQL binlog replication tool
    mysql_repl-轻便型的MySQLbinlogreplicationtoolhttps://github.com/hcymysql/mysql_repl/使用场景:从MySQL8.0实时解析binlog并复制到MariaDB,适用于将MySQL8.0迁移至MariaDB不熟悉MySQL主从复制搭建的新手使用原理:把自己伪装成slave,从源master解析binlog并入库targetMySQL端......
  • MySQL左连接丢失null值的问题
    一、前言我们有的时候直接使用左连接查询,当右表不存在该数据的时候,是可以查出带有null的列。可是当在where条件中有右表相关的筛选条件时,我们惊奇的发现查询的结果不带null值了,换句话说就是查出来的结果比预期的少。二、错误复现以及解决方案1、右表不带筛选条件的查询sql相关......
  • 解决mysql的语句中group_concat长度限制问题
    在mysql中,有个函数叫“group_concat”,平常使用可能发现不了问题,在处理大数据的时候,会发现内容被截取了。其实MYSQL内部对这个是有设置的,默认不设置的长度是1024。查看默认配置showvariableslike"group_concat_max_len";模板返回是Variable_nameValuegroup_co......
  • 数据库选型:MySQL、PostgreSQL、MongoDB
    能够支撑实时业务的数据库,常见的数据库有:关系型数据库:MySQL、PostgreSQL,以及Oracle、DB2、MicrosoftSQLServer等非关系型数据库:MongoDB下面针对MySQL、PostgreSQL、MongoDB做对比分析。关于最受欢迎排行榜,该三类数据库处于前五位置,也是霸榜颇久。另外补充数据库市场份额如下......
  • excel_to_mysql过程(Excel数据转换到MySQL数据库当中)
    准备数据流图:在输入输出里面找到对应的类型:数据流图建好了接下来怎么将excel表格数据抽取到mysql当中去???####编辑excel输入:手机号改为数字类型,就没有.0了,主要是类型问题@@@@@@@@@@@@@@@@@@@@@@@建立mysqll连接,进行编辑表输出最后看一下原始数据:22个单元格,21条数据,和以上数据相符!!......