启动和停止MySQL/服务器关闭过程

第三章服务器关闭过程

服务器关闭过程发生如下:

  1. 关闭进程启动。

    这可以发生发起的几种方法。例如,一个用户的关闭特权可以执行mysqladmin关闭命令。mysqladmin可以使用在任何平台支持MySQL。其他特定于操作系统的关机启动方法是可能的:在Unix服务器关闭时,它接收SIGTERM信号。服务器作为服务运行在Windows服务经理告诉它时关闭。

  2. 必要时关闭服务器创建一个线程。

    取决于关闭了,服务器可能会创建一个线程来处理关闭过程。如果关闭是由一个客户端请求,创建一个关闭线程。如果关闭接收的结果SIGTERM信号,信号线程可能处理关闭本身,或者创建一个单独的线程。如果服务器试图创建一个关闭线程,无法(例如,如果内存耗尽),问题诊断消息,出现在错误日志:

    错误:无法创建线程杀死服务器
  3. 服务器停止接受新连接。

    在关闭防止发起新活动,服务器停止接受新的客户端连接通过关闭网络接口的处理程序,它通常用于监听连接:TCP / IP端口,Unix套接字文件,窗户命名管道,和Windows上的共享内存。

  4. 服务器终止当前活动。

    对于每个线程关联到一个客户端连接,服务器将连接客户端和标志着线程死亡。线程死时,他们发现他们是如此明显。线程空闲连接后会很快死去。当前线程处理报表定期检查他们的国家,且要花很长的时间去死。关于线程终止的额外信息,请参阅杀了声明为指令,特别是关于死亡修理表优化表上的操作MyISAM表。

    线程有一个打开的事务,事务回滚。如果一个线程更新nontransactional表,一个操作,比如多行更新插入可能离开表部分更新,因为操作可以终止之前完成。

    如果服务器是一个复制源服务器,它将与当前连接副本与其他客户端相关的线程线程。也就是说,每一个被标记为死亡,退出时,下一个检查它的状态。

    如果服务器是一个副本服务器,它停止复制I / O和SQL线程,如果他们是活跃的,之前将客户端线程标记为死亡。SQL允许线程完成当前语句(以避免引起复制问题),然后停止。如果SQL线程在一个事务在这一点上,服务器等待,直到当前复制事件组(如果有的话)执行完成,或者直到用户问题杀死查询杀死连接声明。另请参阅停止奴隶声明。自从nontransactional语句不能回滚,只为了保证crash-safe复制,事务表应该使用。

    请注意

    保证事故安全的副本,您必须运行的副本——relay-log-recovery启用。

    另请参阅中继日志和复制元数据存储库)。

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

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

    每个存储引擎执行任何必要的行动表管理。InnoDB将磁盘(除非的缓冲池innodb_fast_shutdown2),将当前的LSN写入表空间,其内部的线程终止。MyISAM将任何悬而未决的索引写一个表。

  6. 服务器退出。

管理过程提供信息,服务器将返回一个退出代码中描述下面的列表。这个短语在括号中表示行动systemd响应代码,systemd平台是用于管理服务器。

  • 0 =成功终止(没有重启完成)

  • 1 =失败终止(没有重启完成)

  • 2 =不成功终止(重启完成)