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的JDBC编程详解

《MySQL的JDBC编程详解》:本文主要介绍MySQL的JDBC编程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录前言一、前置知识1. 引入依赖2. 认识 url二、JDBC 操作流程1. JDBC 的写操作2. JDBC 的读操作总结前言本文介绍了mysq

java.sql.SQLTransientConnectionException连接超时异常原因及解决方案

《java.sql.SQLTransientConnectionException连接超时异常原因及解决方案》:本文主要介绍java.sql.SQLTransientConnectionExcep... 目录一、引言二、异常信息分析三、可能的原因3.1 连接池配置不合理3.2 数据库负载过高3.3 连接泄漏

Linux下MySQL数据库定时备份脚本与Crontab配置教学

《Linux下MySQL数据库定时备份脚本与Crontab配置教学》在生产环境中,数据库是核心资产之一,定期备份数据库可以有效防止意外数据丢失,本文将分享一份MySQL定时备份脚本,并讲解如何通过cr... 目录备份脚本详解脚本功能说明授权与可执行权限使用 Crontab 定时执行编辑 Crontab添加定

oracle 11g导入\导出(expdp impdp)之导入过程

《oracle11g导入导出(expdpimpdp)之导入过程》导出需使用SEC.DMP格式,无分号;建立expdir目录(E:/exp)并确保存在;导入在cmd下执行,需sys用户权限;若需修... 目录准备文件导入(impdp)1、建立directory2、导入语句 3、更改密码总结上一个环节,我们讲了

ShardingProxy读写分离之原理、配置与实践过程

《ShardingProxy读写分离之原理、配置与实践过程》ShardingProxy是ApacheShardingSphere的数据库中间件,通过三层架构实现读写分离,解决高并发场景下数据库性能瓶... 目录一、ShardingProxy技术定位与读写分离核心价值1.1 技术定位1.2 读写分离核心价值二

MyBatis-plus处理存储json数据过程

《MyBatis-plus处理存储json数据过程》文章介绍MyBatis-Plus3.4.21处理对象与集合的差异:对象可用内置Handler配合autoResultMap,集合需自定义处理器继承F... 目录1、如果是对象2、如果需要转换的是List集合总结对象和集合分两种情况处理,目前我用的MP的版本

深度解析Java @Serial 注解及常见错误案例

《深度解析Java@Serial注解及常见错误案例》Java14引入@Serial注解,用于编译时校验序列化成员,替代传统方式解决运行时错误,适用于Serializable类的方法/字段,需注意签... 目录Java @Serial 注解深度解析1. 注解本质2. 核心作用(1) 主要用途(2) 适用位置3

MySQL中On duplicate key update的实现示例

《MySQL中Onduplicatekeyupdate的实现示例》ONDUPLICATEKEYUPDATE是一种MySQL的语法,它在插入新数据时,如果遇到唯一键冲突,则会执行更新操作,而不是抛... 目录1/ ON DUPLICATE KEY UPDATE的简介2/ ON DUPLICATE KEY UP

MySQL分库分表的实践示例

《MySQL分库分表的实践示例》MySQL分库分表适用于数据量大或并发压力高的场景,核心技术包括水平/垂直分片和分库,需应对分布式事务、跨库查询等挑战,通过中间件和解决方案实现,最佳实践为合理策略、备... 目录一、分库分表的触发条件1.1 数据量阈值1.2 并发压力二、分库分表的核心技术模块2.1 水平分

Python与MySQL实现数据库实时同步的详细步骤

《Python与MySQL实现数据库实时同步的详细步骤》在日常开发中,数据同步是一项常见的需求,本篇文章将使用Python和MySQL来实现数据库实时同步,我们将围绕数据变更捕获、数据处理和数据写入这... 目录前言摘要概述:数据同步方案1. 基本思路2. mysql Binlog 简介实现步骤与代码示例1