How to backup MYSQL DB and Upload to AMAZON S3

sohaib

Verified User
Joined
Apr 27, 2005
Messages
189
Location
Shared & Dedicated Hosting
Hello Again !

This code will help you make mysql db backup and then upload it to AMAZON S3 Bucket, Inside your bucket create a folder called database

Follow this thread if you dont HAVE S3CMD

http://forum.directadmin.com/showthread.php?t=45606


Code:
#!/bin/bash
S3_BUCKET=YOUR BUCKET NAME HERE
DATE=`date +%d%m%Y_%H%M`
BACKUP_LOC=/home/admin/user_backups/$DATE

mysql_backup(){
mkdir $BACKUP_LOC
mysqldump -uUSERNAME -pPASSWORD DBNAMEHERE > $BACKUP_LOC/databasename_
$DATE.sql

   s3cmd ls s3://$S3_BUCKET/database/$DATE > /tmp/log.txt
   grep -lr "$DATE" /tmp/log.txt
  if [ $? -ne 0 ]
    then
    mkdir /tmp/$DATE
    s3cmd put -r /tmp/$DATE s3://$S3_BUCKET/datbase/

    s3cmd sync -r $BACKUP_LOC s3://$S3_BUCKET/database/$DATE/

  else
    s3cmd sync -r $BACKUP_LOC s3://$S3_BUCKET/database/$DATE/

  fi

}
mysql_backup
exit 0
 
mysqldump -uUSERNAME -pPASSWORD DBNAMEHERE > $BACKUP_LOC/databasename_ <--- does databasename_ need to be edited?
 
You better change
Code:
s3cmd sync -r $BACKUP_LOC s3://$S3_BUCKET/database/$DATE/
else
s3cmd sync -r $BACKUP_LOC s3://$S3_BUCKET/database/$DATE/
to
Code:
s3cmd sync -r $BACKUP_LOC s3://$S3_BUCKET/database/
else
s3cmd sync -r $BACKUP_LOC s3://$S3_BUCKET/database/
otherwise it will place the backup inside a $DATE folder inside a second $DATE folder and will create a structure like this one:
Code:
S3_BUCKETNAME/database/01012013_1030/01012013_1030/database_01012013_1030.sql

PS: @crspyjohn: databasename_ is the prefix for the database backup file. You may change it to whatever you wish.
 
Last edited:
Back
Top