運營的路上,樂趣無羣
診斷到了那些數據庫在佔空間,就想到了備份,壓縮,刪除的策略。java
#!/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"
在本地測試的時候,沒問題能夠順利刪除mysql
第一波操縱:服務器上日誌表A_log數據350多萬,刪除過程發生錯誤
ERROR 3 (HY000) at line 1: Error writing file ‘/tmp/MLCnydfz’ (Errcode: 28 – No space left on device)
個人mysql所在的根目錄(這是個錯誤)一共40G,硬盤只有37G了,這個要刪除的日誌表8Gsql
懷疑是刪除操做delete from 依然會佔用數據庫空間,並且要佔用機器臨時文件/tmp目錄,因此爆出個空間不足數據庫
truncate table 搞定。服務器
第二波操縱:服務器上日誌表b_log數據350多萬,刪除過程發生錯誤
這個表50多萬數據,一共1G多,
delete順利了,可是發現空間佔用依然沒變,證明了個人猜想(學藝不精)ide