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
|
DEFAULT_DB_TYPE=mysql
|
||||||
|
|
||||||
else
|
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
|
||||||
fi
|
fi
|
||||||
|
|
||||||
[[ -n "${DB_NAME}" ]] && DEFAULT_DB_NAME="${DB_NAME}"
|
[[ -n "${DB_NAME}" ]] && DEFAULT_DB_NAME="${DB_NAME}"
|
||||||
[[ -n "${DB_USER}" ]] && DEFAULT_DB_NAME="${DB_USER}"
|
[[ -n "${DB_USER}" ]] && DEFAULT_DB_USER="${DB_USER}"
|
||||||
[[ -n "${DB_PASS}" ]] && DEFAULT_DB_PASS="${DB_PASS}"
|
|
||||||
|
#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}"
|
[[ -n "${KEYCLOAK_USER}" ]] && DEFAULT_KEYCLOAK_USER="${KEYCLOAK_USER}"
|
||||||
if [[ -n "${KEYCLOAK_GROUP}" ]]; then
|
if [[ -n "${KEYCLOAK_GROUP}" ]]; then
|
||||||
@@ -402,6 +415,103 @@ fi
|
|||||||
HOSTNAME="${FQHN_HOSTNAME%%.*}"
|
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 ""
|
echo ""
|
||||||
echo -e "\t\033[32mStart upgrade script for Keycloak Service with the following parameters\033[m"
|
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 user...................: ${KEYCLOAK_USER}"
|
||||||
echo -e "\tKeycloak group..................: ${KEYCLOAK_GROUP}"
|
echo -e "\tKeycloak group..................: ${KEYCLOAK_GROUP}"
|
||||||
echo ""
|
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 base install dir.......: ${KEYCLOAK_BASE_INSTALL_PATH}"
|
||||||
echo -e "\tKeycloak install dir............: ${KEYCLOAK_INSTALL_DIR}"
|
echo -e "\tKeycloak install dir............: ${KEYCLOAK_INSTALL_DIR}"
|
||||||
echo ""
|
echo ""
|
||||||
@@ -557,6 +674,69 @@ fi
|
|||||||
blank_line
|
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
|
||||||
echo -e "\033[37m\033[1mInstalling Keycloak Service..\033[m"
|
echo -e "\033[37m\033[1mInstalling Keycloak Service..\033[m"
|
||||||
echo
|
echo
|
||||||
|
|||||||
Reference in New Issue
Block a user