linux系统中启动MyCat问题总结

news2024/11/26 4:52:36

最近在深入学习mysql的底层原理和应用,今天在学习分库分表操作的时候,由于一些配置问题,导致无法正常启动MyCat。最终通过GPT和其他博客将问题解决了,以下是一篇关于MyCat启动异常的解决方案。

1.思路:

配置问题其实一直都是比较头痛的,尤其当时是对于刚刚起步的新手,按着视频或者教程一步一步走,最后却没有办法正常运行,明明配置的一摸一样,却不知道问题出现在哪里?这时候,我们不妨跳出视频或者教程的节奏,通过各种各样的搜索来正确解决问题。由于配置问题多种多样,很难直接找到和自己的错误相同的。这里提供一般性的解决思路:查看日志文件,拿着日志文件的中的error信息去提问GPT,让GPT提供思路。在确定好大致问题之后,再去网络上搜索文档去解决问题或者让GPT提供解决方案。

2. 查找日志文件

我们可以通过以下linux命令来查找mycat的安装目录

1.使用 whereis 命令

        格式:whereis 文件名

这个命令会返回指定文件的可执行文件、源代码文件以及帮助文档所在的目录。

2. 使用find命令 

        格式:find / -name "文件名"

这个命令会在整个系统中搜索文件名并返回匹配的路径。

 我们通过以上命令快速定位本机上的mycat的安装目录,logs文件夹中的wrapper.log里面有我们想要看的mycat启动的日志信息,可按照以下命令进入:

 3. 解读错误信息

Error1:

STATUS | wrapper  | 2024/03/26 10:34:31 | Launching a JVM...
ERROR  | wrapper  | 2024/03/26 10:34:31 | JVM exited while loading the application.
INFO   | jvm 5    | 2024/03/26 10:34:31 | Unrecognized VM option 'MaxPermSize=64M'
INFO   | jvm 5    | 2024/03/26 10:34:31 | Error: Could not create the Java Virtual Machine.
INFO   | jvm 5    | 2024/03/26 10:34:31 | Error: A fatal exception has occurred. Program will exit.
FATAL  | wrapper  | 2024/03/26 10:34:31 | There were 5 failed launches in a row, each lasting less than 300 seconds.  Giving up.
FATAL  | wrapper  | 2024/03/26 10:34:31 |   There may be a configuration problem: please check the logs.
STATUS | wrapper  | 2024/03/26 10:34:31 | <-- Wrapper Stopped
这里我们可以看出,有一个VM option的参数没有办法去识别,导致jvm启动失败,错误看的一头雾水,完全没有思路,在网上搜索也没有解决方法,报错信息不一致。于是就询问GPT,GPT的解答如下:

 GPT给出的思路是JDK版本不匹配,之后在官网里面核实信息,看看是否真的是因为版本号的问题,找到了这样的一句话:only mycat2 is supported on java8

 查看本地JDK版本号,发现是JDK17的,于是下载JDK8,更改系统变量,解决了这一个版本错误的信息;

Error2:

解决完版本问题,又遇到一个bug,一大串的初始化异常,同时也印证了我们上一个问题解决了,JVM现在能够正常启动了。

问题看的不是很懂,于是再次询问GPT,对话如下:

这是我的schema.xml内容如下:

<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">

	<schema name="DB01" checkSQLschema="true" sqlMaxLimit="100">
		<!-- auto sharding by id (long) -->
		<table name="TB_ORDER" dataNode="dn1,dn2" rule="auto-sharding-long" />
	</schema>
	
	<dataNode name="dn1" dataHost="dhost1" database="db01" />
	<dataNode name="dn2" dataHost="dhost2" database="db01" />

	<dataHost name="dhost1" maxCon="1000" minCon="10" balance="0"
			  writeType="0" dbType="mysql" dbDriver="jdbc" switchType="1"  slaveThreshold="100">
		<heartbeat>select user()</heartbeat>
		<!-- can have multi write hosts -->
		<writeHost host="linux01" url="jdbc:mysql://192.168.49.111:3306?useSSL=false&amp;serverTimezone=Asia/Shanghai&amp;characterEncoding=utf8" user="root"
				   password="123456">

		</writeHost>
	</dataHost>
	
	<dataHost name="dhost2" maxCon="1000" minCon="10" balance="0"
			  writeType="0" dbType="mysql" dbDriver="jdbc" switchType="1"  slaveThreshold="100">
		<heartbeat>select user()</heartbeat>
		<writeHost host="linux03" url="jdbc:mysql://192.168.49.113:3306?useSSL=false&amp;serverTimezone=Asia/Shanghai&amp;characterEncoding=utf8" user="root"
				   password="123456">
		</writeHost>
	</dataHost>
