Skip to content

Commit 156a40e

Browse files
committed
Update config to backup pg-17
1 parent a91fd2e commit 156a40e

File tree

1 file changed

+16
-9
lines changed

1 file changed

+16
-9
lines changed

images/backup-restore/start.sh

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -36,19 +36,21 @@ cloudStorageOps() {
3636

3737
backupDB() {
3838
local LOCAL_BACKUP_FILE="${BACKUP_CLOUD_FILE}.dump"
39-
local CLOUD_BACKUP_FILE="${BACKUP_CLOUD_FOLDER}/${BACKUP_CLOUD_FILE}.dump"
39+
local LOCAL_BACKUP_FILE_GZIP="${BACKUP_CLOUD_FILE}.dump.gz"
40+
local CLOUD_BACKUP_FILE="${BACKUP_CLOUD_FOLDER}/${BACKUP_CLOUD_FILE}.dump.gz"
4041

4142
if [ "$SET_DATE_AT_NAME" == "true" ]; then
4243
local CURRENT_DATE
4344
CURRENT_DATE=$(date '+%Y%m%d-%H%M')
4445
LOCAL_BACKUP_FILE="${BACKUP_CLOUD_FILE}-${CURRENT_DATE}.dump"
45-
CLOUD_BACKUP_FILE="${BACKUP_CLOUD_FOLDER}/${BACKUP_CLOUD_FILE}-${CURRENT_DATE}.dump"
46+
LOCAL_BACKUP_FILE_GZIP="${BACKUP_CLOUD_FILE}-${CURRENT_DATE}.dump.gz"
47+
CLOUD_BACKUP_FILE="${BACKUP_CLOUD_FOLDER}/${BACKUP_CLOUD_FILE}-${CURRENT_DATE}.dump.gz"
4648
fi
4749

48-
# Backup database with pg_dump custom format (-Fc) + ZSTD compression
49-
echo "Backing up DB ${POSTGRES_DB} into ${LOCAL_BACKUP_FILE} with ZSTD compression"
50-
pg_dump -h "${POSTGRES_HOST}" -U "${POSTGRES_USER}" -Fc --compress=zstd "${POSTGRES_DB}" -f "${LOCAL_BACKUP_FILE}"
51-
cloudStorageOps "${LOCAL_BACKUP_FILE}" "${CLOUD_BACKUP_FILE}"
50+
# Backup database with pg_dump custom format (-Fc) + gzip (compatible with PostgreSQL 17)
51+
echo "Backing up DB ${POSTGRES_DB} into ${LOCAL_BACKUP_FILE_GZIP}"
52+
pg_dump -h "${POSTGRES_HOST}" -U "${POSTGRES_USER}" -Fc "${POSTGRES_DB}" | gzip -9 > "${LOCAL_BACKUP_FILE}.gz"
53+
cloudStorageOps "${LOCAL_BACKUP_FILE_GZIP}" "${CLOUD_BACKUP_FILE}"
5254
}
5355

5456
restoreDB() {
@@ -61,8 +63,13 @@ restoreDB() {
6163
pg_isready -h ${POSTGRES_HOST} -p 5432 >/dev/null 2>&2 || continue
6264
flag=false
6365
wget -O ${RESTORE_FILE} ${RESTORE_URL_FILE}
64-
echo "Restoring ${RESTORE_URL_FILE} in ${POSTGRES_DB}"
65-
pg_restore -h ${POSTGRES_HOST} -U ${POSTGRES_USER} -d ${POSTGRES_DB} --create --no-owner ${RESTORE_FILE} | tee ${LOG_RESULT_FILE}
66+
# Check if downloaded file is gzip compressed and decompress if needed
67+
if file ${RESTORE_FILE} | grep -q "gzip compressed"; then
68+
echo "Decompressing gzip backup file..."
69+
gunzip -c ${RESTORE_FILE} > ${RESTORE_FILE}.tmp && mv ${RESTORE_FILE}.tmp ${RESTORE_FILE}
70+
fi
71+
echo "Restoring ${RESTORE_URL_FILE} in ${POSTGRES_DB} (PostgreSQL 17 compatible)"
72+
pg_restore -h ${POSTGRES_HOST} -U "${POSTGRES_USER}" -d "${POSTGRES_DB}" --create --no-owner ${RESTORE_FILE} | tee ${LOG_RESULT_FILE}
6673
# aws s3 cp ${LOG_RESULT_FILE} s3://${AWS_S3_BUCKET}/${LOG_RESULT_FILE}
6774
echo "Import data to ${POSTGRES_DB} has finished ..."
6875
done
@@ -108,4 +115,4 @@ if [ "$CLEANUP_BACKUPS" == "true" ]; then
108115
delete_old_s3_files
109116
else
110117
echo "CLEANUP_BACKUPS is not set to true. Skipping deletion."
111-
fi
118+
fi

0 commit comments

Comments
 (0)