mysql命令-mysqld_safe
一、工具简介
mysqld_safe 是 MySQL 官方推荐的服务器启动脚本,用于在 Unix/Linux 系统上安全地启动、重启和管理 mysqld 进程。它提供了一系列安全监控和故障恢复功能。
二、基本语法
mysqld_safe [options]
三、主要功能特性
1. 核心功能
-
自动重启:当
mysqld进程意外终止时自动重新启动 -
错误日志重定向:将错误信息记录到日志文件
-
进程监控:监控
mysqld进程状态 -
核心文件生成:配置核心转储文件生成
-
用户权限控制:以指定用户身份运行 MySQL
2. 安全特性
-
安全检查:验证数据目录和文件权限
-
环境清理:清理可能影响 MySQL 的环境变量
-
信号处理:正确处理系统信号
-
资源限制:设置进程资源限制
四、启动方式对比
启动方式
说明
适用场景
mysqld_safe
安全启动脚本,带监控
生产环境推荐
mysqld
直接启动服务器进程
调试、开发环境
systemctl
系统服务管理
使用 systemd 的系统
service
init.d 服务脚本
传统 init 系统
五、常用选项详解
1. 基本选项
选项
说明
示例
--basedir=dir
MySQL 安装目录
--basedir=/usr/local/mysql
--datadir=dir
数据目录
--datadir=/var/lib/mysql
--pid-file=file
PID 文件路径
--pid-file=/var/run/mysql.pid
--socket=file
Socket 文件路径
--socket=/tmp/mysql.sock
--port=port_num
监听端口
--port=3306
2. 日志选项
选项
说明
示例
--log-error=file
错误日志文件
--log-error=/var/log/mysql/error.log
--syslog
使用系统日志
--syslog
--skip-syslog
禁用系统日志
--skip-syslog
--syslog-tag=tag
系统日志标签
--syslog-tag=mysql
3. 监控选项
选项
说明
示例
--core-file-size=size
核心文件大小限制
--core-file-size=unlimited
--open-files-limit=count
打开文件限制
--open-files-limit=65535
--nice=priority
进程优先级
--nice=10
--malloc-lib=file
malloc 库路径
--malloc-lib=/usr/lib/libtcmalloc.so
4. 用户选项
选项
说明
示例
--user=user_name
运行用户
--user=mysql
--group=group_name
运行用户组
--group=mysql
六、配置方式
1. 命令行参数
mysqld_safe --datadir=/var/lib/mysql \ --log-error=/var/log/mysql/error.log \ --pid-file=/var/run/mysql.pid \ --user=mysql
2. 配置文件(my.cnf)
[mysqld_safe] log-error=/var/log/mysql/error.log pid-file=/var/run/mysql.pid socket=/tmp/mysql.sock nice=10
[mysqld] datadir=/var/lib/ mysqlport=3306
3. 环境变量
export MYSQL_HOME=/usr/local/mysql export UMASK_DIR=0750 export UMASK=0640
七、mysqld_safe 内部工作原理
1. 启动流程
# 简化版流程1. 检查环境变量和参数2. 设置信号处理器3. 创建必要的目录和文件4. 设置资源限制5. 切换到指定用户6. 启动mysqld进程7. 监控mysqld进程状态8. 处理重启逻辑
2. 信号处理
# mysqld_safe 处理的信号SIGTERM (15) -> 优雅关闭mysqld SIGHUP (1) -> 重新读取配置 SIGINT (2) -> 中断处理 SIGQUIT (3) -> 退出并生成核心转储
3. 重启逻辑
while true; do # 启动mysqld start_mysqld if [ $? -ne 0 ]; then # 检查重启条件 if should_restart; then sleep $RESTART_DELAY continue else break fi fi # 等待mysqld退出 wait_for_mysqlddone
八、故障排查
1. 启动失败常见原因
# 检查错误日志 tail -f /var/log/mysql/error.log # 检查文件权限 ls -la /var/lib/mysql/ ls -la /tmp/mysql.sock # 检查端口占用 netstat -tlnp | grep 3306 # 检查进程状态 ps aux | grep mysqld
2. 调试模式启动
# 显示详细启动信息 mysqld_safe --verbose # 前台运行,输出到终端 mysqld_safe --console # 启用调试日志 mysqld_safe --debug
3. 常见错误处理
错误1:无法创建PID文件
# 解决方案 mkdir -p /var/run/mysql chown mysql:mysql /var/run/mysql chmod 755 /var/run/mysql
错误2:权限不足
# 检查并修复权限 chown -R mysql:mysql /var/lib/mysql chmod 750 /var/lib/mysql
错误3:端口已被占用
# 查找占用进程 lsof -i :3306 # 或 fuser -n tcp 3306

发表评论
所有评论