</mycat:schema>

这时候想起来,默认配置文件里面的分表操作是3个数据库,而我直接删除了一个,配置了两个数据的信息。让GPT给出的解决方案是:

按照GPT给出的方案去解决问题,仍然报错,于是就想着能不能把规则函数的rang-long的分区大小进行更改呢?

在rule.xml配置文件中向下查找算法的最终实现,发现算法实现时,需要读取一个名为autopartition-long.txt的配置文件信息。

找到该文件,打开,发现问题所在

文件中配置了3个数据库的分区,而我只配置了两个数据库,导致配置文件之间发生冲突。

 解决方法:直接注掉最后一行即可。

4.总结: 

这篇博客解决了两个问题:

  1. mycat需要JDK8作为支持,不能够使用JDK17
  2. 我们在配置schema.xml文件的时候,一定要注意自己所使用的算法是如何实现的,可以在rule.xml中找到算法实现的配置文件进行更改。

这篇博客到这里就结束了,学习中遇到问题很简单,想办法去解决就可以了。

一起加油吧!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1561326.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

python练习二

# Demo85def pai_xu(ls_test):#创建一个列表排序函数命名为pai_xu# 对创建的函数进行注释"""这是一个关于列表正序/倒序排列的函数:param ls_test: 需要排序的列表:return:"""ls1 [int(ls_test[i]) for i in range(len(ls_test))]#对input输入的…

求组合数I(acwing)

题目描述&#xff1a; 给定n组询问&#xff0c;每组询问给定两个整数a&#xff0c;b&#xff0c;请你输出Ca^b mod(1e97)的值。 输入格式: 第一行包含整数n。 接下来n行&#xff0c;每行包含一组a和b。 输出格式: 共n行&#xff0c;每行输出一个询问的解。 …

C++刷题篇——05静态扫描

一、题目 二、解题思路 注意&#xff1a;注意理解题目&#xff0c;缓存的前提是先扫描一次 1、使用两个map&#xff0c;两个map的key相同&#xff0c;map1&#xff1a;key为文件标识&#xff0c;value为文件出现的次数&#xff1b;map2&#xff1a;key为文件标识&#xff0c;va…

Navicat设置mysql权限

新建用户&#xff1a; 注意&#xff1a;如果不生效执行刷新命令:FLUSH PRIVILEGES; 执行后再重新打开查看&#xff1b; 查询权限命令&#xff1a;1234为新建的用户名&#xff0c;localhost为访问的地址 SHOW GRANTS FOR 1234localhost;如果服务器设置服务器权限后可能会出现权…

【Docker】搭建安全可控的自定义通知推送服务 - Bark

【Docker】搭建安全可控的自定义通知推送服务 - Bark 前言 本教程基于绿联的NAS设备DX4600 Pro的docker功能进行搭建。 简介 Bark是一款为Apple设备用户设计的开源推送服务应用&#xff0c;它允许开发者、程序员以及一般用户将信息快速推送到他们自己的iPhone、iPad等设备上…

副业赚钱攻略:给工资低的你6个实用建议,闷声致富不是梦

经常有朋友向我咨询&#xff0c;哪些副业比较靠谱且能赚钱。实际上&#xff0c;对于大多数打工族而言&#xff0c;副业不仅是增加收入的途径&#xff0c;更是利用业余时间提升自我、实现价值的重要方式。 鉴于此&#xff0c;今天我想和大家分享六个值得尝试的副业&#xff0c;…

linux:生产者消费者模型

个人主页 &#xff1a; 个人主页 个人专栏 &#xff1a; 《数据结构》 《C语言》《C》《Linux》 文章目录 前言一、生产者消费者模型二、基于阻塞队列的生产者消费者模型代码实现 总结 前言 本文是对于生产者消费者模型的知识总结 一、生产者消费者模型 生产者消费者模型就是…

Java封装最佳实践:打造高内聚、低耦合的优雅代码~

​ 个人主页&#xff1a;秋风起&#xff0c;再归来~ 文章专栏&#xff1a;javaSE的修炼之路 个人格言&#xff1a;悟已往之不谏&#xff0c;知来者犹可追 克心守己&#xff0c;律己则安&#xff01; 1、封装 1.1 封装的概念 面向对象程序三大…

数据类型和变量的深入理解

引言&#xff1a;C语言数据类型的意义&#xff0c;数据在内存中的存储情况&#xff0c;变量的声明与定义的区别&#xff0c;和一些关键字。 目录 1.变量的定义与声明 1.1定义与声明 1.2 变量的初始化与赋值 2.C语言常见的数据类型 3.变量的作用域与生命周期 4.signed 和 un…

