uprgade-keycloak.sh: backup also concerning postgresql/mysql database.
This commit is contained in:
@@ -294,13 +294,26 @@ if [[ -n "$DB_TYPE" ]] ; then
|
||||
DEFAULT_DB_TYPE=mysql
|
||||
|
||||
else
|
||||
fatal "Wrong or empty Database Type (DB_TYPE) - must be 'mysql' or 'pgsql'."
|
||||
DEFAULT_DB_TYPE=pgsql
|
||||
#fatal "Wrong or empty Database Type (DB_TYPE) - must be 'mysql' or 'pgsql'."
|
||||
fi
|
||||
fi
|
||||
|
||||
[[ -n "${DB_NAME}" ]] && DEFAULT_DB_NAME="${DB_NAME}"
|
||||
[[ -n "${DB_USER}" ]] && DEFAULT_DB_NAME="${DB_USER}"
|
||||
[[ -n "${DB_PASS}" ]] && DEFAULT_DB_PASS="${DB_PASS}"
|
||||
[[ -n "${DB_USER}" ]] && DEFAULT_DB_USER="${DB_USER}"
|
||||
|
||||
#if [[ -n "${DB_PASS}" ]] ; then
|
||||
# DEFAULT_DB_PASS="${DB_PASS}"
|
||||
#else
|
||||
# fatal "No Password given for ${DB_TYPE} database ${DEFAULT_DB_NAME}"
|
||||
#fi
|
||||
|
||||
if [[ -n "${DB_PASS}" ]] ; then
|
||||
DEFAULT_DB_PASS="${DB_PASS}"
|
||||
else
|
||||
DEFAULT_DB_PASS=""
|
||||
fi
|
||||
|
||||
|
||||
[[ -n "${KEYCLOAK_USER}" ]] && DEFAULT_KEYCLOAK_USER="${KEYCLOAK_USER}"
|
||||
if [[ -n "${KEYCLOAK_GROUP}" ]]; then
|
||||
@@ -402,6 +415,103 @@ fi
|
||||
HOSTNAME="${FQHN_HOSTNAME%%.*}"
|
||||
|
||||
|
||||
DB_TYPE=
|
||||
echo ""
|
||||
echo -e "\033[32m--\033[m"
|
||||
echo ""
|
||||
echo "Specify the database type for the Keycloak database."
|
||||
echo ""
|
||||
echo " Accepted values: pgsql, postgresql, postgres (for PostgreSQL)"
|
||||
echo " mysql (for MySQL)"
|
||||
echo ""
|
||||
while [[ "X${DB_TYPE}" = "X" ]]; do
|
||||
echononl "Database type [${DEFAULT_DB_TYPE}]: "
|
||||
read DB_TYPE
|
||||
if [[ "X${DB_TYPE}" = "X" ]]; then
|
||||
DB_TYPE="${DEFAULT_DB_TYPE}"
|
||||
fi
|
||||
if [[ "${DB_TYPE,,}" = "postgres" ]] || [[ "${DB_TYPE,,}" = "postgresql" ]] || [[ "${DB_TYPE,,}" = "pgsql" ]] || [[ "${DB_TYPE,,}" = "psql" ]] ; then
|
||||
DB_TYPE=pgsql
|
||||
elif [[ "${DB_TYPE,,}" = "mysql" ]] ; then
|
||||
DB_TYPE=mysql
|
||||
else
|
||||
echo -e "\n\t\033[33m\033[1mInvalid database type '${DB_TYPE}'! Use 'pgsql' or 'mysql'.\033[m\n"
|
||||
DB_TYPE=""
|
||||
fi
|
||||
done
|
||||
|
||||
DB_NAME=
|
||||
echo ""
|
||||
echo -e "\033[32m--\033[m"
|
||||
echo ""
|
||||
echo "Specify the database name for the Keycloak database."
|
||||
echo ""
|
||||
while [[ "X${DB_NAME}" = "X" ]]; do
|
||||
echononl "Database name [${DEFAULT_DB_NAME}]: "
|
||||
read DB_NAME
|
||||
if [[ "X${DB_NAME}" = "X" ]]; then
|
||||
DB_NAME="${DEFAULT_DB_NAME}"
|
||||
fi
|
||||
done
|
||||
|
||||
|
||||
DB_NAME=
|
||||
echo ""
|
||||
echo -e "\033[32m--\033[m"
|
||||
echo ""
|
||||
echo "Specify the database name for the Keycloak database."
|
||||
echo ""
|
||||
while [[ "X${DB_NAME}" = "X" ]]; do
|
||||
echononl "Database name [${DEFAULT_DB_NAME}]: "
|
||||
read DB_NAME
|
||||
if [[ "X${DB_NAME}" = "X" ]]; then
|
||||
DB_NAME="${DEFAULT_DB_NAME}"
|
||||
fi
|
||||
done
|
||||
|
||||
DB_USER=
|
||||
echo ""
|
||||
echo -e "\033[32m--\033[m"
|
||||
echo ""
|
||||
echo "Specify the database user for the Keycloak database."
|
||||
echo ""
|
||||
while [[ "X${DB_USER}" = "X" ]]; do
|
||||
echononl "Database user [${DEFAULT_DB_USER}]: "
|
||||
read DB_USER
|
||||
if [[ "X${DB_USER}" = "X" ]]; then
|
||||
DB_USER="${DEFAULT_DB_USER}"
|
||||
fi
|
||||
done
|
||||
|
||||
DB_PASS=
|
||||
echo ""
|
||||
echo -e "\033[32m--\033[m"
|
||||
echo ""
|
||||
echo "Specify the database password for the Keycloak database."
|
||||
echo ""
|
||||
while [[ "X${DB_PASS}" = "X" ]]; do
|
||||
echononl "Database password"
|
||||
if [[ -n "${DEFAULT_DB_PASS}" ]]; then
|
||||
echo -n " [current value from config]: ****************"
|
||||
else
|
||||
echo -n ": "
|
||||
fi
|
||||
read -s DB_PASS
|
||||
echo ""
|
||||
if [[ "X${DB_PASS}" = "X" ]]; then
|
||||
if [[ -n "${DEFAULT_DB_PASS}" ]]; then
|
||||
DB_PASS="${DEFAULT_DB_PASS}"
|
||||
else
|
||||
echo -e "\n\t\033[33m\033[1mA database password is required!\033[m\n"
|
||||
fi
|
||||
fi
|
||||
done
|
||||
|
||||
#DB_BACKUP_DIR="${working_dir}/backups"
|
||||
DB_BACKUP_DIR="$(dirname "${KEYCLOAK_INSTALL_DIR}")"
|
||||
DB_DUMP_FILE="${DB_BACKUP_DIR}/keycloak_db_${backup_date}.sql.gz"
|
||||
|
||||
|
||||
echo ""
|
||||
echo ""
|
||||
echo -e "\t\033[32mStart upgrade script for Keycloak Service with the following parameters\033[m"
|
||||
@@ -420,6 +530,13 @@ echo ""
|
||||
echo -e "\tKeycloak user...................: ${KEYCLOAK_USER}"
|
||||
echo -e "\tKeycloak group..................: ${KEYCLOAK_GROUP}"
|
||||
echo ""
|
||||
echo -e "\tKeycloak database type..........: ${DB_TYPE}"
|
||||
echo -e "\tKeycloak database name..........: ${DB_NAME}"
|
||||
echo -e "\tKeycloak database user..........: ${DB_USER}"
|
||||
echo -e "\tKeycloak database password......: ${DB_PASS}"
|
||||
echo ""
|
||||
echo -e "\tdatabase dump file..............: ${DB_DUMP_FILE}"
|
||||
echo ""
|
||||
echo -e "\tKeycloak base install dir.......: ${KEYCLOAK_BASE_INSTALL_PATH}"
|
||||
echo -e "\tKeycloak install dir............: ${KEYCLOAK_INSTALL_DIR}"
|
||||
echo ""
|
||||
@@ -557,6 +674,69 @@ fi
|
||||
blank_line
|
||||
|
||||
|
||||
echo
|
||||
echo -e "\033[37m\033[1mBackup PostgreSQL database before upgrade..\033[m"
|
||||
echo
|
||||
|
||||
echononl "Create backup directory '${DB_BACKUP_DIR}' .."
|
||||
mkdir -p "${DB_BACKUP_DIR}" > "$log_file" 2>&1
|
||||
if [[ $? -ne 0 ]]; then
|
||||
echo_failed
|
||||
error "$(cat "$log_file")"
|
||||
fatal "Cannot create backup directory '${DB_BACKUP_DIR}'"
|
||||
else
|
||||
echo_ok
|
||||
fi
|
||||
|
||||
|
||||
if [[ "${DB_TYPE}" = "pgsql" ]] ; then
|
||||
|
||||
echononl "Dump PostgreSQL database '${DB_NAME}' to '$(basename "${DB_DUMP_FILE}")' .."
|
||||
PGPASSWORD="${DB_PASS}" pg_dump \
|
||||
-h localhost \
|
||||
-p 5432 \
|
||||
-U "${DB_USER}" \
|
||||
-d "${DB_NAME}" \
|
||||
--format=plain \
|
||||
--no-password \
|
||||
2> "$log_file" \
|
||||
| gzip > "${DB_DUMP_FILE}"
|
||||
if [[ ${PIPESTATUS[0]} -ne 0 ]]; then
|
||||
echo_failed
|
||||
error "$(cat "$log_file")"
|
||||
fatal "PostgreSQL backup failed! Aborting upgrade."
|
||||
else
|
||||
echo_ok
|
||||
info "Database backup: ${DB_DUMP_FILE} ($(du -sh "${DB_DUMP_FILE}" | cut -f1))"
|
||||
fi
|
||||
|
||||
elif [[ "${DB_TYPE}" = "mysql" ]] ; then
|
||||
|
||||
echononl "Dump MySQL database '${DB_NAME}' to '$(basename "${DB_DUMP_FILE}")' .."
|
||||
mysqldump \
|
||||
--host=localhost \
|
||||
--user="${DB_USER}" \
|
||||
--password="${DB_PASS}" \
|
||||
--single-transaction \
|
||||
--routines \
|
||||
--triggers \
|
||||
"${DB_NAME}" \
|
||||
2> "$log_file" \
|
||||
| gzip > "${DB_DUMP_FILE}"
|
||||
if [[ ${PIPESTATUS[0]} -ne 0 ]]; then
|
||||
echo_failed
|
||||
error "$(cat "$log_file")"
|
||||
fatal "MySQL backup failed! Aborting upgrade."
|
||||
else
|
||||
echo_ok
|
||||
info "Database backup: ${DB_DUMP_FILE} ($(du -sh "${DB_DUMP_FILE}" | cut -f1))"
|
||||
fi
|
||||
|
||||
fi
|
||||
|
||||
blank_line
|
||||
|
||||
|
||||
echo
|
||||
echo -e "\033[37m\033[1mInstalling Keycloak Service..\033[m"
|
||||
echo
|
||||
|
||||
Reference in New Issue
Block a user