This is a plain and simple way to manage old mysql EBS snapshots. Maintain the latest five recent snapshots of a specific volume. You don’t want to mess with other existing volume snapshots, right? 🙂
1. Install Eric Hammond’s ec2-consistent snapshot
codename=$(lsb_release -cs) echo "deb http://ppa.launchpad.net/alestic/ppa/ubuntu $codename main" | sudo tee /etc/apt/sources.list.d/alestic-ppa.list sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys BE09C571 sudo apt-get update sudo apt-get install -y ec2-consistent-snapshot sudo PERL_MM_USE_DEFAULT=1 cpan Net::Amazon::EC2
2. Copy the lines below to a file $HOME/.my.cnf, (make sure to change file permission to read only using chmod 600)
[client] user=root password=MYPASSWORD
3. Just copy your AWS access and secret key to $HOME/.awssecret separated by a linefeed.(make sure to change file permission to read only using chmod 600)
aws_accesskey aws_secretkey
4. Download Tim Kay’s AWS tool and make the file executable.
sudo wget https://github.com/timkay/aws/raw/master/aws -O /usr/local/sbin/aws sudo chmod +x /usr/local/sbin/aws
Updated 12/13-2010: URL for Tim Kay’s aws program.
5. Setup a cronjob. Adjust cronjob to your backup schedules. If you want to maintain 10 snapshots, replace the 5 at sed command. The one-liner code was posted here.
# to snapshot your mysql 0 0 * * * /usr/bin/ec2-consistent-snapshot --mysql --xfs-filesystem /vol vol-XXXXXX >> /mnt/backup.log 2>&1 # Delete the last 5 old snapshots. 0 2 * * * /usr/local/sbin/aws dsnap | grep vol-XXXXXXX | sort -r -k 5 | sed 1,5d | awk '{print "Deleting snapshot: " $2 " Dated:" $8}; system("/usr/local/sbin/aws delsnap " $2 )' >> /mnt/backup.log 2>&1
Code Updated fixing redirection.
I’m using Eric Hammond’s Ubuntu Jaunty: ami-ed46a784 for this setup. Note that this ami-ed46a784 is using an older kernel with bug that pose possible access to root account in a multiuser environment.
New Releases of Ubuntu Images for Amazon EC2 (Kernels, Security, Tools, PPA, runurl)
New 2.6.21 kernel+modules: XFS breaks on Ubuntu Hardy, Intrepid