Skip to content

Instantly share code, notes, and snippets.

@Scarsz
Created April 4, 2018 18:19
Show Gist options
  • Save Scarsz/c3636dcd6e47006590703b8f0dcb982f to your computer and use it in GitHub Desktop.
Save Scarsz/c3636dcd6e47006590703b8f0dcb982f to your computer and use it in GitHub Desktop.
Script to backup all MySQL databases to a compressed .tar.gz and upload to AWS S3
#!/bin/bash
bucket="milkyway-backups"
server="MILKYWAY"
subject="MYSQL"
databases=$(mysql -e "show databases;" | grep -Ev "(Database|information_schema|performance_schema|phpmyadmin)")
masterfile="$server-$subject-$(date +"%Y-%m-%d").tar.gz"
tmpdir="/tmp/backup-$(echo $RANDOM % 999999 + 1 | bc)"
masterfile="/tmp/$masterfile"
mkdir "$tmpdir"
for db in $databases; do
echo "Dumping $db"
dbfile="$tmpdir/mysql-$db.gz"
mysqldump --single-transaction --quick --compress --extended-insert --databases $db | gzip -9 > $dbfile
done
echo "Compressing to master file $masterfile"
tar -cI pigz -f "$masterfile" -C "$tmpdir" .
rm -r "$tmpdir"
echo "Uploading to S3"
aws s3 cp "$masterfile" "s3://$bucket/$server/$subject/" --storage-class STANDARD_IA
echo "Deleting master file"
rm "$masterfile"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment