mysql服务关闭过程
2016-04-25 11:07
417 查看
myql关闭服务的方式只有一种,比oracle的3张方式少,服务关闭的方式如下:
1关闭进程的初始化
2如果需要服务器创建一个关闭线程
依赖于关闭如何被初始化啊,服务器也许会创建一个线程来处理关闭的进程,如果客户端要求关闭,关闭的线程被创建,如果是收到SIGTERM信号关闭,那么信号线程可能会自己处理信号,也许会创建一个分开的线程来做,如果线程尝试创建一个关闭线程但失败了,那么会在错误日志中出现下面的错误提示:
3服务器停止接收新的连接
为了停止接收客户端的新连接,服务器通过关闭网络接口的句柄来实现。
4服务器停止当前的活动
对于每个客户端的连接,服务器断开连接并标记线程被kill,线程发现被标记成killed状态的时候会die,空闲的连接die的很快,但是正在执行语句的线程可能就要花费些时间了,对那些有正在执行的打开的事务,事务会被回滚。如果服务器是master机器,他对待slave过来的连接就跟别的客户端过来的连接一样,也是标记killed状态并退出。
如果服务器是slave机器,那么在标记客户端线程之前会停止io和sql线程,sql线程被允许执行完当前的语句,然后停止。如果在这时候,sql线程在一个事务中间,服务器会等待直到当前复制事件组完成了执行。
5服务器停止或关闭存储引擎
这个步骤中服务器刷新表缓存关闭所有打开的表。innodb刷新bufferpool到磁盘上,写当前的lsn到表空间中,关闭它自己的内部线程。MyISAM刷新所有pending的索引写入到表中。
6服务器退出。
1关闭进程的初始化
2如果需要服务器创建一个关闭线程
依赖于关闭如何被初始化啊,服务器也许会创建一个线程来处理关闭的进程,如果客户端要求关闭,关闭的线程被创建,如果是收到SIGTERM信号关闭,那么信号线程可能会自己处理信号,也许会创建一个分开的线程来做,如果线程尝试创建一个关闭线程但失败了,那么会在错误日志中出现下面的错误提示:
Error: Can't create thread to kill server
3服务器停止接收新的连接
为了停止接收客户端的新连接,服务器通过关闭网络接口的句柄来实现。
4服务器停止当前的活动
对于每个客户端的连接,服务器断开连接并标记线程被kill,线程发现被标记成killed状态的时候会die,空闲的连接die的很快,但是正在执行语句的线程可能就要花费些时间了,对那些有正在执行的打开的事务,事务会被回滚。如果服务器是master机器,他对待slave过来的连接就跟别的客户端过来的连接一样,也是标记killed状态并退出。
如果服务器是slave机器,那么在标记客户端线程之前会停止io和sql线程,sql线程被允许执行完当前的语句,然后停止。如果在这时候,sql线程在一个事务中间,服务器会等待直到当前复制事件组完成了执行。
5服务器停止或关闭存储引擎
这个步骤中服务器刷新表缓存关闭所有打开的表。innodb刷新bufferpool到磁盘上,写当前的lsn到表空间中,关闭它自己的内部线程。MyISAM刷新所有pending的索引写入到表中。
6服务器退出。
相关文章推荐
- MySQL导入.sql文件及常用命令
- Mysql 经典练习
- mysql update不能直接使用select的结果
- mysql_escape_string()函数用法分析
- MySQL(六) —— 运算符和函数
- mysql动态游标学习(mysql存储过程游标)
- Mysql常见问题
- MySql以及navicat for mysql的安装
- mysql日志清理
- MyBatis+MySQL数据库操作小技巧
- mysql复习
- MYSQL查询一段时间
- mysql56编码方式设置
- MySQL(五) —— 子查询
- 如何彻底卸载MySQL
- mysql一些实用的语句
- mysql查询语句in和exists二者的区别和性能影响
- MySQL输入密码后闪退,这里有解
- MySQL输入密码后闪退,这里有解
- mysql配置文件my.cnf详解 ( 主要参数)