mysql 过程退出语句_mysql8 参考手册--服务器关闭过程

服务器关闭过程如下所示:

关闭过程将启动。

这可以通过几种方式启动。例如,具有SHUTDOWN特权的用户可以执行mysqladmin shutdown命令。 mysqladmin可以在MySQL支持的任何平台上使用。其他特定于操作系统的关闭启动方法也是可能的:在Unix上服务器在收到SIGTERM信号时关闭。在Windows上当服务管理器通知服务器时,作为服务运行的服务器将关闭。

如果需要,服务器将创建一个关闭线程。

根据启动关闭的方式,服务器可能会创建一个线程来处理关闭过程。如果客户端请求关闭,则会创建一个关闭线程。如果关闭是收到SIGTERM信号的结果 ,则信号线程可能会自行处理关闭,也可能会创建一个单独的线程来执行关闭操作。如果服务器尝试创建关闭线程而不能(例如,如果内存已耗尽),它将发出一条诊断消息,该消息出现在错误日志中:

Error: Can't create thread to kill server

服务器停止接受新连接。

为了防止在关闭期间启动新的活动,服务器通过关闭通常侦听连接的网络接口的处理程序来停止接受新的客户端连接:TCP/IP端口,Unix套接字文件,Windows命名管道和Windows上的共享内存。

服务器终止当前活动。

对于与客户端连接关联的每个线程,服务器都会断开与客户端的连接,并将该线程标记为已终止。当线程注意到它们被标记时,它们就会死掉。空闲连接的线程很快消失。当前正在处理语句的线程会定期检查其状态,并花费更长的时间死掉。

对于具有开放事务的线程,该事务将回滚。如果一个线程正在更新非事务表,操作如多行 UPDATE或 INSERT可以离席了部分更新,因为操作可以完成前终止。

如果服务器是主复制服务器,则它将与当前连接的从属服务器关联的线程与其他客户端线程一样对待。也就是说,每个标记都被标记为已杀死,并在下次检查其状态时退出。

如果服务器是从属复制服务器,则它将I / O和SQL线程(如果它们处于活动状态)停止,然后将其标记为已终止。允许SQL线程完成其当前语句(以避免引起复制问题),然后停止。如果此时SQL线程处于事务中间,则服务器将等待直到当前复制事件组(如果有)完成执行或直到用户发出KILL QUERYor KILL CONNECTION语句为止 。另请参见 第13.4.2.7节“ STOP SLAVE语句”。由于非事务性语句无法回滚,因此为了确保崩溃安全的复制,仅应使用事务表。

注意

为了确保从站上的崩溃安全,必须在--relay-log-recovery启用状态下运行从站 。

服务器关闭或关闭存储引擎。

在此阶段,服务器刷新表缓存并关闭所有打开的表。

每个存储引擎都对其管理的表执行必要的任何操作。 InnoDB将其缓冲池刷新到磁盘(除非innodb_fast_shutdown 为2),将当前LSN写入表空间,并终止其自己的内部线程。MyISAM 刷新表的所有挂起索引写入。

服务器退出。

为了向管理过程提供信息,服务器将返回以下列表中描述的退出代码之一。括号中的短语表示针对使用systemd管理服务器的平台,systemd响应代码采取的措施。

0 =成功终止(未完成重新启动)

1 =终止失败(不重新启动)

2 =终止失败(重启完成)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值