tft每日頭條

 > 科技

 > mysql删除表數據進度0%

mysql删除表數據進度0%

科技 更新时间:2024-12-28 15:00:31

mysql删除表數據進度0%?最近遇到了一個坑,MySQL數據庫服務器硬盤容量告警,而且因為非技術原因,還不能追加硬盤,我來為大家科普一下關于mysql删除表數據進度0%?以下内容希望對你有幫助!

mysql删除表數據進度0%(删除大表數據時)1

mysql删除表數據進度0%

背景

最近遇到了一個坑,MySQL數據庫服務器硬盤容量告警,而且因為非技術原因,還不能追加硬盤。

通過監控發現,磁盤IO一直100%。直接影響就是系統處理時間越來越長,接口響應耗時也越來越多。

drop or truncate table 失敗

經過分析,發現mysql業務數據庫裡有好幾張大表,而且這幾張大表行數都在5000萬以上,文件大小都在100G和150G之間。

因為這些表都是備份表,第一反應就是找DBA直接清理掉這些表。潛意識裡以為drop table 和 truncate table效率很高,都會快速完成,但事實上不是。但意外的是,在執行drop table時,直接導緻數據庫挂起了,而且還發生了主從切換。

第一次嘗試失敗。

通過Linux硬鍊接删除

第一次失敗反應出來的問題是,如果數據文件過大,drop table操作也得慎用。

那我們可以在drop table之前,想辦法把數據文件邏輯清空。比如Linux硬連接的方式,具體步驟如下(假如目标表名是test):

  1. 進入數據庫data目錄,創建數據文件 test.ibd的硬鍊接

ln test.ibd test.ibd.hdlk

  1. 進入數據庫命令行删除目标表。

drop table test;

此時,磁盤上真實的數據其實沒删除,但數據庫裡的表,已經删除了。

  1. 再回到數據庫data目錄清除數據文件。

rm test.ibd.hdlk

到此,數據就能快速清理成功了。

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关科技资讯推荐

热门科技资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved