Skip to content

Instantly share code, notes, and snippets.

@denismakogon
Forked from anonymous/gist:7081605
Created October 21, 2013 10:25
Show Gist options
  • Save denismakogon/7081682 to your computer and use it in GitHub Desktop.
Save denismakogon/7081682 to your computer and use it in GitHub Desktop.
#!/bin/bash
cd /home/cassandra
local_addr=`ifconfig | grep "inet addr:" | awk '(NR==1)' | awk -F":" '{print $2}' | awk '{print $1}'`
backup_dir="/home/cassandra/cassandra_backup"
week_ago=`date +%F -d'now -1 week'`
cassandra_dir="/opt/cassandra/bin/"
stor_dir=`cat /opt/cassandra/conf/cassandra.yaml | grep cassandra/data | awk '{print $2}'`
mount_dir="/home/cassandra/s3storage"
bucket_name="clickatell-prod-backups"
ls -la $backup_dir >> /dev/null 2>>/dev/null
if [ $? != "0" ]
then
mkdir $backup_dir
fi
ls -la $mount_dir >> /dev/null 2>>/dev/null
if [ $? != "0" ]
then
mkdir $mount_dir
fi
echo $local_addr
#create snapshot
for keyspace in `echo "show keyspaces;" | ${cassandra_dir}cassandra-cli -h $local_addr | grep Keyspace: | grep -v system | awk '{print $2}' | awk -F":" '{print $1}'`
do
${cassandra_dir}nodetool -h $local_addr snapshot $keyspace -t ${keyspace}`date +%F`
done
#tar backup
tar cpjvf $backup_dir/cass_backup`date +%F`"ip_$local_addr".tar.bz2 $(find $stor_dir -type d -name *`date +%F`)
#clear snapshot
for keyspace in `echo "show keyspaces;" | ${cassandra_dir}cassandra-cli -h $local_addr | grep Keyspace: | grep -v system | awk '{print $2}' | awk -F":" '{print $1}'`
do
${cassandra_dir}nodetool -h $local_addr clearsnapshot $keyspace
done
#put backup in s3
cd $backup_dir
#mount s3
/usr/bin/s3fs $bucket_name $mount_dir
#copy backup
cp cass_backup`date +%F`"ip_$local_addr".tar.bz2 $mount_dir
#delete backup
find $mount_dir -type f -name cass_backup"$week_ago""ip_$local_addr".tar.bz2 -delete
find $backup_dir -type f -name cass_backup"$week_ago""ip_$local_addr".tar.bz2 -delete
#umount bucket
fusermount -u $mount_dir
echo "done"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment