Documentation Home
MySQL 8.3 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 40.8Mb
PDF (A4) - 40.9Mb
Man Pages (TGZ) - 294.0Kb
Man Pages (Zip) - 409.0Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb
Excerpts from this Manual

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

6.10 Unix信号处理在MySQL中

在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选项启动服务器时,会安装一个中断处理程序以用于调试目的。请参阅第7.9.1.4节,“在gdb下调试mysqld”

客户端响应信号

MySQL客户端程序按照以下方式响应信号:

  • MySQL客户端mysqlSIGINT(通常是输入Control+C的结果)解释为中断当前语句的指令,如果有语句,或者取消部分输入行,否则取消。可以使用--sigint-ignore选项禁用该行为。

  • 使用MySQL客户端库的客户端程序默认阻止SIGPIPE信号。这些变体是可能的: