【MySQL】关于MySQL启动后mysqld_safe和mysqld进程

在mysql服务器启动后,有2个进程mysqld_safe和mysqld,这是为啥?


# ps -ef | grep mysqld

root  6488 3324 0 Sep03 pts/0 00:00:00 /bin/sh /mysqlsoft/mysql/bin/mysqld_safe --defaults-file=/etc/my.cnf --user=mysql

mysql  7327 6488 0 Sep03 pts/0 00:00:13 /mysqlsoft/mysql/bin/mysqld --defaults-file=/etc/my.cnf --basedir=/mysqlsoft/mysql --datadir=/mysqldata/data --plugin-dir=/mysqlsoft/mysql/lib/plugin --user=mysql --log-error=/mysqldata/log/mysql-error.log --open-files-limit=10240 --pid-file=/mysqldata/tmp/mysql.pid --socket=/tmp/mysql.sock


mysqld_safe 进程所有者为 root

mysqld进程所有者为mysql


其中mysqld_safe是mysqld的父进程,/etc/init.d/mysql 中针对start的执行,执行的mysqld_safe,而mysqld_safe是一个脚本。

通过查看mysqld_safe的选项信息以及脚本内容,确定mysqld_safe启动的是mysqld。


根据MySQL官方文档,先看下mysqld_safe的定义:

mysqld_safe is the recommended way to start a mysqld server on Unix. mysqld_safe adds some safety features such as restarting the server when an error occurs and logging runtime information to an error log.

Note

For some Linux platforms, MySQL installation from RPM or Debian packages includes systemd support for managing MySQL server startup and shutdown. On these platforms, mysqld_safe is not installed because it is unnecessary.


这里注意下:

对于一些Linux平台,从RPM或Debian包安装MySQL包括systemd支持管理MySQL服务器的启动和关闭。在这些平台上,没有安装mysqld_safe。


在 Unix 机器上,MySQL 官方推荐使用mysqld_safe启动mysqld服务。

这里先简要说下原因:

mysqld_safe增加了一些安全特性,比如它会在遇到错误时重启mysqld服务,并把运行时信息记录到 error log 中。

以 CentOS和redhat环境为例,使用mysqls_safe启动 mysqld 服务的命令如下:

mysqld_safe --defaults-file=/etc/my.cnf  --user=mysql  > mysqld.log 2>&1 &

其中--defaults-file=my.cnf指定了默认的配置文件为/etc/my.cnf,当然这里的参数文件路径可以任意指定,常规还是放在路径/etc/下。

> mysqld_log指定了将标准输出重定向到msyqld.log,

2>&1表示将标准错误输出重定向到标准输出,

末尾的&表示后台运行。

执行上述命令mysqls_safe,使用 mysqld_safe 和 my.cnf 中的配置,会启动了一个mysqld进程,始终在后台运行,所有的输出(包括错误输出)都将汇集到 mysqld.log 文件中。

回车执行命令后,终端将返回这个任务的编号和进程号,如果后续想要再次查看,可以通过 jobs -l 命令来查看当前 Shell 环境中所有的任务。

# mysqld_safe --defaults-file=/etc/my.cnf --user=mysql  &

[1] 5092


#  jobs -l 命令来查看当前Shell环境中所有的任务

[1]+ 5092 Running mysqld_safe --defaults-file=/etc/my.cnf --user=mysql  &

其中[1]代表任务号,+ 代表这是最近一个任务,5092 代表进程号 PID。

至此,mysqld服务启动成功。

【mysqld】:是mysql的核心程序,用于管理mysql的数据库文件以及用户的请求操作。

首先说一点:直接运行mysqld来启动,可不可以,当然也可以;

只是直接运行mysqld程序来启动MySQL服务的方法在实际生产中很少几乎不使用,且官方刚才也说过:不推荐,mysqld_safe 增加了一些安全特性。


mysqld可以读取配置文件中的[mysqld]中的内容。

mysqld启动命令:

#  bin/mysqld  --defaults-file=/etc/mysql/my.cnf  &

查看mysqld支持的选项:

#  bin/mysqld --verbose --help 


【mysqld_safe】:会在启动MySQL服务器后继续监控其运行情况,并在其死机时重新启动它。

用mysqld_safe脚本来启动MySQL服务器的做法在BSD风格的unix系统上很常见,非BSD风格的UNIX系统中的 mysql.server脚本其实也是调用mysqld_safe脚本去启动MySQL服务器的。


mysqld_safe脚本方式启动mysql server 进程,通常做如下事情:

1.检查系统和选项。

2.检查MyISAM表。

3.保持MySQL服务器窗口。

4.启动并监视mysqld,如果因错误终止则重启。

5.记录mysqld进程运行信息,保存在错误日志中(error.log,通常在my.cnf中指定)

6. mysqld_safe的启动和运行参数与mysqld通用,对mysqld_safe进程施加参数等同于在mysqld进程上施加参数。

