Skip to content
New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

Add ability to specify custom schema for verification in postgres #139

Merged
merged 7 commits into from
Jan 17, 2025
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions config/backup.conf
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@
# Full Example:
# -----------------------------------------------------------
# postgres=postgresql:5432/TheOrgBook_Database
# postgres=postgresql:5432/mydb?currentSchema=my_schema
# mongo=mender-mongodb:27017/useradm
# postgres=wallet-db/tob_issuer
# mssql=pims-db-dev:1433/pims
Expand Down
23 changes: 21 additions & 2 deletions docker/backup.postgres.plugin
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,24 @@
# -----------------------------------------------------------------------------------------------------------------
export serverDataDirectory="/var/lib/pgsql/data"

# Override general function to support defining a schema
function getDatabaseName(){
(
_databaseSpec=${1}
_databaseName=$(echo ${_databaseSpec} | sed -n 's~^.*/\([^?]*\).*~\1~p')
echo "${_databaseName}"
)
}

function getDatabaseSchema(){
(
_databaseSpec=${1}
_paramName=$(echo ${_databaseSpec} | sed -n 's~^.*currentSchema=\(.*$\)~\1~p')
_databaseSchema="${!_paramName:-public}"
echo ${_databaseSchema}
)
}

function onBackupDatabase(){
(
local OPTIND
Expand All @@ -21,14 +39,15 @@ function onBackupDatabase(){

_hostname=$(getHostname ${_databaseSpec})
_database=$(getDatabaseName ${_databaseSpec})
_schema=$(getDatabaseSchema ${_databaseSpec})
_port=$(getPort ${_databaseSpec})
_portArg=${_port:+"-p ${_port}"}
_username=$(getUsername ${_databaseSpec})
_password=$(getPassword ${_databaseSpec})
echoGreen "Backing up '${_hostname}${_port:+:${_port}}${_database:+/${_database}}' to '${_backupFile}' ..."
echoGreen "Backing up schema '${_schema}' in '${_hostname}${_port:+:${_port}}${_database:+/${_database}}' to '${_backupFile}' ..."

export PGPASSWORD=${_password}
pg_dump -Fp -h "${_hostname}" ${_portArg} -U "${_username}" "${_database}" > "${BACKUP_DIR}backup.sql"
pg_dump -Fp -h "${_hostname}" ${_portArg} -U "${_username}"-n "${_schema}" "${_database}" > "${BACKUP_DIR}backup.sql"
pg_dumpall -h "${_hostname}" ${_portArg} -U "${_username}" --roles-only --no-role-passwords > "${BACKUP_DIR}roles.sql"
cat "${BACKUP_DIR}roles.sql" "${BACKUP_DIR}backup.sql" | gzip > ${_backupFile}
rm "${BACKUP_DIR}roles.sql" && rm "${BACKUP_DIR}backup.sql"
Expand Down