自動刪除mysql表,備份,切割

運營的路上,樂趣無羣
診斷到了那些數據庫在佔空間,就想到了備份,壓縮,刪除的策略。

#!/bin/sh
BIN_DIR="/Applications/XAMPP/bin"
MYUSER="urldb"
MYPASS="123456"
DB_NAME="crm"
TABLE="fis_cash"
BCK_DIR="/Users/ge"
 
MAX_ID=$BIN_DIR/mysql -u$MYUSER -p$MYPASS -Bse "select max(id) from $DB_NAME.$TABLE"
 
$BIN_DIR/mysqldump -h localhost --default-character-set utf8 -u $MYUSER --password=$MYPASS $DB_NAME $TABLE | gzip > $BCK_DIR/$DB_NAME.$TABLE.gz
 
DBS=$BIN_DIR/mysql -u$MYUSER -p$MYPASS -Bse "delete from $DB_NAME.$TABLE where id <=$MAX_ID"
在本地測試的時候,沒問題可以順利刪除

第一波操縱:服務器上日誌表A_log數據350多萬,刪除過程發生錯誤
ERROR 3 (HY000) at line 1: Error writing file ‘/tmp/MLCnydfz’ (Errcode: 28 – No space left on device)
我的mysql所在的根目錄(這是個錯誤)一共40G,硬盤只有37G了,這個要刪除的日誌表8G

懷疑是刪除操作delete from 依然會佔用數據庫空間,而且要佔用機器臨時文件/tmp目錄,所以爆出個空間不足

truncate table 搞定。

第二波操縱:服務器上日誌表b_log數據350多萬,刪除過程發生錯誤
這個表50多萬數據,一共1G多,
delete順利了,但是發現空間佔用依然沒變,證實了我的猜測(學藝不精)

https://java-er.com/blog/backup-delete-auto/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章