Skip to content

Instantly share code, notes, and snippets.

@cengizhancaliskan
Created March 13, 2018 12:02
Show Gist options
  • Save cengizhancaliskan/9362ba3dc4941d407c4fedcd57f69d6d to your computer and use it in GitHub Desktop.
Save cengizhancaliskan/9362ba3dc4941d407c4fedcd57f69d6d to your computer and use it in GitHub Desktop.
Mysqldump bash
#!/bin/bash
echo "Starting the backup script..."
ROOTDIR="/backup/mysql/"
YEAR=`date +%Y`
MONTH=`date +%m`
DAY=`date +%d`
HOUR=`date +%H`
SERVER="444.333.222.111"
BLACKLIST="information_schema performance_schema"
ADDITIONAL_MYSQLDUMP_PARAMS="--skip-lock-tables --skip-add-locks --quick --single-transaction"
MYSQL_USER="backupuser"
MYSQL_PASSWORD="backuppassword"
# Read MySQL password from stdin if empty
if [ -z "${MYSQL_PASSWORD}" ]; then
echo -n "Enter MySQL ${MYSQL_USER} password: "
read -s MYSQL_PASSWORD
echo
fi
# Check MySQL credentials
echo exit | mysql --user=${MYSQL_USER} --password=${MYSQL_PASSWORD} --host=${SERVER} -B 2>/dev/null
if [ "$?" -gt 0 ]; then
echo "MySQL ${MYSQL_USER} - wrong credentials"
exit 1
else
echo "MySQL ${MYSQL_USER} - was able to connect."
fi
#creating backup path
if [ ! -d "$ROOTDIR/$YEAR/$MONTH/$DAY/$HOUR" ]; then
mkdir -p "$ROOTDIR/$YEAR/$MONTH/$DAY/$HOUR"
chmod -R 700 $ROOTDIR
fi
echo "running mysqldump"
dblist=`mysql -u ${MYSQL_USER} -p${MYSQL_PASSWORD} -h $SERVER -e "show databases" | sed -n '2,$ p'`
for db in $dblist; do
echo "Backuping $db"
isBl=`echo $BLACKLIST |grep $db`
if [ $? == 1 ]; then
mysqldump ${ADDITIONAL_MYSQLDUMP_PARAMS} -u ${MYSQL_USER} -p${MYSQL_PASSWORD} -h $SERVER $db | gzip --best > "$ROOTDIR/$YEAR/$MONTH/$DAY/$HOUR/`echo $db | sed 's/\//_/g'`.sql.gz"
echo "Backup of $db ends with $? exit code"
else
echo "Database $db is blacklisted, skipped"
fi
done
echo
echo "dump completed"
@cengizhancaliskan
Copy link
Author

Permission problem:

chmod 700 mysqldump.sh

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment