gpt4 book ai didi

mysql - 安全终止不会响应 KILL PROCESS 的 mySQL 查询

转载 作者:行者123 更新时间:2023-11-30 00:23:34 26 4
gpt4 key购买 nike

在 MYISAM 表上运行常规 OPTIMIZE TABLE 查询通常需要几分钟,现在大约需要 3 天。这也发生在大约一周前,但它确实成功完成了,我错误地认为 table 已经修好了,这次不会出现问题。并非如此...

上次,该进程没有响应 KILL PROCESS,最终我不得不重新启动 mysqld。错误日志报告警告,例如:

[Warning] /usr/sbin/mysqld: Forcing close of thread 24974085  user: 'XXXX'

当 mysqld 重新启动时,许多其他表已损坏并且必须重建。其中一些表很大,我想避免再次发生这种情况。我知道重新启动 mysqld 应该安全地关闭表,但似乎没有。

使用 mySQL 服务器的 Web 服务将进入维护模式,以防止新查询访问数据库。但是,鉴于 FLUSH TABLES 被 OPTIMIZE 查询阻止,如何安全地关闭所有打开的表?

SHOW OPEN TABLES;
[etc...]
114 rows in set (0.01 sec)

真的不想修复 114 个表。有什么建议吗?

注意:我很清楚正在优化的表将被损坏,并且可以忍受。我只是想尽量减少其他表的问题。

谢谢。

更新:

所以 FLUSH TABLES 接受以逗号分隔的表列表...也许它可以像刷新所有打开的表一样简单,但我仍然愿意对此保证或任何其他想法。刷新特定表确实会将其从打开的表列表中删除,因此这看起来很有希望。

http://dev.mysql.com/doc/refman/5.1/en/flush.html

最佳答案

FWIW,这一切都很顺利。接下来的步骤是这样的。我不确定分别刷新和关闭每个表是否太过分了,但没有表崩溃,总停机时间约为 45 分钟,所以这是值得的:

Make a full slave backup
Redirect FQDN for the master to a dead IP so all services are down and master receives no new queries
When master is receiving no new queries, flush and close all tables individually
Stop mysql on master
Ensure OPTIMIZE TABLE does not cause problems for slave if it is replicated out
Stop mysql on slave
Copy all blog tables from slave to master
Restart master
Restart slave
Check for any corrupt tables and allow them to be repaired
Map FQDN back to the master internal IP
Sanity check of posts on main blog
Restart replication on slave and masters
Make sure replication progresses correctly (multi-master)
Make a full master backup

关于mysql - 安全终止不会响应 KILL PROCESS 的 mySQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23051171/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com