Vinay Asked: 2012-11-28 21:54:14 +0800 CST2012-11-28 21:54:14 +0800 CST 2012-11-28 21:54:14 +0800 CST MySQL 启动/停止 772 任何人都可以向我解释在 MySQL 启动和关闭期间发生了什么吗?我想知道安全启动/关闭过程。 mysql process 1 个回答 Voted Best Answer RolandoMySQLDBA 2012-12-18T09:59:16+08:002012-12-18T09:59:16+08:00 当您停止或启动 MySQL 时,您应该关注过程中的数据和连接状态。 进程(关闭) 不允许新的数据库连接 活动连接被终止 删除所有临时表 如果启用了二进制日志记录,则将总结信息写入最新的二进制日志中。警告:由于大多数人不使用sync-binlog,mysqld 完全依赖操作系统来刷新最终的二进制日志条目。 mysqld 查找 MySQL 实例的 PID 文件,获取 Linux 进程 ID。这根据关闭本地实例来验证事情。在某些情况下,mysqld 往往会与 PID 文件失去联系。发生这种情况时,必须通过 TCP/IP 使用 mysqladmin 关闭 mysqld 进程(启动) 如果配置了myisam_recover_options,执行MyISAM Recovery 检查 InnoDB 存储引擎的功能可用性 如果skip-innodb启用,将绕过所有 InnoDB 启动 如果缺少 innodb 日志文件,则会创建它们 如果 innodb 日志文件的大小与innodb_log_file_size预期的大小不同,则 mysqld 终止 如果启用innodb_fast_shutdown,则执行 InnoDB 崩溃恢复 完成所有这些准备过程后允许连接 复制 如果 MySQL 复制在关闭时启动并运行,请注意以下协议: MASTER协议:mysqld 只关心 杀死数据库连接,包括远程从站的 IO 线程 关闭当前二进制日志 SLAVE协议:mysqld 将运行STOP SLAVE; 更新有关master.info上次从主服务器下载、记录在其中继日志中并执行的 SQL 命令的文件。 关闭最近的中继日志。 MASTER/SLAVE协议:如果 MySQL 实例既是主从,则单独的主从协议都适用 在启动时,如果 MySQL Replication 在 Slave 上配置, 检查master.info 确保 Master 上的 server_id 已明确定义 确保明确定义 Slave 上的 server_id 确保 Slave 和 Master 的 server_id 不同 master.info使用最后的中继日志 将 IO 线程连接到主服务器 如果连接 IO 明智,请在 60 秒后重试 如果连接验证失败,IO 线程保持死状态,mysqld 继续 成功/失败的消息发布在 mysqld 的错误日志中 将 SQL 线程连接到 Slave 使用master.info 数据(MyISAM) 由于 MyISAM 表不是事务性的,唯一完成的缓存是用于索引查找,MyISAM 键缓存被简单地丢弃。.frm, .MYD, 和are closed的所有打开文件句柄.MYI,任何 MyISAM 的打开文件句柄计数都会减少。如果 mysqld 崩溃,任何打开的 MyISAM 表的打开文件句柄计数是崩溃时间大于 0 导致 mysqld 将 MyISAM 表视为崩溃。启动时可能需要在该 MyISAM 上运行REPAIR TABLE(必须手动完成,或者您可以将 mysqld 配置为自动执行) 在启动时,如果启用了MyISAM 恢复选项REPAIR TABLE,则对任何打开文件句柄具有非零值的已关闭 MyISAM 表执行。 数据(InnoDB) 由于 InnoDB 是一个事务性存储引擎,因此有一些步骤可以关闭。 如果启用了 innodb_fast_shutdown,则 InnoDB 基础结构(双写缓冲区、InnoDB 日志文件)中的任何延迟事务都将保留在关闭时的文件中。下一次启动 mysqld 时,更改将生效。 如果 innodb_fast_shutdown 被禁用,InnoDB 基础设施(双写缓冲区,InnoDB 日志文件)中的任何延迟事务都会在关闭时完成。这使得 mysqld 启动更快。
当您停止或启动 MySQL 时,您应该关注过程中的数据和连接状态。
进程(关闭)
sync-binlog
,mysqld 完全依赖操作系统来刷新最终的二进制日志条目。进程(启动)
skip-innodb
启用,将绕过所有 InnoDB 启动复制
如果 MySQL 复制在关闭时启动并运行,请注意以下协议:
MASTER
协议:mysqld 只关心SLAVE
协议:mysqld 将运行STOP SLAVE;
master.info
上次从主服务器下载、记录在其中继日志中并执行的 SQL 命令的文件。MASTER/SLAVE
协议:如果 MySQL 实例既是主从,则单独的主从协议都适用在启动时,如果 MySQL Replication 在 Slave 上配置,
master.info
master.info
使用最后的中继日志 将 IO 线程连接到主服务器master.info
数据(MyISAM)
由于 MyISAM 表不是事务性的,唯一完成的缓存是用于索引查找,MyISAM 键缓存被简单地丢弃。
.frm
,.MYD
, 和are closed的所有打开文件句柄.MYI
,任何 MyISAM 的打开文件句柄计数都会减少。如果 mysqld 崩溃,任何打开的 MyISAM 表的打开文件句柄计数是崩溃时间大于 0 导致 mysqld 将 MyISAM 表视为崩溃。启动时可能需要在该 MyISAM 上运行REPAIR TABLE
(必须手动完成,或者您可以将 mysqld 配置为自动执行)在启动时,如果启用了MyISAM 恢复选项
REPAIR TABLE
,则对任何打开文件句柄具有非零值的已关闭 MyISAM 表执行。数据(InnoDB)
由于 InnoDB 是一个事务性存储引擎,因此有一些步骤可以关闭。
如果启用了 innodb_fast_shutdown,则 InnoDB 基础结构(双写缓冲区、InnoDB 日志文件)中的任何延迟事务都将保留在关闭时的文件中。下一次启动 mysqld 时,更改将生效。
如果 innodb_fast_shutdown 被禁用,InnoDB 基础设施(双写缓冲区,InnoDB 日志文件)中的任何延迟事务都会在关闭时完成。这使得 mysqld 启动更快。