You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
75 lines
3.0 KiB
75 lines
3.0 KiB
#!/bin/bash
|
|
|
|
### DO NOT EDIT THIS FILE
|
|
|
|
db_included=true
|
|
|
|
function dbValidate {
|
|
if ([ "$db_local_stage_user" == "" ] && [ "$db_local_live_user" == "" ])
|
|
then
|
|
echo >&2
|
|
echoError "Please configure $project_manager_dir/data/$customer/$project/etc/plugins/db/config" >&2
|
|
echo >&2
|
|
exit
|
|
fi
|
|
|
|
if [ "$ssh_included" == "" ]
|
|
then
|
|
echo >&2
|
|
echoError "Plugin \"ssh\" has to be included" >&2
|
|
echo >&2
|
|
exit
|
|
fi
|
|
}
|
|
|
|
function dbGetConfig {
|
|
local env=$(getArgument "$1" "Usage dbGetConfig [live|stage|local_live|local_stage] var" "live stage local_live local_stage")
|
|
local suffix=$(getArgument "$2" "Usage dbGetConfig [live|stage|local_live|local_stage] var" true)
|
|
|
|
echo "$(eval "echo \"\$db_${env}_$suffix\"")"
|
|
}
|
|
|
|
function dbDump {
|
|
local env=$(getArgument "$1" "Usage: dbDump [env] [filename] [mysqldump-parameters] [database] [tables]" true)
|
|
local name=$(getArgument "$2" "Usage: dbDump [env] [filename] [mysqldump-parameters] [database] [tables]" true)
|
|
local parameters=$(getArgument "$3" "Usage: dbDump [env] [filename] [mysqldump-parameters] [database] [tables]")
|
|
local database=$(getArgument "$4" "Usage: dbDump [env] [filename] [mysqldump-parameters] [database] [tables]" true)
|
|
local tables=$(getArgument "$5" "Usage: dbDump [env] [filename] [mysqldump-parameters] [database] [tables]")
|
|
|
|
local currentDate=$(date '+%Y-%m-%d_%H:%M:%S')
|
|
local is_remote="$(if [ "$env" == "live" ] || [ "$env" == "stage" ]; then echo 1; else echo 0; fi)"
|
|
|
|
if [ "$is_remote" == 1 ]
|
|
then
|
|
local ssh_user="$(sshGetConfig "$env" "user")"
|
|
local ssh_domain="$(sshGetConfig "$env" "domain")"
|
|
sshAddKey "$env"
|
|
|
|
scp "$app_dir/etc/$env.my.cnf" "$ssh_user"@"$ssh_domain":"~/$env.my.cnf"
|
|
ssh "$ssh_user"@"$ssh_domain" "mysqldump --defaults-extra-file=~/$env.my.cnf --no-tablespaces ${parameters[*]} $database $tables | \
|
|
LANG=C LC_CTYPE=C LC_ALL=C sed -e 's/DEFINER[ ]*=[ ]*[^*]*\*/\*/' | \
|
|
sed -e 's/,NO_AUTO_CREATE_USER//' | gzip -9 > ~/${env}_$name.sql.gz"
|
|
scp "$ssh_user"@"$ssh_domain":"~/${env}_$name.sql.gz" "$app_dir/var/tmp/$currentDate-${env}_$name.sql.gz"
|
|
ssh "$ssh_user"@"$ssh_domain" "unlink ~/${env}_$name.sql.gz"
|
|
|
|
gunzip "$app_dir/var/tmp/$currentDate-${env}_$name.sql.gz"
|
|
else
|
|
mysqldump --defaults-extra-file="$app_dir/etc/${env}.my.cnf" --no-tablespaces ${parameters[*]} $database $tables | \
|
|
LANG=C LC_CTYPE=C LC_ALL=C sed -e 's/DEFINER[ ]*=[ ]*[^*]*\*/\*/' | sed -e 's/,NO_AUTO_CREATE_USER//' \
|
|
> "$app_dir/var/tmp/${currentDate}-${env}_$name.sql"
|
|
fi
|
|
|
|
if [[ "$(tail -n 2 "$app_dir/var/tmp/$currentDate-${env}_$name.sql" )" != *"-- Dump completed"* ]]
|
|
then
|
|
rm "$app_dir/var/tmp/$currentDate-${env}_$name.sql"
|
|
echo
|
|
echoError "File was corrupted, deleting"
|
|
echo
|
|
exit
|
|
fi
|
|
|
|
gzip -c "$app_dir/var/tmp/${currentDate}-${env}_$name.sql.gz" > "$app_dir/backup/database/${currentDate}-${env}_$name.sql.gz"
|
|
rm "$app_dir/var/tmp/$currentDate-${env}_$name.sql"
|
|
|
|
echo "$app_dir/backup/database/$currentDate-${env}_$name.sql.gz"
|
|
}
|