Documentation Home
MySQL 8.4 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 39.8Mb
PDF (A4) - 39.9Mb
Man Pages (TGZ) - 257.9Kb
Man Pages (Zip) - 364.9Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 Reference Manual  /  MySQL Programs  /  Unix Signal Handling in MySQL

6.10 MySQL 中的 Unix 信号处理

在 Unix 和 Unix 类系统上,进程可以是由 root 系统账户或系统账户所有的进程发送的信号。信号可以使用 kill 命令发送。一些命令解释器将某些键序列与信号关联,如 Control+C 发送 SIGINT 信号。这一部分描述了 MySQL 服务器和客户端程序对信号的响应。

mysqld 对信号的响应如下:

  • SIGTERM 导致服务器关闭。这与执行一个 SHUTDOWN 语句相同,但不需要连接到服务器(关闭需要一个拥有 SHUTDOWN 权限的账户)。

  • SIGHUP 导致服务器重新加载授权表、刷新表、日志、线程缓存和主机缓存。这些操作与各种形式的 FLUSH 语句相同。发送信号使得刷新操作可以在不连接到服务器的情况下进行,这需要一个拥有足够权限的 MySQL 账户。

  • SIGUSR1 导致服务器刷新错误日志、通用查询日志和慢查询日志。 SIGUSR1 的一个用途是实现日志旋转,而不需要连接到服务器,这需要一个拥有足够权限的 MySQL 账户。关于日志旋转的信息,请参阅 第7.4.6节,“服务器日志维护”

    服务器对 SIGUSR1 的响应是 SIGHUP 的子集,使得 SIGUSR1 可以用作一个更“轻量级”的信号,仅仅刷新某些日志,而不具有 SIGHUP 的其他效果,如刷新线程和主机缓存,并将状态报告写入错误日志。

  • SIGINT 通常被服务器忽略。使用 --gdb 选项启动服务器时,安装 SIGINT 的中断处理程序,以供调试用途。请参阅 第7.9.1.4节,“使用 gdb 调试 mysqld”

MySQL 客户端程序对信号的响应如下:

  • 《MySQL 命令行客户端》mysql 客户端将 SIGINT (通常是通过Control+C键盘组合键)解释为当前语句的中断指令,如果当前没有语句,则取消部分输入行。这项行为可以使用 --sigint-ignore 选项来忽略 SIGINT 信号。

  • 使用 MySQL 客户端库的客户端程序默认情况下会阻止 SIGPIPE 信号。可能的变体如下: