首页 > 数据库 >52 mysql 启动过程中常见的相关报错信息

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

时间:2024-09-03 18:26:39浏览次数:10  
标签:service pid 52 报错 file mysql mysqld server


前言

我们这里主要是看一下 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, 等等 

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

 

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

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

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

 

然后 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 的进程现在已经不存在了

52 mysql 启动过程中常见的相关报错信息_进程创建_03

 

综上所述 

这个问题在 “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

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

 

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

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

52 mysql 启动过程中常见的相关报错信息_进程创建_05

 

 

Couldn’t find MySQL server

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

52 mysql 启动过程中常见的相关报错信息_进程创建_06

 

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

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

 

 

MySQL server PID file could not be found 

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

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

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

 

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

52 mysql 启动过程中常见的相关报错信息_进程创建_09

 

 

Mysql server process is not running

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

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

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

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

 

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

52 mysql 启动过程中常见的相关报错信息_数据库_11

 

 

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

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

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

 

 

MySQL PID file could not be found

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

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

 

 

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” 的检查状态的输出 

52 mysql 启动过程中常见的相关报错信息_进程创建_14

 

 

 

 

 

标签:service,pid,52,报错,file,mysql,mysqld,server
From: https://blog.51cto.com/u_16608712/11909623

相关文章

  • 基于Java+SpringBoot+Vue+MySQL的地方美食分享网站
    作者:计算机学姐开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI等,“文末源码”。专栏推荐:前后端分离项目源码、SpringBoot项目源码、SSM项目源码系统展示基于SpringBoot+Vue的地方美食分享网站【附源码文档】、前后端分离开发语言:Java数据库:MySQL技术:SpringBo......
  • ESP32 出现 failed to load RF 报错
    前言正文周五我测试程序没有问题,板子放在桌子上就没动过了。周一过来的时候,重新烧录程序,就发现出现如下报错。最终发现是电池过放导致电池损坏功率不够,因此RF无法启动,一直在重启。解决办法很简单,换一颗正常的电池即可。W(1446)phy_init:failedtol�ESP-ROM:esp8684-api2-20220......
  • mysql模糊查询通过排序调整精准值
    背景:通过模糊查询到的结果,精准值排在后面解决:通过调整字段排序select*fromuserwhere1=1<iftest="keyword!=nullandkeyword!=''">andnamelikeconcat('%',#{keyword},'%')</if><iftest="sort==1and(keyword......
  • MySQL like用法详解
    MySQLLIKE语法LIKE运算符用于WHERE表达式中,以搜索匹配字段中的指定内容,语法如下:WHEREcolumnLIKEpatternWHEREcolumnNOTLIKEpattern在LIKE全面加上NOT运算符时,表示与LIKE相反的意思,即选择column不包含pattern的数据记录LIKE通常与通配符%一起使用,%表示通配pattern中出现的......
  • Windows下安装MySQL详细教程
    Windows下安装MySQL详细教程1、安装包下载  2、安装教程(1)配置环境变量(2)生成data文件(3)安装MySQL(4)启动服务(5)登录MySQL(6)查询用户密码(7)设置修改用户密码(8)退出 3、解决问题1、安装包下载。下载地......
  • MySQL修改密码
    第一种方式:最简单的方法就是借助第三方工具NavicatforMySQL来修改,方法如下:1、登录mysql到指定库,如:登录到test库。2、然后点击上方“用户”按钮。3、选择要更改的用户名,然后点击上方的“编辑用户”按钮。4、出现如图界面,输入新密码,并确认新密码,点击“保存”按钮即可。   第二种......
  • MySQL索引底层实现原理
    索引的本质MySQL官方对索引的定义为:索引(Index)是帮助MySQL高效获取数据的数据结构。提取句子主干,就可以得到索引的本质:索引是数据结构。我们知道,数据库查询是数据库的最主要功能之一。我们都希望查询数据的速度能尽可能的快,因此数据库系统的设计者会从查询算法的角度进行优化。最基......
  • MySQL之mysqldump的使用详解
    一、mysqldump简介mysqldump 是 MySQL 自带的逻辑备份工具。它的备份原理是通过协议连接到 MySQL 数据库,将需要备份的数据查询出来,将查询出的数据转换成对应的insert 语句,当我们需要还原这些数据时,只要执行这些 insert 语句,即可将对应的数据还原。二、备份命令2.1命令格......
  • mysql查询历史执行sql记录
    1、查看正在执行的sql--切换数据库useinformation_schema;--查看正在执行的SQL语句showprocesslist;--或者直接使用SQL语句查询select*frominformation_schema.`PROCESSLIST`whereinfoisnotnull;2、开启日志模式,记录所有SQL语句执行记录首先查看日志是否开启了......
  • Hive整合MySQL
     目录Hive整合MySQL 安装MySQL1)上传MySQL安装包以及MySQL驱动jar包2)解压MySQL安装包3)卸载系统自带的mariadb4)安装MySQL依赖5)安装mysql-client6)安装mysql-server7)启动MySQL8)查看MySQL密码配置MySQL1)用刚刚查到的密码进入MySQL(如果报错,给密码加单引号)2)设置复杂密......