mysqld_safe从选项文件的[mysqld]、[server]和 [mysqld_safe]部分读取所有选项。

为了保证向后兼容性,它还读取 [safe_mysqld]部分,尽管在MySQL 5.1安装中你应将这部分重新命名为[mysqld_safe]。

mysqld_safe支持下面的选项:


具体参数解释详见官方文档:

【reference】 https://dev.mysql.com/doc/refman/5.7/en/mysqld-safe.html


执行mysqld_safe时,必须先给出--defaults-file或--defaults-extra-option,或不使用选项文件。该命令将不使用选项文件,因为第一个参数不是选项文件:mysqld_safe --port=3306 --defaults-file=/etc/mysql/my.cnf相反,使用下面的命令,则可以使用选项文件:mysqld_safe --defaults-file=/etc/mysql/my.cnf --port=3306


mysqld_safe脚本位置通常在什么位置?

1. 可以根据调用mysqld_safe的目录找到服务器和数据库。在二进制分发版中,mysqld_safe看上去在bin和data目录的工作目录下。对于源码分发版,为libexec和var目录。如果你从MySQL安装目录执行mysqld_safe应满足该条件(例如,二进制分发版为/usr/local/mysql);

2. 如果不能根据工作目录找到服务器和数据库,mysqld_safe试图通过绝对路径对它们定位。典型位置为/usr/local/libexec和 /usr/local/var。实际位置由构建分发版时配置的值确定如果MySQL安装到配置时指定的位置,它们应该是正确的。

最后,简单总结下:

1. 可以mysqld把mysql server拉起来,但生产环境不建议这么干;

2. mysqld_safe的启动和运行参数与mysqld通用,对mysqld_safe进程施加参数等同于在mysqld进程上施加参数;

3. mysqld_safe相当于多了一个守护进程,mysqld挂了会自动把mysqld进程拉起来 ;

4. mysqld_safe严重错误产生时自动重启mysqld进程;

5. mysqld_safe记录mysqld进程运行信息,保存在错误日志中(error.log,通常在my.cnf中指定);

6.若每秒启动失败5次,mysqld_safe进程为了防止消耗cpu资源,启动进程将会停顿1s。

7.官方推荐在类UNIX系统中使用mysqld_safe脚本来启动mysqld进程。


参考 


https://www.cnblogs.com/benwu/articles/9061345.html

https://dev.mysql.com/doc/refman/5.7/en/mysqld-safe.html



喜欢的朋友记得点赞、收藏、关注哦!!!

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

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

相关文章

Rust @绑定(Rust@绑定)(在模式匹配的同时将值绑定到变量)

文章目录 Rust中的绑定基础概念示例:基本模式匹配 绑定的使用示例:范围匹配并绑定变量 深入探索绑定的好处示例:复杂数据结构中的应用 总结 附加 Rust中的绑定 Rust 语言以其强类型系统和内存安全的特性著称。在进行模式匹配时,R…

数据结构-图的概念

不存在空图现象,顶点集不能为空,边集可以为空 研究链接一个顶点的边有多少条非常有意义 无向图的度边的二倍 有向图的入度出度,度边数 有向图一致 重点 子图必须联通,尽可能多的边和结点 对于一个生成树,他有n个节点就有n-1条边 修路问题将各个村庄相连,由于经费有限,只能选择…

黑马程序员Redis学习【持续更新】

Redis基础 一、Redis入门 1.Redis简介 【1】为什么学习Redis Redis是一个基于内存的key-value结构数据库。「Remote Dictionary Service」的首字母缩写,也就是「远程字典服务-remote dictionary server」。 基于内存存储,读写性能高适合存储热点数据…

利用SEO在4个月内打造每月940美元的导航站

在软件开发领域,SEO(搜索引擎优化)的潜力常常被人们低估,但它却能为网站增长带来显著效果。特别是在AI技术的加持下,你可以极大地加速流量增长并自动化大部分工作。本文将详细介绍一名Reddit用户如何在4个月内&#xf…

字节青训-数字字符串格式化

问题描述 小M在工作时遇到了一个问题,他需要将用户输入的不带千分位逗号的数字字符串转换为带千分位逗号的格式,并且保留小数部分。小M还发现,有时候输入的数字字符串前面会有无用的 0,这些也需要精简掉。请你帮助小M编写程序&…

HER304-ASEMI轴向高效恢复二极管HER304

编辑:ll HER304-ASEMI轴向高效恢复二极管HER304 型号:HER304 品牌:ASEMI 封装:DO-27 特性:轴向高效恢复二极管 正向电流:3A 反向耐压:300V 恢复时间:35ns 引脚数量&#xf…

信息宣传投稿栽跟头不可怕,关键是你要能再站起来

