It would be ideal if we can make this or similar script as part of cloudstack upgrade procedure i.e. create backups before start!

CloudStack DB Backup Script - Fetching mysql details from db.properties



#!/bin/bash
DBNAMES="cloud cloud_usage cloudbridge"
DATE=$(date +%m%d%y-%H%M%S)
DBPASS=$(java -classpath /usr/share/cloudstack-common/lib/jasypt-1.9.0.jar org.jasypt.intf.cli.JasyptPBEStringDecryptionCLI input="$(cat /etc/cloudstack/management/db.properties | grep db.cloud.password | awk -F'(' '{print $2}' | sed 's/)//g')" password="$(cat /etc/cloudstack/management/key)" | grep -A2 OUTPUT | tail -1)
#Assuming that cloud user can access all 3 dbs
DBHOST=$(cat /etc/cloudstack/management/db.properties | grep db.cloud.host | awk -F'=' '{print $2}' | tail -1 ) DBUSER=$(cat /etc/cloudstack/management/db.properties | grep db.cloud.username | awk -F'=' '{print $2}') DB=$(cat /etc/cloudstack/management/db.properties | grep db.cloud.name | awk -F'=' '{print $2}') DBPORT=$(cat /etc/cloudstack/management/db.properties | grep db.cloud.port | awk -F'=' '{print $2}')
#echo $DBPASS $DBHOST $DBUSER $DB $DBPORT
for DB in $DBNAMES
        do
                printf "Backing up DB $DB, please wait .... "
mysqldump -h $DBHOST -u $DBUSER -P $DBPORT -p$DBPASS $DB >$DB.$(hostname -s).$DATE.sql && echo "done" || echo "error!"
        done
echo -e "\nCompressing all files into single tar.gz - all-cloud-dbs.$(hostname -s).$DATE.sql.tgz file ..." tar -zcvf all-cloud-dbs.$(hostname -s).$DATE.sql.tgz *$(hostname -s).$DATE.sql && echo -e "done\n" || echo -e "error!\n"
printf "Cleaning up .... "
rm -rf *$(hostname -s).$DATE.sql && echo -e "done\n" || echo "error!\n"

Reply via email to