52 mysql 启动过程中常见的相关报错信息

2024-08-26 22:28

本文主要是介绍52 mysql 启动过程中常见的相关报错信息,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前言

我们这里主要是看一下 service mysql start, service mysql stop 的过程中的一些常见的错误问题

这些 也是之前经常碰到, 但是 每次都是 去搜索, 尝试 1, 2, 3, 4 去解决问题

但是 从来未曾思考过 这个问题到底是 怎么造成的

 

 

The server quit without updating PID file

这个在启动的时候, 主要造成的情况一般是 

“service mysql start” 启动 mysqld 服务, 然后 之后等待进程文件的创建 的过程中, mysqld 的进程挂掉了, 会输出 “The server quit without updating PID file”

这里, 我对脚本做了一定的调整, 原脚本是使用的 mysqld_save, 传入了 data_dir, 等等 

34b511fc058f1d97e44768f692a42cf6.png

 

“service mysql stop” 的时候, 发送 “kill $pid” 杀掉 mysqld 所在的进程, 然后 进入 wait_for_pid 的流程 

在 mysqld 清理掉 mysql.pid 文件之前, mysqld 所在的进程挂了之后, 会输出 “The server quit without updating PID file”

08813f72be36bdca3a394ab3c0f99484.png

 

然后 wait_for_pid 在 “service mysql start” 的过程中检测到了 mysqld 服务生成了 pid 文件, 立即跳出 

在 “service mysql stop” 的过程中检测到了 pid 文件的消失, 立即跳出, 等待 service_startup_timeout 秒, 这个默认值是 900s

然后下面的检测是 “test –n $pid” 表示上面执行 “$bindir/mysqld –defaults-file=/usr/local/mysql/my.cnf –user=root” 进程创建成功 

然后下面 “test kill -0 $pid” 的 else 表示 mysqld 的进程现在已经不存在了

1fa536c915ef733026b51f960ed6edf4.png

 

综上所述 

这个问题在 “service mysql start” 的过程中会出现的场景就是, 在 mysqld 进程创建了之后, 在 mysql.pid 文件创建之前, mysql 进程挂了 

这个问题在 “service mysql stop” 的过程中会出现的场景就是, 发送了 kill $pid之后, 在 mysqld 清理 mysql.pid 文件消失之前, mysql 进程挂了 

当然 可以看到的是, 这个错误提示 明显是在 “service mysql stop” 的场景中更加符合这里的提示的意义, 在 “service mysql start” 的场景, 更加倾向于是 “The server quit without creating PID file ”

 

复现一下问题, 我们这里主要是在 “service mysql start” 的过程中来复现这个问题 

需要构造这个问题, 我们稍微调整一下 脚本中构造 mysql_pid_path 的地方, 我们调整成为一个 不存在的 pid 文件 

这样, 在启动之后, wait_for_pid 的循环中会一直等待 mysql.pid 的生成, 然后 这时候 我们可以去构造问题

调整如下, 更新 mysql_pid_file_path 的默认值为一个 ubuntu1.pid, 这里我们 mysqld 进程创建好了之后, 创建的进程文件为 ubuntu.pid

3e72737cada22497833022344fefbcc0.png

 

在 wait_for_pid 的循环中, 每隔一秒会向 console 输出一个 “.”, 这里有几个点 就表示 wait_for_pid 已经等待了多少秒 

然后之后 我 kill 掉 mysqld 的进程, 这之后 wait_for_pid 中 “test kill -0 $pid” 检测到进程已经不存在了, 输出了 “The server quit without updating PID file”

736ee2c9dd14b84e031c80bcf80a4046.png

 

 

Couldn’t find MySQL server

这个主要是 mysql.server.sh 中的 指定的 mysql_safe 不存在 

e484d32bd9dbb02a594f73f5a25b762f.png

 

对应的处理是在这里, “test –x $bindir/mysqld_safe” 如果 mysqld_safe 不存在, 则直接输出 “Couldn’t find MySQL server”

7f4c5043bd87e953e48beb5b93ef112a.png 

 

MySQL server PID file could not be found 

这个主要是 “service mysql stop”, 但是 并没有 mysqld 的进程

并且没有 mysql.pid 文件[比如 mysqld 执行之后, kill -9 $pid 之后, mysql.pid 依然存在]

ff723cb3caa8b488826c985474b710f6.png

 

需要确保 mysql.pid 文件不存在, 即可构造这个问题 

a686ea20cdf518cf86f5ce5e421729c8.png 

 

Mysql server process is not running

这个情况是 mysql.pid 文件依然存在, 但是 mysql 进程不存在的情况 

构造的情况为, 启动 mysqld 进程, 让他创建 mysql.pid 文件, 然后 kill -9 $pid, 杀掉 mysqld 服务, 然后在执行 “service mysql stop”

