【问题标题】:MYSQL Database Repair Taking Extremely LongMYSQL 数据库修复耗时极长
【发布时间】:2021-01-10 15:25:17
【问题描述】:

我有一个大小约为 7GB 的 MYSQL MISAM 表,并且有相当多的索引。该表昨天损坏了,我的 MYSQL 修复工作已经工作了 12 多个小时。

我想知道这样一个表的 MYSQL 修复实际需要多长时间? (由于正在修复,目前我无法准确获取行数和确切大小)。

我使用的变量是:

| myisam_max_sort_file_size | 9223372036853727232  |
| myisam_mmap_size          | 18446744073709551615 |
| myisam_recover_options    | FORCE                |
| myisam_repair_threads     | 1                    |
| myisam_sort_buffer_size   | 268435456
| read_buffer_size     | 67108864 |
| read_only            | OFF      |
| read_rnd_buffer_size | 4194304

由于使用 GODADDY 托管主机,我无法更改任何全局变量。

从状态上看,修复一直是“通过排序修复”。 有没有其他方法可以加快修复过程??

谢谢

编辑: 我的内存和 CPU 使用情况如下图所示

我还尝试从 2 天前的备份中恢复数据库(到新数据库),过去 5 小时内它还在同一张表上的“使用 keycache 修复”上卡住了。

我尝试了 mysqlcheck 和 REPAIR TABLE,而不是 myisamchk,因为我无法访问 /var/lib/mysql 中的特定数据库文件夹,这会导致 Permission Denied 错误。以及 myisamchk 空命令给出命令未找到。

【问题讨论】:

    标签: mysql myisam


    【解决方案1】:

    这应该需要几分钟。如果 12 小时后仍未完成,则它可能挂起并且永远不会完成。

    MyISAM 已经有十多年没有真正得到维护了,你很可能遇到了一个错误。如果您能掌握原始数据库文件,您可能会在myisamchk 获得更好的机会。

    【讨论】:

    • 有什么方法可以加快速度,或者我做错了什么?我可以进入 /var/lib/mysql,但访问 /var/lib/mysql/$DATABASE_NAME 会导致 Permission Denied Edit:也在服务器上运行 myisamchk 会导致 command not found
    • “2 天前的备份”是什么形式的?它是一个mysqldump吗?快照?你能把它的原始内容放到你的本地机器上吗?在本地修复桌子可能会更幸运。
    • 它是一个 SQL 转储。那个问题是我只想替换那个特定的表,这可能很困难。其次,备份是在 MySQL 损坏之前进行的,所以我怀疑备份是否损坏了?
    • 现在尝试备份数据库只会给出表损坏的错误。
    • 好的,所以在本地机器上恢复备份,只转储一张表,然后在生产服务器上恢复那张表转储。
    猜你喜欢
    • 1970-01-01
    • 2018-03-15
    • 2018-07-26
    • 1970-01-01
    • 2019-02-15
    • 2017-04-15
    • 2016-11-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多