Skip to content

Instantly share code, notes, and snippets.

@leicht-io
Last active January 21, 2016 10:20
Show Gist options
  • Save leicht-io/bb6e4bf7fb5f94e12a84 to your computer and use it in GitHub Desktop.
Save leicht-io/bb6e4bf7fb5f94e12a84 to your computer and use it in GitHub Desktop.
#!/bin/bash
#This will lead to the script stopping when the first command fails.
set -eux
# Cassandra snapshot to S3
# author: clj@leicht-thruesen.com
# date: 19.01.2016
# updated: 21.01.2016
TODAYS_DATE=`date "+%d%m%Y"`
PATH_TO_CASSANDRA_DATA="/var/lib/cassandra/data"
PATH_TO_TEMPORAL_DIRECTORY="/tmp/cassandra_snapshots"
#remove old snapshot
clearSnapshot() {
nodetool clearsnapshot
if [ "$(ls -A ${PATH_TO_TEMPORAL_DIRECTORY}/)" ]; then
echo "Not Empty"
rm -r --preserve-root ${PATH_TO_TEMPORAL_DIRECTORY}/*
else
echo "Empty"
fi
}
#create backup
takeSnapshot() {
clearSnapshot
nodetool snapshot -t backup_$TODAYS_DATE keyspace
_SNAPSHOT_DIR_LIST=`find $PATH_TO_CASSANDRA_DATA -type d -name snapshots|awk '{gsub("'$PATH_TO_CASSANDRA_DATA'", "");print}' > snapshot_dir_list`
for i in `cat snapshot_dir_list`
do
if [ -d $PATH_TO_TEMPORAL_DIRECTORY/$i ]
then
echo "$i directory exist"
else
mkdir -p $PATH_TO_TEMPORAL_DIRECTORY/$i
fi
done
for SNP_VAR in `find $PATH_TO_CASSANDRA_DATA -name "backup_$TODAYS_DATE"`; do
## Triming _DATA_DIR
_SNP_PATH_TRIM=`echo $SNP_VAR|awk '{gsub("'$PATH_TO_CASSANDRA_DATA'", "");print}'`
mv -v "$SNP_VAR" "$PATH_TO_TEMPORAL_DIRECTORY/$_SNP_PATH_TRIM";
done
#Compress the backup directory
tar -cvzf ${PATH_TO_TEMPORAL_DIRECTORY}/backup_$TODAYS_DATE.tar.gz ${PATH_TO_TEMPORAL_DIRECTORY}/keyspace
copySnapshotToS3
backupSucceeded
clearSnapshot
}
copySnapshotToS3() {
s3cmd sync ${PATH_TO_TEMPORAL_DIRECTORY}/backup_$TODAYS_DATE.tar.gz s3://node_name
}
backupSucceeded() {
wget --spider --no-check-certificate url
}
takeSnapshot
@LarsVonQualen
Copy link

:octocat:

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment