From 42a0e1e67beeb052c7739dbac5ead304429912a4 Mon Sep 17 00:00:00 2001 From: svetychkina Date: Thu, 23 Jul 2026 14:46:40 +0500 Subject: [PATCH 1/2] fix: [PSUPCLCAP-5020] add compressionn level for granular backup --- operator/api/apps/v1/postgresservice_types.go | 1 + operator/pkg/deployment/backup.go | 4 ++++ services/backup-daemon/docker/granular/configs.py | 5 +++++ services/backup-daemon/docker/granular/granular.py | 3 +++ 4 files changed, 13 insertions(+) diff --git a/operator/api/apps/v1/postgresservice_types.go b/operator/api/apps/v1/postgresservice_types.go index ff0a6ea3..7a67541c 100644 --- a/operator/api/apps/v1/postgresservice_types.go +++ b/operator/api/apps/v1/postgresservice_types.go @@ -286,6 +286,7 @@ type BackupDaemon struct { JobFlag string `json:"jobFlag,omitempty"` ConnectTimeout string `json:"connectTimeout,omitempty"` GranularBackupSchedule string `json:"granularBackupSchedule,omitempty"` + GranularCompressionLevel int `json:"granularCompressionLevel,omitempty"` DatabasesToSchedule string `json:"databasesToSchedule,omitempty"` WalArchiving bool `json:"walArchiving,omitempty"` AllowPrefix bool `json:"allowPrefix,omitempty"` diff --git a/operator/pkg/deployment/backup.go b/operator/pkg/deployment/backup.go index 92a6b0b3..bbab8e01 100644 --- a/operator/pkg/deployment/backup.go +++ b/operator/pkg/deployment/backup.go @@ -158,6 +158,10 @@ func NewBackupDaemonDeployment(backupDaemon *netcrackerv1.BackupDaemon, pgCluste Name: "GRANULAR_BACKUP_SCHEDULE", Value: backupDaemon.GranularBackupSchedule, }, + { + Name: "GRANULAR_COMPRESSION_LEVEL", + Value: strconv.Itoa(backupDaemon.GranularCompressionLevel), + }, { Name: "DATABASES_TO_SCHEDULE", Value: backupDaemon.DatabasesToSchedule, diff --git a/services/backup-daemon/docker/granular/configs.py b/services/backup-daemon/docker/granular/configs.py index 2a81ab75..d4c0e38e 100644 --- a/services/backup-daemon/docker/granular/configs.py +++ b/services/backup-daemon/docker/granular/configs.py @@ -149,6 +149,11 @@ def diff_cron_pattern(): def incr_cron_pattern(): return os.getenv("INCR_SCHEDULE", "none") +def granular_compression_level(): + level = os.getenv("GRANULAR_COMPRESSION_LEVEL") + if level is not None: + return int(level) + return None def get_parallel_jobs(): return os.getenv("JOB_FLAG" , "1") diff --git a/services/backup-daemon/docker/granular/granular.py b/services/backup-daemon/docker/granular/granular.py index 690ba3f4..e4828a28 100644 --- a/services/backup-daemon/docker/granular/granular.py +++ b/services/backup-daemon/docker/granular/granular.py @@ -151,6 +151,9 @@ def schedule_granular_backup(scheduler): logging.info('Start schedule granular backup') databases = configs.dbs_to_granular_backup() backup_request = {'databases': databases, 'namespace': 'schedule'} + compression_level = configs.granular_compression_level() + if compression_level is not None: + backup_request['compression_level'] = compression_level items = cron_pattern.split(' ', 5) minute, hour, day, month, day_of_week = items[0], items[1], items[2], items[3], items[4] From 72d630bab20418937223b3230394101bfb29d115 Mon Sep 17 00:00:00 2001 From: svetychkina Date: Thu, 23 Jul 2026 17:10:46 +0500 Subject: [PATCH 2/2] fix: [PSUPCLCAP-5020] change default level to 9, reuse existing variable --- operator/api/apps/v1/postgresservice_types.go | 1 - operator/charts/patroni-services/templates/cr.yaml | 2 +- operator/charts/patroni-services/values.schema.json | 2 +- operator/charts/patroni-services/values.yaml | 2 +- operator/pkg/deployment/backup.go | 4 ---- services/backup-daemon/docker/granular/configs.py | 4 ++-- services/backup-daemon/docker/granular/granular.py | 4 ++-- 7 files changed, 7 insertions(+), 12 deletions(-) diff --git a/operator/api/apps/v1/postgresservice_types.go b/operator/api/apps/v1/postgresservice_types.go index 7a67541c..ff0a6ea3 100644 --- a/operator/api/apps/v1/postgresservice_types.go +++ b/operator/api/apps/v1/postgresservice_types.go @@ -286,7 +286,6 @@ type BackupDaemon struct { JobFlag string `json:"jobFlag,omitempty"` ConnectTimeout string `json:"connectTimeout,omitempty"` GranularBackupSchedule string `json:"granularBackupSchedule,omitempty"` - GranularCompressionLevel int `json:"granularCompressionLevel,omitempty"` DatabasesToSchedule string `json:"databasesToSchedule,omitempty"` WalArchiving bool `json:"walArchiving,omitempty"` AllowPrefix bool `json:"allowPrefix,omitempty"` diff --git a/operator/charts/patroni-services/templates/cr.yaml b/operator/charts/patroni-services/templates/cr.yaml index 1726ca2f..73a0895b 100644 --- a/operator/charts/patroni-services/templates/cr.yaml +++ b/operator/charts/patroni-services/templates/cr.yaml @@ -37,7 +37,7 @@ spec: {{ toYaml .Values.podLabels | nindent 6 }} {{- end }} image: {{ template "find_image" (dict "deployName" "postgres_backup_daemon" "SERVICE_NAME" "postgres_backup_daemon" "vals" .Values "default" .Values.backupDaemon.dockerImage) }} - compressionLevel: {{ default 5 .Values.backupDaemon.compressionLevel }} + compressionLevel: {{ default 9 .Values.backupDaemon.compressionLevel }} walArchiving: {{ default false .Values.backupDaemon.walArchiving }} granularEviction: {{ .Values.backupDaemon.granularEviction | squote }} encryption: {{.Values.backupDaemon.encryption}} diff --git a/operator/charts/patroni-services/values.schema.json b/operator/charts/patroni-services/values.schema.json index 3e49d4c3..4559037b 100644 --- a/operator/charts/patroni-services/values.schema.json +++ b/operator/charts/patroni-services/values.schema.json @@ -525,7 +525,7 @@ }, "compressionLevel": { "type": "integer", - "default": 5 + "default": 9 }, "walArchiving": { "type": "boolean", diff --git a/operator/charts/patroni-services/values.yaml b/operator/charts/patroni-services/values.yaml index 3513f5da..6c882687 100644 --- a/operator/charts/patroni-services/values.yaml +++ b/operator/charts/patroni-services/values.yaml @@ -170,7 +170,7 @@ backupDaemon: # Docker Image that will be used for PostgreSQL Backup Daemon container dockerImage: ghcr.io/netcracker/pgskipper-docker-backup-daemon:main podLabels: {} - compressionLevel: 5 + compressionLevel: 9 # If the flag is set as true, the installation procedure will configure Postgres to use the WAL archive and use the backup daemon as storage. # This setting can cause major disk usage impact, because each postgres WAL file size is 16MB. walArchiving: false diff --git a/operator/pkg/deployment/backup.go b/operator/pkg/deployment/backup.go index bbab8e01..92a6b0b3 100644 --- a/operator/pkg/deployment/backup.go +++ b/operator/pkg/deployment/backup.go @@ -158,10 +158,6 @@ func NewBackupDaemonDeployment(backupDaemon *netcrackerv1.BackupDaemon, pgCluste Name: "GRANULAR_BACKUP_SCHEDULE", Value: backupDaemon.GranularBackupSchedule, }, - { - Name: "GRANULAR_COMPRESSION_LEVEL", - Value: strconv.Itoa(backupDaemon.GranularCompressionLevel), - }, { Name: "DATABASES_TO_SCHEDULE", Value: backupDaemon.DatabasesToSchedule, diff --git a/services/backup-daemon/docker/granular/configs.py b/services/backup-daemon/docker/granular/configs.py index d4c0e38e..4b2a2204 100644 --- a/services/backup-daemon/docker/granular/configs.py +++ b/services/backup-daemon/docker/granular/configs.py @@ -149,8 +149,8 @@ def diff_cron_pattern(): def incr_cron_pattern(): return os.getenv("INCR_SCHEDULE", "none") -def granular_compression_level(): - level = os.getenv("GRANULAR_COMPRESSION_LEVEL") +def compression_level(): + level = os.getenv("COMPRESSION_LEVEL") if level is not None: return int(level) return None diff --git a/services/backup-daemon/docker/granular/granular.py b/services/backup-daemon/docker/granular/granular.py index e4828a28..927845a2 100644 --- a/services/backup-daemon/docker/granular/granular.py +++ b/services/backup-daemon/docker/granular/granular.py @@ -151,9 +151,9 @@ def schedule_granular_backup(scheduler): logging.info('Start schedule granular backup') databases = configs.dbs_to_granular_backup() backup_request = {'databases': databases, 'namespace': 'schedule'} - compression_level = configs.granular_compression_level() + compression_level = configs.compression_level() if compression_level is not None: - backup_request['compression_level'] = compression_level + backup_request['compression_level'] = str(compression_level) items = cron_pattern.split(' ', 5) minute, hour, day, month, day_of_week = items[0], items[1], items[2], items[3], items[4]