在繁忙的市郊,一家的事业基层单位,这里汇聚了各路英才,每个科室都有自己的专长。然而,有一项任务,让这些精英们头疼不已——单位信息宣传投稿。 起初,大家对这项任务并不以为然,以为不过是小菜一碟。李科长甚至开玩笑说:“不就是写篇文章,投个稿嘛,我们这些笔杆子还怕这个?”…

iMeta | 复杂热图(ComplexHeatmap)可视化文章最新版,画热图就引它

复杂热图可视化 https://doi.org/10.1002/imt2.43 PROTOCOL ●2022年8月,德国癌症研究中心顾祖光在iMeta在线发表了题为“Complex heatmap visualization”的方法类文章。 ● 该研究系统性地介绍了 ComplexHeatmap R包在复杂热图可视化方面的特性和功能。 ● 第…

HTTP的了解

从输入 URL 到页面展示到底发生了什么?(非常重要) 类似的问题:打开一个网页,整个过程会使用哪些协议? 先来看一张图(来源于《图解 HTTP》): 上图有一个错误需要注意&…

博弈论(所有情况最优解)——课堂笔记

博弈论(所有情况最优解)——课堂笔记|【博弈论】分割数游戏-CSDN博客https://blog.csdn.net/back_room/article/details/143464453?spm=1001.2014.3001.5501【博弈论】拍卖土地-CSDN博客

网络编程——TCP通信练习

目录 一、多发多收 二、接收和反馈 三、上传文件 四、解决上传文件名重复问题 五、上传文件多线程版 六、上传文件线程池版 七、B/S(接收浏览器的消息并打印) 一、多发多收 客户端:多次发送数据 服务器:接收多次数据,并打印 public cl…

Selenium自动化测试 —— 模拟鼠标键盘的操作事件

软件测试资料领取:[内部资源] 想拿年薪40W的软件测试人员,这份资料必须领取~ 软件测试面试刷题工具:软件测试面试刷题【800道面试题答案免费刷】 鼠标操作事件 在实际的web产品测试中,对于鼠标的操作,不单单只有clic…

线性回归模型

线性回归模型 代价函数 梯度下降 学习率 梯度下降的收敛与调优 梯度下降的收敛性依赖于以下因素: 学习率的选择:合适的学习率能够确保稳定收敛,过大或过小的学习率可能会导致收敛不稳定或效率低下。数据的特征:数据的规模和特征…

书生大模型基础岛第一关书生大模型全链路开源体系

本文档相当于是对书生*浦语的了解文档 官网: https://internlm.intern-ai.org.cn/ github: https://github.com/internLM/ 开源之路: 2023.7.6 InterLM-7B2023.9.20 InterLM-20B2024.1.17 InternLM22024.7.4 InternLM2.5 性能天梯: InternL…

01OpenGL基本学习

文章目录 第一节1、概念立即模式vs核心模式 2、问题 第二节1、三维坐标系![三维坐标系](https://i-blog.csdnimg.cn/direct/0703ba6b68914b08b1d14b936ccd862d.png)2、什么是模型?3、什么是颜色?4、材质 第三节渲染管线第四节GLAD配置流程1、为什么需要G…

测试-请求特定资源使用Postman工具(3)

目录 前言 实操 开发者工具 前言 介绍过,就不再介绍了,只需要知道它是一个网络请求的工具就行了 实操 开发者工具 这里我们还需要借助开发者工具来帮助我们进行资源的请求,这里用 百度一下 进行测试 如下是 百度一下 的首页 右键打开…

Foliate:沉浸式阅读!!!

项目简介 Foliate 是一款开源的电子书阅读器,专为现代操作系统设计,提供了优雅且实用的阅读体验。它支持多种电子书格式,包括 EPUB、Mobipocket、Kindle、FB2、CBZ 和 PDF,让用户能够以分页或滚动模式阅读。Foliate 允许用户自定义…

打包18款AI营销神器,批量运营项目收藏必备!

淘金的不如卖铲子的,AI工具的应用越来越普及,这也让很多原本淘金的人都来卖铲子。如果自己能有很好的铲子,自己也会淘金,就可以既能卖铲子赚钱,也能掏金赚钱。 还有两天就是双十一了,各种AI工具&#xff0…

【MyBatis源码】SQL 语句构建器AbstractSQL

文章目录 介绍org.apache.ibatis.jdbc.SQLSQL类使用示例SelectProvider搭配动态SQLAbstractSQL类源码分析 介绍 当我们需要使用Statement对象执行SQL时,SQL语句会嵌入Java代码中。SQL语句比较复杂时,我们可能会在代码中对SQL语句进行拼接,查…

Vue2进阶

1.el安装 官网地址 Element - The worlds most popular Vue UI frameworkElement,一套为开发者、设计师和产品经理准备的基于 Vue 2.0 的桌面端组件库https://element.eleme.cn/#/zh-CN 安装 npm install element-ui -S 引入组件(在 main.js&#xf…