Skip to content

Instantly share code, notes, and snippets.

@fadlisaad
Created September 24, 2018 03:15
Show Gist options
  • Save fadlisaad/6f478fb5e55b3b790f1f4a8ba071165a to your computer and use it in GitHub Desktop.
Save fadlisaad/6f478fb5e55b3b790f1f4a8ba071165a to your computer and use it in GitHub Desktop.
Backup database using mysqldump with daily, weekly and monthly incremental
#!/bin/bash
#----------------------------------------------------
# Preventive Maintenance Script
# Coded by Pikri Mohammad
# Updated on 5 April 2017
#----------------------------------------------------
MYSQL_USER="root"
MYSQL_HOST="localhost"
MYSQL_PASSWORD="password"
MYSQL_BIN="$(which mysql)"
MYSQLDUMP_BIN="$(which mysqldump)"
STORE_FOLDER="/root/backup/mysql/"
TODAY=$(date +"%Y-%m-%d")
for db in 'db1' 'db2' 'db3'
do
THE_PATH=$STORE_FOLDER/$db
if [ ! -d "$THE_PATH" ]; then
mkdir -p "$THE_PATH"
fi
#daily
$MYSQLDUMP_BIN -u $MYSQL_USER -h $MYSQL_HOST -p$MYSQL_PASSWORD $db | gzip -9 > $THE_PATH/daily-$TODAY.sql.gz
#weekly
if [ `date +%u` -eq 7 ];then
mv $THE_PATH/daily-$TODAY.sql.gz $THE_PATH/weekly-$TODAY.sql.gz
rm -f $THE_PATH/daily-*
fi
#monthly
if [ `date +%d` -eq 28 ];then
mv $THE_PATH/daily-$TODAY.sql.gz $THE_PATH/monthly-$TODAY.sql.gz
rm -f $THE_PATH/weekly-*
find $THE_PATH/* -name "monthly-*" -mtime +60 -exec rm -f {} \;
fi
done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment