Created
October 18, 2013 11:51
-
-
Save urbels/7040476 to your computer and use it in GitHub Desktop.
mysql dump + free space check + remove oldest to free up space
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/sh | |
user=user | |
ftpuser=$user | |
pass=password | |
db=dbname | |
host=remote/local | |
BkUp_dir="/home/$ftpuser/dbdump/" | |
######################################## | |
dater=`date +%y%m%d` | |
sp_dl=0 | |
dl_flag=0 | |
echo "$(date "+%Y/%m/%d %R:%S") Starting Mysql backup session for user \"$user\" database \"$db\" " | |
echo "$(date "+%Y/%m/%d %R:%S") Checking if back-up directory \"$BkUp_dir\" exists.." | |
if [ -d $BkUp_dir ] | |
then | |
echo "$(date "+%Y/%m/%d %R:%S") Directory \"$BkUp_dir\" exists!" | |
else | |
echo "$(date "+%Y/%m/%d %R:%S") Directory \"$BkUp_dir\" doesn't exist!" | |
echo "$(date "+%Y/%m/%d %R:%S") Creating directory \"$BkUp_dir\"" | |
mkdir $BkUp_dir | |
chmod 700 $BkUp_dir | |
fi | |
echo "$(date "+%Y/%m/%d %R:%S") Estimating database \"$db\" size.." | |
exp_db_size=`mysql -h $host -P 6603 -u $user -p$pass -D $db -e "show table status\G"| egrep "(Index|Data)_length" | awk 'BEGIN { rsum = 0 } { rsum += $2 } END { | |
print rsum }'` | |
exp_db_size=`expr $exp_db_size / 1024` | |
echo "$(date "+%Y/%m/%d %R:%S") Expected DB size (below): $exp_db_size kB" | |
echo "$(date "+%Y/%m/%d %R:%S") Estimating space available for user \"$ftpuser\".." | |
sp_av=`quota $ftpuser | grep "/dev/" | awk {'print $3-$2'}` | |
echo "$(date "+%Y/%m/%d %R:%S") Space available: $sp_av kB" | |
sp_lf=`expr $sp_av - $exp_db_size` | |
if [ $sp_lf -gt 0 ] | |
then | |
echo "$(date "+%Y/%m/%d %R:%S") Executing mysqldump command.." | |
`mysqldump -h $host -P 6603 -u $user -p$pass $db > $BkUp_dir$dater.sql` | |
echo "$(date "+%Y/%m/%d %R:%S") Compressing mysqldump file.." | |
`tar -pczf $BkUp_dir$dater.sql.gz $BkUp_dir$dater.sql 2>/dev/null` | |
`rm $BkUp_dir$dater.sql` | |
echo "$(date "+%Y/%m/%d %R:%S") Done! Backup \"$dater.sql.gz\" completed!" | |
else | |
echo "$(date "+%Y/%m/%d %R:%S") Theres not enough space available!" | |
sql_list=`ls $BkUp_dir | grep "\.sql"` | |
sql_count=`ls $BkUp_dir | grep "\.sql" | wc -l` | |
if [ $sql_count -gt 0 ] | |
then | |
echo "$(date "+%Y/%m/%d %R:%S") There are $sql_count \".sql\" files!" | |
for i in $sql_list | |
do | |
bk_size=`du -s $BkUp_dir$i | awk {'print $1'}` | |
sp_dl=`expr $sp_dl + $bk_size` | |
if [ $sp_dl -ge $exp_db_size ] | |
then | |
echo "$(date "+%Y/%m/%d %R:%S") $i $bk_size kB (If all DB's till this one are deleted: $sp_dl kB - Space required: $exp_db_size kB)" | |
dl_flag=1 | |
break | |
fi | |
done | |
if [ $dl_flag -eq 1 ] | |
then | |
for j in $sql_list | |
do | |
echo "$(date "+%Y/%m/%d %R:%S") Deleting $j" | |
#echo "rm $BkUp_dir$j" | |
if [ "$j" = "$i" ] | |
then | |
echo "$(date "+%Y/%m/%d %R:%S") Executing mysqldump command.." | |
`mysqldump -h $host -P 6603 -u $user -p$pass $db > $BkUp_dir$dater.sql` | |
echo "$(date "+%Y/%m/%d %R:%S") Compressing mysqldump file.." | |
`tar -pczf $BkUp_dir$dater.sql.gz $BkUp_dir$dater.sql 2>/dev/null` | |
`rm $BkUp_dir$dater.sql` | |
echo "$(date "+%Y/%m/%d %R:%S") Done! Backup \"$dater.sql.gz\" completed!" | |
break | |
fi | |
done | |
else | |
echo "$(date "+%Y/%m/%d %R:%S") Even deleting all the back-up's won't free up enough space!" | |
echo "$(date "+%Y/%m/%d %R:%S") Failed to make a Mysql back-up - Need more free space! Space available: $sp_av kB Space needed: $exp_db_size kB" | |
fi | |
else | |
echo "$(date "+%Y/%m/%d %R:%S") There are no backups to delete to free up some space!" | |
echo "$(date "+%Y/%m/%d %R:%S") Failed to make a Mysql back-up - Need more free space! Space available: $sp_av kB Space needed: $exp_db_size kB" | |
fi | |
fi |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment