Назад | Перейти на главную страницу

Как удалить дескриптор файла из MySql после удаления таблицы Mysql объемом 1 ТБ, чтобы освободить место на диске?

В нашей производительной системе мы недавно отказались от стола размером 1 ТБ. После завершения отбрасывания таблица исчезла в mysql, но файл все еще присутствовал в папке / lib / mysql / dbname /. (Мы используем один файл для каждой настройки таблицы) Я удалил файлы, связанные с таблицей.

Я проверил с

lsof  | grep crawl_link | grep deleted

и обнаружил, что в процессе mysql все еще есть открытые дескрипторы

mysqld    38115            mysql   11uW     REG                8,3 1016938364928  182524780 /var/lib/mysql/seobility/_crawl_links_new.ibd (deleted)
mysqld    38115  2110      mysql   11uW     REG                8,3 1016938364928  182524780 /var/lib/mysql/seobility/_crawl_links_new.ibd (deleted)
mysqld    38115  4530      mysql   11uW     REG                8,3 1016938364928  182524780 /var/lib/mysql/seobility/_crawl_links_new.ibd (deleted)
mysqld    38115  8192      mysql   11uW     REG                8,3 1016938364928  182524780 /var/lib/mysql/seobility/_crawl_links_new.ibd (deleted)
(Total 120 Lines)

Я знаю, что проблема будет решена путем перезапуска MySql, но наша база данных работает на 2 ТБ +, и мне бы очень хотелось избежать простоев.

Есть ли способ отбросить дескриптор файла и освободить занимаемое дисковое пространство?

Очевидное решение - убить (или перезапустить) процесс, содержащий дескриптор файла (идентификатор процесса 38115, как показано на lsof вывод).

Если вы не хотите этого делать, вы можете обрезать файл (даже если он удален), чтобы освободить место на диске. Вы можете попробовать следующее:

$ :> /proc/38115/fd/11

куда 38115 это идентификатор процесса и 11 - дескриптор файла. Не забывайте при необходимости запускать как root.