或者 手动创建一个 mysql.pid 文件, 然后在执行 “service mysql stop”

e4201484270f15dbf5b961504681cbb2.png

 

需要确保 mysql.pid 文件存在, 并且 mysqld 进程不存在 即可构造这个问题

b471832366034e926937e3080aa4035a.png 

 

Failed to stop running server, so refusing to try to start  

确保 “service mysql stop” 失败, 即可复现这个问题 

1d0bae5b9fff5420ee80b6bfc614263f.png

 

 

MySQL PID file could not be found

确保执行 “service mysql reload”, “service mysql force-reload” 的时候, mysql.pid 文件不存在即可 

e89ddbbcb9435e9a0bf5a6258ebe7c0d.png

 

 

MySQL running/MySQL is not running/MySQL is running but PID file could not be found/MySQL is not running, but PID file exists 

主要是来自于 “service mysql status” 的检查状态的输出 

40b883265b9ef92271de96f4f3c79a10.png

 

 

 

 

 

这篇关于52 mysql 启动过程中常见的相关报错信息的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1109857

相关文章

MySQL数据库双机热备的配置方法详解

《MySQL数据库双机热备的配置方法详解》在企业级应用中,数据库的高可用性和数据的安全性是至关重要的,MySQL作为最流行的开源关系型数据库管理系统之一,提供了多种方式来实现高可用性,其中双机热备(M... 目录1. 环境准备1.1 安装mysql1.2 配置MySQL1.2.1 主服务器配置1.2.2 从

深入理解Mysql OnlineDDL的算法

《深入理解MysqlOnlineDDL的算法》本文主要介绍了讲解MysqlOnlineDDL的算法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小... 目录一、Online DDL 是什么?二、Online DDL 的三种主要算法2.1COPY(复制法)

Redis中Hash从使用过程到原理说明

《Redis中Hash从使用过程到原理说明》RedisHash结构用于存储字段-值对,适合对象数据,支持HSET、HGET等命令,采用ziplist或hashtable编码,通过渐进式rehash优化... 目录一、开篇:Hash就像超市的货架二、Hash的基本使用1. 常用命令示例2. Java操作示例三

Redis中Set结构使用过程与原理说明

《Redis中Set结构使用过程与原理说明》本文解析了RedisSet数据结构,涵盖其基本操作(如添加、查找)、集合运算(交并差)、底层实现(intset与hashtable自动切换机制)、典型应用场... 目录开篇:从购物车到Redis Set一、Redis Set的基本操作1.1 编程常用命令1.2 集

Linux下利用select实现串口数据读取过程

《Linux下利用select实现串口数据读取过程》文章介绍Linux中使用select、poll或epoll实现串口数据读取,通过I/O多路复用机制在数据到达时触发读取,避免持续轮询,示例代码展示设... 目录示例代码(使用select实现)代码解释总结在 linux 系统里,我们可以借助 select、

mysql8.0.43使用InnoDB Cluster配置主从复制

《mysql8.0.43使用InnoDBCluster配置主从复制》本文主要介绍了mysql8.0.43使用InnoDBCluster配置主从复制,文中通过示例代码介绍的非常详细,对大家的学习或者... 目录1、配置Hosts解析(所有服务器都要执行)2、安装mysql shell(所有服务器都要执行)3、

k8s中实现mysql主备过程详解

《k8s中实现mysql主备过程详解》文章讲解了在K8s中使用StatefulSet部署MySQL主备架构,包含NFS安装、storageClass配置、MySQL部署及同步检查步骤,确保主备数据一致... 目录一、k8s中实现mysql主备1.1 环境信息1.2 部署nfs-provisioner1.2.

MySQL中VARCHAR和TEXT的区别小结

《MySQL中VARCHAR和TEXT的区别小结》MySQL中VARCHAR和TEXT用于存储字符串,VARCHAR可变长度存储在行内,适合短文本;TEXT存储在溢出页,适合大文本,下面就来具体的了解... 目录一、VARCHAR 和 TEXT 基本介绍1. VARCHAR2. TEXT二、VARCHAR

idea突然报错Malformed \uxxxx encoding问题及解决

《idea突然报错Malformeduxxxxencoding问题及解决》Maven项目在切换Git分支时报错,提示project元素为描述符根元素,解决方法:删除Maven仓库中的resolv... 目www.chinasem.cn录问题解决方式总结问题idea 上的 maven China编程项目突然报错,是

MySQL中C接口的实现

《MySQL中C接口的实现》本节内容介绍使用C/C++访问数据库,包括对数据库的增删查改操作,主要是学习一些接口的调用,具有一定的参考价值,感兴趣的可以了解一下... 目录准备mysql库使用mysql库编译文件官方API文档对象的创建和关闭链接数据库下达sql指令select语句前言:本节内容介绍使用C/