Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Зачем нужно хранить FULL для выполнения последующих инкрементных бэкапов #375

Open
@triwada

Description

Есть проблема с необходимостью хранения большого объёма бэкапов, может есть возможность оптимизировать этот момент?
Описание:

  1. на локальный раздел в ОС выполняется бэкап согласно расписанию: FULL раз в сутки, каждые 2 часа DELTA или PAGE.
  2. согласно документации DELTA/PAGE выполняется относительно успешного предыдущего успешного FULL или DELTA/PAGE (не указано, что для всех инкрементных нужно ещё хранить FULL)
  3. выполненные бэкапы постепенно переносятся на ленту, после чего их по идее можно удалять, освобождая место на локальном разделе бэкапов.

Но если удалить FULL, то бэкапы DELTA/PAGE не выполняются.

[postgres@pglab ~]$ pg_probackup-std-12 show -B /data/backup --instance pgpro-std12
=========================================================================================================================================
 Instance Version ID Recovery Time Mode WAL Mode TLI Time Data WAL Zratio Start LSN Stop LSN Status
=========================================================================================================================================
 pgpro-std12 12 QS3B8N 2021年04月25日 01:46:00+03 DELTA STREAM 1/1 6s 167kB 32MB 1.00 7/4F000028 7/4F000168 OK
 pgpro-std12 12 QS3B5V 2021年04月25日 01:44:20+03 DELTA STREAM 1/1 5s 167kB 32MB 1.00 7/4D000028 7/4D000168 OK
 pgpro-std12 12 QS3B48 2021年04月25日 01:43:24+03 FULL STREAM 1/0 10s 825MB 16MB 1.00 7/4B000028 7/4B000168 OK
[postgres@pglab ~]$ rm -rf /data/backup/backups/pgpro-std12/QS3B48
[postgres@pglab ~]$ pg_probackup-std-12 backup -B /data/backup --instance pgpro-std12 -b DELTA --stream --progress --log-level-console=INFO
INFO: Backup start, pg_probackup version: 2.4.10, instance: pgpro-std12, backup ID: QS3B9Q, backup mode: DELTA, wal mode: STREAM, remote: false, compress-algorithm: none, compress-level: 1
WARNING: Current PostgreSQL role is superuser. It is not recommended to run backup or checkdb as superuser.
WARNING: Valid backup on current timeline 1 is not found, trying to look up on previous timelines
WARNING: Cannot find valid backup on previous timelines, WAL archive is not available
ERROR: Create new full backup before an incremental one
WARNING: backup in progress, stop backup
WARNING: Backup QS3B9Q is running, setting its status to ERROR

Понятно, что FULL нужен для рестора, но зачем он нужен для последующих DELTA/PAGE (НЕ первого после FULL)?
Если поведение изменится, то можно существенно сэкономить на затратах на локальный диск для бэкапов, выступающих в качестве временного буфера перед перемещением бэкапов на ленту.
Есть довольно весомая разница в объёмах (особенно на БД с повышенной генерацией WAL) в хранении либо 1xFULL+1xDELTA, либо 1xFULL+11xDELTA (при условии, что DELTA каждые 2 часа).

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions

        AltStyle によって変換されたページ (->オリジナル) /