@@ -36,19 +36,21 @@ cloudStorageOps() {
3636
3737backupDB () {
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
5456restoreDB () {
@@ -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
109116else
110117 echo " CLEANUP_BACKUPS is not set to true. Skipping deletion."
111- fi
118+ fi
0 commit comments