欢迎光临
我们一直在努力

mysqld

一、什么是mysqld

mysqld 是 MySQL 服务端主进程,全称 MySQL Daemon,也就是守护进程,是数据库服务运行的核心程序。所有数据库连接、SQL执行、事务处理、存储引擎调度全部依靠这个进程。
Windows系统里进程名是 mysqld.exe,Linux 下后台常驻运行,默认使用 mysql 用户启动,监听3306数据库端口。mysql 是客户端连接工具,mysqld 才是数据库服务本体。

mysqld 内部多线程结构

mysqld 采用单进程多线程运行模式,内部包含三类核心线程:

  • 主线程:负责监听3306端口和本地socket,接收客户端连接请求
  • 连接工作线程:每一个客户端连接都会分配一条独立线程,用来执行SQL语句
  • InnoDB后台线程:包含日志刷新、磁盘IO、脏页回收、锁监控等后台任务线程
  • 二、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)

    四、mysqld进程故障排查点

  • 启动失败:多为配置文件my.cnf路径错误、数据目录权限不是mysql用户、3306端口被占用
  • CPU飙升:用top -Hp定位消耗高的内部线程,对应慢SQL、索引缺失、大量全表扫描
  • 内存占用持续上涨:检查innodb缓冲池配置、大量长连接未释放、临时表堆积
  • 进程莫名消失:查看错误日志,大概率磁盘满、内存OOM、SQL触发严重bug导致进程崩溃
  • 赞(0)
    未经允许不得转载:171主机测评 » mysqld
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址