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"