MySQL Others -- 服务正常关闭流程

MysqL正常关闭流程

下面信息抄自爱可生开源社区

MysqL服务收到关闭服务的SIGINT 信号后,进行如下处理:

  • 启动关机进程
  • 创建shutdown线程(如果需要)
  • 停止接受新连接
  • 处理已建立连接
  • 关闭存储引擎
  • 关闭服务

1、启动关闭进程

可以有多种方式来启动关机进程,如:

2、创建shutdown线程(如果需要)

根据触发关机的方式不同来决定是否需要创建一个shutdown线程来执行关闭操作。

3、停止接受新连接

为了预防在关闭系统过程再接收新任务,MysqL关闭 TCP/IP 端口、socket 等通道来阻止接受新的客户端连接。

4、处理已建立连接

对于已建立连接,则会:

  • 对于空闲状态的连接,直接关闭
  • 对于未提交的事务,直接回滚。
  • 对于主节点上执行的binlog Dump线程,直接关闭
  • 对于从节点上执行sql线程和IO线程,如果sql线程正在执行语句或执行事务,则等待语句或事务执行完成并关闭sql线程,或用户发出KILL QUERY或KILL CONNECTION来停止sql线程。

5、关闭存储引擎

MysqL Server层会刷新所有表缓存并关闭所有已打开的表。

每个存储引擎执行对其管理的表和对象执行必要的操作,如InnoDB存储引擎会刷新缓冲池中脏页数据和更新表空间的LSN。

6、服务器退出

根据服务关闭情况向管理进程返回"退出代码"

MysqL正常关闭日志

MysqL正常关闭过程中Error日志记录信息为:

2022-03-25T17:17:58.165016+08:00 0 [Note] Giving 1 client threads a chance to die gracefully
2022-03-25T17:17:58.165059+08:00 0 [Note] Shutting down slave threads
2022-03-25T17:17:58.165070+08:00 3 [Warning] SEMisync: Forced shutdown. Some updates might not be replicated.
2022-03-25T17:17:58.165092+08:00 3 [Note] Semi-sync replication switched OFF.
2022-03-25T17:17:58.165654+08:00 0 [Note] Forcefully disconnecting 0 remaining clients
2022-03-25T17:17:58.165680+08:00 0 [Note] Event Scheduler: Purging the queue. 0 events
2022-03-25T17:17:58.165919+08:00 0 [Note] binlog end
2022-03-25T17:17:58.167688+08:00 0 [Note] Shutting down plugin 'rpl_semi_sync_slave'
2022-03-25T17:17:58.167719+08:00 0 [Note] Shutting down plugin 'rpl_semi_sync_master'
2022-03-25T17:17:58.167745+08:00 0 [Note] Stopping ack receiver thread
2022-03-25T17:17:58.167831+08:00 0 [Note] unregister_replicator OK
2022-03-25T17:17:58.167843+08:00 0 [Note] Shutting down plugin 'ngram'

省略shutting down plugin

2022-03-25T17:17:58.167985+08:00 0 [Note] Shutting down plugin 'InnoDB'
2022-03-25T17:17:58.168053+08:00 0 [Note] InnoDB: FTS optimize thread exiting.
2022-03-25T17:17:58.168140+08:00 0 [Note] InnoDB: Starting shutdown...
2022-03-25T17:18:00.704250+08:00 0 [Note] InnoDB: Shutdown completed; log sequence number 63089498676
2022-03-25T17:18:00.705160+08:00 0 [Note] InnoDB: Removed temporary tablespace data file: "ibtmp1"
2022-03-25T17:18:00.705183+08:00 0 [Note] Shutting down plugin 'MEMORY'

省略shutting down plugin

2022-03-25T17:18:00.705547+08:00 0 [Note] Shutting down plugin 'binlog'
2022-03-25T17:18:00.706904+08:00 0 [Note] /opt/soft/MysqL57/bin/MysqLd: Shutdown complete

错误日志中可以发现:

其他

使用正常非暴力方式关闭MysqL服务时,如果该MysqL服务是半同步复制的主节点,可能会导致部分事务在事务提交前未收到从节点返回的确认信息。

参考资料

相关文章

MySQL 死锁 是指两个或多个事务互相等待对方持有的锁,从而导...
在MySQL中,InnoDB引擎通过Next-Key Locking技术来解决幻读问...
在数据库事务管理中,Undo Log 和 Redo Log 是两种关键日志,...
case when概述 sql语句中的case语句与高级语言中的switch语句...
其实很简单,只是为了忘记,做个记录,用的时候方便。 不管是...
1.进入服务,找到mysql服务,在属性里找到mysql的安装路径 2...