Skip to content

Instantly share code, notes, and snippets.

@azizshamim
Created March 11, 2013 17:36
Show Gist options
  • Save azizshamim/5136046 to your computer and use it in GitHub Desktop.
Save azizshamim/5136046 to your computer and use it in GitHub Desktop.
backup mysql database to rackspace cloudfiles
#!/usr/bin/env bash
BACKUP_DIR=/opt/database/backups/
MYSQL_USER=root
DATE=`date +%s`
API_KEY='xxxxxx'
API_USER='xxxxxx'
BUCKET='mysql_backups'
HOSTNAME=`hostname`
## Backup Databases
nice -n 19 mysqldump --opt --all-databases | gzip > ${BACKUP_DIR}/mysql-dump-${DATE}.sql.gz
# Authenticate this session
RESPONSE=`/usr/bin/curl -vs -X GET 'https://identity.api.rackspacecloud.com/v1.0' -H "X-Auth-User: ${API_USER}" -H "X-Auth-Key: ${API_KEY}" 2>&1`
X_STORAGE_TOKEN=`echo "$RESPONSE" | grep 'X-Storage-Token' | sed -e 's/< X-Storage-Token: //' | tr -d '[:cntrl:]'`
echo "X-Storage-Token: ${X_STORAGE_TOKEN}"
X_STORAGE_URL=`echo "$RESPONSE" | grep 'X-Storage-Url' | sed -e 's/< X-Storage-Url: //' | tr -d '[:cntrl:]'`
echo "X-Storage-Url: ${X_STORAGE_URL}"
# Get MD5 sum
MD5=`/usr/bin/md5sum "${BACKUP_DIR}/mysql-dump-${DATE}.sql.gz" | /bin/gawk '{print $1}'`
echo "MD5sum of object: ${MD5}"
# Put the backup file in the right bucket
/usr/bin/curl -X PUT "${X_STORAGE_URL}/${BUCKET}/${HOSTNAME}-mysql-dump-${DATE}.sql.gz" -H "ETag: ${MD5}" -H "X-Storage-Token: ${X_STORAGE_TOKEN}" -T ${BACKUP_DIR}/mysql-dump-${DATE}.sql.gz -D -
## Delete DB Backups older than AGE ##
if [ -n "${BACKUP_DIR}" ]; then
find ${BACKUP_DIR} -mtime +5 | xargs rm -f
fi
exit 0
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment