Pra*_*esh 5 mysql innodb drop-table
我们有一个大小为 2 TB 的 mysql 数据库,其中有 5 个从 110GB 到 350GB 的大表。当我们尝试删除这些表时,mysql 进入 defunct 模式并长时间挂在该状态。有没有办法在不挂 mysql 的情况下删除这些表。我们有一台机器,内存为 122GB,交换为 60GB。我们使用 InnoDB 引擎希望信息足以帮助我们解决这个问题
这是MySQL for InnoDB 在较大表上的一个已验证的旧错误。由于这个问题已经修复很久了,也许情况不一样,但看起来确实很相似。
旧版本的解决方法是:
对文件系统进行碎片整理。当您扩展许多表时,每个表的块最终会变得非常碎片,因此碎片整理对于表扫描和降低速度都有好处。如果您没有碎片整理程序,将文件复制到某处然后再复制回来即可完成此任务。
删除时,创建指向 IBD 文件的文件系统链接。在MySQL中删除表,操作系统不会删除文件系统中的文件,因为链接存在,因此在MySQL中删除速度会很快。删除该链接,操作系统将在后台完成删除工作。
如果这不起作用...这个问题的答案将允许您删除大约一半的数据。这个想法是,当您删除表时,您可以删除足够的数据以阻止 InnoDB 挂起。