diff --git a/Dockerfile b/Dockerfile index 19d24d7..02d5183 100644 --- a/Dockerfile +++ b/Dockerfile @@ -38,7 +38,7 @@ RUN apt-get --no-install-recommends install -y comerr-dev \ manpages-dev \ libkrb5-dev \ libsasl2-dev libldap2-dev libssl-dev \ - postgresql-13 postgresql-14 postgresql-15 postgresql-16 postgresql-17 \ + postgresql-13 postgresql-14 postgresql-15 postgresql-16 postgresql-17 postgresql-18 \ jq \ openssl curl \ vim \ diff --git a/docker/granular/configs.py b/docker/granular/configs.py index 61a23e3..c0736f4 100644 --- a/docker/granular/configs.py +++ b/docker/granular/configs.py @@ -57,8 +57,10 @@ def backups_storage(version=None): storage_path = '/backup-storage/pg15/granular' elif [16, 0] <= version < [17, 0]: storage_path = '/backup-storage/pg16/granular' - elif version >= [17, 0]: + elif [17, 0] <= version < [18, 0]: storage_path = '/backup-storage/pg17/granular' + elif version >= [18, 0]: + storage_path = '/backup-storage/pg18/granular' return storage_path @@ -176,6 +178,8 @@ def get_pgsql_bin_path(version): return "/usr/lib/postgresql/16/bin" elif major_version == 17: return "/usr/lib/postgresql/17/bin" + elif major_version == 18: + return "/usr/lib/postgresql/18/bin" def is_external_pg(): diff --git a/docker/postgres/aws-s3-backup.sh b/docker/postgres/aws-s3-backup.sh index 39d47e4..ac69602 100755 --- a/docker/postgres/aws-s3-backup.sh +++ b/docker/postgres/aws-s3-backup.sh @@ -148,7 +148,11 @@ function main() { log "version of pgsql server is: ${version}" - if python -c "import sys; sys.exit(0 if float("${version}") >= 17.0 else 1)"; then + if python -c "import sys; sys.exit(0 if float("${version}") >= 18.0 else 1)"; then + log "Using pgsql 18 bins for pg_basebackup" + PG_BASEBACKUP="/usr/lib/postgresql/18/bin/pg_basebackup" + BACKUP_NAME="pg_backup_$(basename ${BACKUP_ID}).tar.gz" + elif python -c "import sys; sys.exit(0 if 17.0 <= float("${version}") < 18.0 else 1)"; then log "Using pgsql 17 bins for pg_basebackup" PG_BASEBACKUP="/usr/lib/postgresql/17/bin/pg_basebackup" BACKUP_NAME="pg_backup_$(basename ${BACKUP_ID}).tar.gz" diff --git a/docker/postgres/postgres_backup.sh b/docker/postgres/postgres_backup.sh index 2dfb302..0717f59 100755 --- a/docker/postgres/postgres_backup.sh +++ b/docker/postgres/postgres_backup.sh @@ -135,7 +135,11 @@ function main() { version="$(PGPASSWORD=$POSTGRES_PASSWORD psql -h "${POSTGRES_HOST}" -p "${POSTGRES_PORT}" -U "${POSTGRES_USER}" -d postgres -c "SHOW SERVER_VERSION;" -tA | egrep -o '[0-9]{1,}\.[0-9]{1,}' | awk 'END{print $1}')" REPLICATION_USER="replicator" log "version of pgsql server is: ${version}" - if python -c "import sys; sys.exit(0 if float("${version}") >= 17.0 else 1)"; then + if python -c "import sys; sys.exit(0 if float("${version}") >= 18.0 else 1)"; then + log "Using pgsql 18 bins for pg_basebackup" + PG_BASEBACKUP="/usr/lib/postgresql/18/bin/pg_basebackup" + BACKUP_NAME="pg_backup_$(basename ${BACKUP_DESTINATION_DIRECTORY}).tar.gz" + elif python -c "import sys; sys.exit(0 if 17.0 <= float("${version}") < 18.0 else 1)"; then log "Using pgsql 17 bins for pg_basebackup" PG_BASEBACKUP="/usr/lib/postgresql/17/bin/pg_basebackup" BACKUP_NAME="pg_backup_$(basename ${BACKUP_DESTINATION_DIRECTORY}).tar.gz" diff --git a/docker/postgres/utils.py b/docker/postgres/utils.py index e9acc48..6674cf0 100644 --- a/docker/postgres/utils.py +++ b/docker/postgres/utils.py @@ -60,8 +60,10 @@ def get_version_of_pgsql_server(): return "pg15" elif [16, 0] <= version_as_list < [17, 0]: return "pg16" - elif version_as_list >= [17, 0]: + elif [17, 0] <= version_as_list < [18, 0]: return "pg17" + elif version_as_list >= [18, 0]: + return "pg18" return ""