【问题标题】:What is MySQL doing?? 100% disk utilization from bootMySQL在做什么??启动时 100% 的磁盘利用率
【发布时间】:2017-05-27 12:36:57
【问题描述】:

我在 Win10 机器上有一个大型数据库,mysqld.exe 100% 执行大量磁盘 I/O,持续数小时和数小时 100MB/s - 主要是写入 - 在多次重新启动后仍然存在。我怎样才能找出它到底在做什么,并阻止它?我知道数据库目前没有被使用,我想弄清楚这个 I/O 来自哪里并停止它。我在互联网上找到的唯一解决方案是一般配置建议,我不需要,我现在需要关闭这个东西!

show processlist 什么都不显示。

更新:问题是对表的巨大后台回滚操作。解决办法是:

1) kill mysqld.exe
2) add innodb_force_recovery=3 to my.ini
3) start mysqld.exe
4) export the table (96GB table resulted in about 40GB .sql file)
5) drop the table
6) kill mysqld.exe
7) set innodb_force_recovery=0 to my.ini
8) reboot and import the table back

还不知道数据完整性,但看起来还不错。

感谢米尔尼。

【问题讨论】:

标签: mysql database server disk utilization


【解决方案1】:

如果您从任务管理器查看资源监视器的磁盘选项卡,您可以看到正在写入哪些文件,这将提示您它是哪个数据库;

然后您可以使用 SELECT * FROM information_schema.innodb_trx\G 之类的东西来查看打开的事务并查看导致此问题的语句

【讨论】:

  • 谢谢,上面写着“trx_state: ROLLING BACK”。我怎样才能取消这个?
  • 我发现:“您可以终止 mysqld 进程并将 innodb_force_recovery 设置为 3 以在不回滚的情况下启动数据库,然后 DROP 导致失控回滚的表”。我可以在不删除表的情况下防止回滚吗?这是一张重要的表格,而且太大而无法导出。
  • 您没有备份吗?请告诉我这不是在 Windows 10 客户端而不是服务器上运行的生产数据库吗?理想情况下,您应该让回滚完成...
  • 不,这更像是我的测试。问题是它在 SSD 上,那些写入正在谋杀它,所以我对非理想解决方案持开放态度。
  • 我实际上比 MySQL 更熟悉 MsSQL,但是快速浏览一下文档(这里:dev.mysql.com/doc/refman/5.7/en/forcing-innodb-recovery.html)建议你应该在 [mysqld] 标题部分下添加它
【解决方案2】:

如果默认的 8MB 增加到 512MB,则只需增加 InnoDB 缓冲池大小

SET GLOBAL Innodb_buffer_pool_size = 5168709120

【讨论】:

    猜你喜欢
    • 2017-01-16
    • 2018-05-25
    • 1970-01-01
    • 2014-11-09
    • 2015-03-23
    • 2017-02-04
    • 2021-10-24
    • 2017-09-01
    • 2019-12-07
    相关资源
    最近更新 更多