SpringBoot mybatis-starter解析

mybatis-starter使用指南 自动检测工程中的DataSource创建并注册SqlSessionFactory实例创建并注册SqlSessionTemplate实例自动扫描mappers mybatis-starter原理解析 注解类引入原理 查看对应的autoconfigure包 MybatisLanguageDriverAutoConfiguration 主要是协助使用注解来…

Leetcode 4.1

LeetCode 热题 100 贪心算法1.买卖股票的最佳时机2.跳跃游戏3.跳跃游戏 II4.划分字母区间 区间合并1.合并区间 贪心算法 1.买卖股票的最佳时机 买卖股票的最佳时机 买的那天一定是卖的那天之前的最小值。 每到一天&#xff0c;维护那天之前的最小值即可。 在题目中&#xff0…

红米手机Redmi 不会自动弹出USB调试选项,如何处理?(红米小米均适用)

参考&#xff1a; 红米手机Redmi 不会自动弹出USB调试选项&#xff0c;如何处理&#xff1f;&#xff08;红米小米均适用&#xff09; - 知乎 以红米9A为例&#xff1b; 【设置】菜单进入后&#xff0c;找到【我的设备】&#xff0c; 选择【全部参数】&#xff0c; 对准miui版…

npm ERR! code CERT_HAS_EXPIRED 淘宝镜像失效

近期vue安装失败&#xff0c;具体如下&#xff1a; 1.先npm cache clean --force 再下载 插件后缀加上 --legacy-peer-deps 2.certificate has expired npm ERR! code CERT_HAS_EXPIRED npm ERR! errno CERT_HAS_EXPIRED npm ERR! request to https://registry.npm.taobao.o…

【面试题】RocketMQ怎么处理消息积压?

如图,消息积压主要是因为&#xff0c;消费能力不足&#xff1a; 在RocketMQ中&#xff0c;处理消息积压的方法可以采取以下几种策略&#xff1a; 增加消费者数量&#xff1a;可以通过增加消费者数量来提高消息的消费速度。通过增加消费者实例或者消费者组的数量&#xff0c;可…

【Consul】Linux安装Consul保姆级教程

【Consul】Linux安装Consul保姆级教程 大家好 我是寸铁&#x1f44a; 总结了一篇【Consul】Linux安装Consul保姆级教程✨ 喜欢的小伙伴可以点点关注 &#x1f49d; 前言 今天要把编写的go程序放到linux上进行测试Consul服务注册与发现&#xff0c;那怎么样才能实现这一过程&am…

Layui三级联动插件使用方法

Layui高版本中没有在提供三级联动这个动画了&#xff0c;而是封装成了一个插件&#xff0c;使用方式也很简单 官网 省市县区三级联动下拉选择器 layarea - Layui 第三方扩展组件平台 (layuion.com)https://dev.layuion.com/extend/layarea/#doc html页面约束 整个选择器需要…

【二叉树】Leetcode 101. 对称二叉树【简单】

对称二叉树 给你一个二叉树的根节点 root &#xff0c; 检查它是否轴对称。 示例1&#xff1a; 输入&#xff1a;root [1,2,2,3,4,4,3] 输出&#xff1a;true 解题思路 判断一棵二叉树是否是轴对称的&#xff0c;可以通过递归方式进行判断。 1、定义一个递归函数isMirr…

【C++】C++入门第二课(函数重载 | 引用 | 内联函数 | auto关键字 | 指针空值nullptr)

目录 前言 函数重载 概念 重载函数的条件 C支持重载函数的原理--名字修饰 引用 概念 特性 常引用&#xff08;const引用&#xff09; 使用场景 传值&#xff0c;传引用效率比较 引用和指针的区别 内联函数 概念 特性 auto关键字&#xff08;C11&#xff09; a…

javaWeb项目-家政服务管理系统功能介绍

项目关键技术 开发工具&#xff1a;IDEA 、Eclipse 编程语言: Java 数据库: MySQL5.7 框架&#xff1a;ssm、Springboot 前端&#xff1a;Vue、ElementUI 关键技术&#xff1a;springboot、SSM、vue、MYSQL、MAVEN 数据库工具&#xff1a;Navicat、SQLyog 1、B/S结构简介 B/S…

OpenHarmony实战:使用宏、std::bind 巧妙实现进出函数日志打印

背景 我们始终渴望了解模块的调用、时序逻辑&#xff0c;每个人都会轻易地想到在函数的入口打印一条进入 enter 相关的日志&#xff0c;在函数的出口打印一条离开 leave 相关的日志。不能有遗漏&#xff0c;我们会复制这条日志到所有关心的函数中&#xff0c;为了表明是哪个模…