在我们的生产系统上,我们最近删除了一个 1TB 表。删除完成后,表在 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 来解决,但是我们的数据库运行在 2TB+,我真的很想避免停机。
有没有办法删除文件句柄并释放占用的磁盘空间?