首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL启动/停止

MySQL启动/停止
EN

Database Administration用户
提问于 2012-11-28 05:54:14
回答 1查看 357关注 0票数 2

有人能向我解释一下在MySQL启动和关闭期间发生了什么吗?我想知道安全的启动/关闭过程。

EN

回答 1

Database Administration用户

回答已采纳

发布于 2012-12-17 17:59:16

当您停止或启动MySQL时,您应该关注过程中的数据和连接状态。

进程(关闭)

进程(启动)

  • 如果配置了美沙_恢复_选项,则执行MyISAM恢复。
  • 检查InnoDB存储引擎的功能可用性,
    • 如果启用了skip-innodb,则将绕过所有InnoDB启动。
    • 如果innodb日志文件丢失,则创建它们。
    • 如果not日志文件的大小与诺姆b预期的大小不同,mysqld就会死掉。
    • 如果启用诺姆b_快地_关机,则执行InnoDB崩溃恢复。

  • 所有这些准备过程完成后允许连接

复制

如果MySQL复制在关机时启动并运行,请注意以下协议:

  • MASTER协议: mysqld只关注
    • 杀死DB连接,包括远程从节点的IO线程
    • 关闭当前二进制日志

  • SLAVE协议: mysqld将运行STOP SLAVE;
    • 更新master.info文件,说明上一次下载母版的SQL命令,记录在中继日志中并执行。
    • 关闭最近的中继日志。

  • MASTER/SLAVE协议:如果一个MySQL实例既是主协议又是从实例,那么单独的主协议和从协议都适用

在启动时,如果在从服务器上配置了MySQL复制,

  • 检查master.info
  • 确保明确定义主服务器上的server_id
  • 确保在从服务器上显式定义server_id
  • 确保奴隶和主人的server_id是不同的
  • 使用master.info和最后一次中继日志将IO线程连接到主服务器
    • 如果连接是死IO,请在60秒内重试
    • 如果连接身份验证失败,则IO线程将死掉,mysqld将继续。
    • 关于成功/失败的消息张贴在mysqld的错误日志中

  • 使用master.info将SQL线程连接到从线程

数据(MyISAM)

由于MyISAM表不是事务性的,唯一的缓存是用于索引查找,因此MyISAM键缓存被简单地丢弃。.frm.MYD.MYI的所有打开文件句柄都已关闭,任何MyISAM的打开文件句柄计数都会减少。如果mysqld崩溃,任何打开的MyISAM表的打开文件句柄计数都是大于0的崩溃时间,导致mysqld将MyISAM表视为崩溃。在该REPAIR TABLE上运行MyISAM在启动时可能是必要的(必须手动执行或您可以将mysqld配置为自动完成此操作.)

在启动时,如果启用了MyISAM恢复选项,则对任何对打开的文件句柄具有非零值的封闭MyISAM表执行REPAIR TABLE

数据(InnoDB)

由于InnoDB是一个事务存储引擎,所以需要执行关机的步骤。

如果启用了innodb_fast_shutdown,则InnoDB基础结构(双写缓冲区,InnoDB日志文件)中的任何挥之不去的事务都将保留在关闭时的文件中。这些更改将在mysqld的下一次启动过程中执行。

如果禁用innodb_fast_shutdown,则InnoDB基础结构(双写缓冲区,InnoDB日志文件)中的任何挥之不去的事务都将在关机时完成。这使得mysqld的启动速度更快。

票数 0
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/29410

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档