Skip to content

Instantly share code, notes, and snippets.

@compermisos
Created June 1, 2012 23:10
Show Gist options
  • Save compermisos/2855683 to your computer and use it in GitHub Desktop.
Save compermisos/2855683 to your computer and use it in GitHub Desktop.
backup mysql db's "table a table"
#!/bin/sh
# MySQL backup script Table based
# Copyright (c) 2012 Jesus Christian Cruz Acono <[email protected]>
# This script is licensed under GNU GPL version 2.0 or above
# ---------------------------------------------------------------------
#########################
######TO BE MODIFIED#####
### System Setup ###
BACKUP=YOUR_LOCAL_BACKUP_DIR
### MySQL Setup ###
MUSER="MYSQL_USER"
MPASS="MYSQL_USER_PASSWORD"
MHOST="localhost"
######DO NOT MAKE MODIFICATION BELOW#####
#########################################
### Binaries ###
TAR="$(which tar)"
GZIP="$(which gzip)"
MYSQL="$(which mysql)"
MYSQLDUMP="$(which mysqldump)"
### Today + hour in 24h format ###
YEAR$(date +"%Y")
MONTH$(date +"%M")
DAY=$(date +"%d")
HOUR=$(date +"%H")
### Create hourly dir ###
mkdir $BACKUP/$YEAR
mkdir $BACKUP/$YEAR/$MONTH
mkdir $BACKUP/$YEAR/$MONTH/$DAY
mkdir $BACKUP/$YEAR/$MONTH/$DAY/$HOUR
### Get all databases name ###
DBS="$($MYSQL -u $MUSER -h $MHOST -p$MPASS -Bse 'show databases')"
for db in $DBS
do
### Create dir for each databases, backup tables in individual files ###
mkdir $BACKUP/live/$db
mkdir $BACKUP/tracked/$db
for i in `echo "show tables" | $MYSQL -u $MUSER -h $MHOST -p$MPASS $db|grep -v Tables_in_`;
do
FILE=$BACKUP/live/$db/$i.sql
echo $i; $MYSQLDUMP --add-drop-table --allow-keywords -q -c -u $MUSER -h $MHOST -p$MPASS $db $i > $FILE
cp $FILE $BACKUP/tracked/$db
$GZIP -9 -f $FILE
done
ARCHIVE=$BACKUP/$YEAR/$MONTH/$DAY/$HOUR/$db.tar.gz
ARCHIVED=$BACKUP/live/$db
$TAR -cvf $ARCHIVE $ARCHIVED
rm -rf $BACKUP/live/$db/*.gz
cd $BACKUP/tracked/$db
#git commit -a -m "commit changes of the $DAY at $HOUR hour"
done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment