前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MySQL的mysqld_safe和mysqld进程有何用?

MySQL的mysqld_safe和mysqld进程有何用?

作者头像
bisal
发布2023-12-10 08:48:05
3230
发布2023-12-10 08:48:05
举报

MySQL启动会出现两个进程,mysqld_safe和mysqld,这俩进程有什么联系和区别?它们各自有什么作用?老杨写的这篇技术文章《技术分享 | kill掉mysqld_safe进程会影响mysqld进程?》做了一些讲解。

其中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服务的命令如下,

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

(1)>mysqld_log指定了将标准输出重定向到msyqld.log, (2)2>&1表示将标准错误输出重定向到标准输出, (3)末尾的&表示后台运行。

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

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

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

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

至此,mysqld服务启动成功。

具体再来详细了解下mysqld_safe与mysqld区别,

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

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

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

mysqld启动命令,

查看mysqld支持的选项

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

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

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

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

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

mysqld_safe支持下面的选项,

7af2340d8f7f333072fe7fba43f1752e.png
7af2340d8f7f333072fe7fba43f1752e.png

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

【reference】

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

简翻如下,

执行mysqld_safe时,必须先给出–defaults-file或–defaults-extra-option,或不使用选项文件。 该命令将不使用选项文件,因为第一个参数不是选项文件,

相反,使用下面的命令,则可以使用选项文件,

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安装到配置时指定的位置,它们应该是正确的。

因此,

"存在即合理",每个进程都会有自己的功能和作用,了解清楚了,才可以更好地运用这些,知其然更要知其所以然。

参考,

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

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-12-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 MySQL
腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档