一、什么是mysqld
mysqld 是 MySQL 服务端主进程,全称 MySQL Daemon,也就是守护进程,是数据库服务运行的核心程序。所有数据库连接、SQL执行、事务处理、存储引擎调度全部依靠这个进程。
Windows系统里进程名是 mysqld.exe,Linux 下后台常驻运行,默认使用 mysql 用户启动,监听3306数据库端口。mysql 是客户端连接工具,mysqld 才是数据库服务本体。
mysqld 内部多线程结构
mysqld 采用单进程多线程运行模式,内部包含三类核心线程:
二、mysqld、mysqld_safe、systemd 服务三者区别
1. 原生 mysqld
直接启动数据库主程序,自身不带故障守护功能。
前台启动命令,关闭终端数据库就会停止:
mysqld –defaults-file=/etc/my.cnf
后台静默启动命令:
mysqld –daemonize –defaults-file=/etc/my.cnf
进程意外崩溃后不会自动重启
2. mysqld_safe 传统启动脚本
属于封装脚本,作为 mysqld 的父进程运行,自带守护监控能力:
自动拆分、输出错误日志;mysqld 崩溃后自动重新拉起;自动校验pid文件、文件权限。
后台启动命令:
mysqld_safe –defaults-file=/etc/my.cnf &
3. systemd 现代系统管理方式
CentOS7、Ubuntu16及以上系统统一采用,也是现在生产环境首选方案,完全替代 mysqld_safe 的守护能力。
支持统一日志查看、一键启停、开机自启、进程资源限制,配置文件一般在 /usr/lib/systemd/system/mysqld.service。
核心配置片段:
[Service]
ExecStart=/usr/local/mysql/bin/mysqld –defaults-file=/etc/my.cnf
User=mysql
Restart=on-failure
Restart=on-failure 代表进程异常崩溃时自动重启。
三、Linux 常用 mysqld 进程操作命令
1. 查看mysqld进程
查看完整进程详情:ps aux | grep mysqld
快速获取mysqld主进程PID:pidof mysqld
pgrep mysqld
查看mysqld内部所有线程,排查CPU占用
top -Hp $(pidof mysqld)
2. 安全启停mysqld,禁止直接暴力kill
标准安全关闭
systemd系统执行:
systemctl stop mysqld
通用关闭命令,所有环境可用:
mysqladmin -uroot -p shutdown
安全关闭流程:拒绝新连接、等待现有事务提交、把内存脏页全部刷入磁盘、关闭redo、undo日志,正常退出进程,不会丢失数据。
强制停止
温和强制关闭,发送SIGTERM信号:
kill $(pidof mysqld)
极端卡死才用SIGKILL强制杀进程,会丢失未落地数据,下次启动会自动执行崩溃恢复:
kill -9 $(pidof mysqld)






