Movatterモバイル変換


[0]ホーム

URL:


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

Неудачный merge корраптит данные в бэкапе #83

Closed
@istarling

Description

@istarling

Имеем некий виртуальный сервер с 4 CPU и HDD.
В PostgreSQL 11.3 создаем БД и наполняем тестовыми данными. Например так:

pgbench -i -s 200

Берем pg_probackup 2.1.3 и настраиваем бэкап-каталог. Допустим, так:

pg_probackup init -B /var/lib/pgsql/11/backups/probackuppg_probackup add-instance -B /var/lib/pgsql/11/backups/probackup/ -D /var/lib/pgsql/11/data/ --instance om11

Далее сосздаем цепочку из сжатых бэкапов. Один FULL и два DELTA.

pg_probackup backup -B /var/lib/pgsql/11/backups/probackup/ --instance om11 -b FULL --stream --compress-algorithm=zlib --compress-level=4 --log-level-console=verbose -j 4pg_probackup backup -B /var/lib/pgsql/11/backups/probackup/ --instance om11 -b DELTA --stream --compress-algorithm=zlib --compress-level=4 --log-level-console=verbose -j 4pg_probackup backup -B /var/lib/pgsql/11/backups/probackup/ --instance om11 -b DELTA --stream --compress-algorithm=zlib --compress-level=4 --log-level-console=verbose -j 4

Теперь необходимо смоделировать ситуацию, когда на диске с бэкапом кончается место и добиться падения merge с ошибкой "No space left on device". Для следующего примера мне удалось получить ошибку, когда на диске оставалось 3ГБ свободного пространства.

Подаем нагрузку командой "pgbench -c 3 -j 80 -T 3000 -P 1" и запускаем merge в 4 потока:

pg_probackup merge -B /var/lib/pgsql/11/backups/probackup/ --instance om11 --log-level-console=verbose -i PSKHNN -j 4

В итоге у меня диск имел 100% нагрузку по io, а спустя некоторое время merge упал с ошибкой вида:

ERROR: File: /var/lib/pgsql/11/backups/probackup/backups/om11/PSKMBB/database/base/13878/33085.2_tmp, cannot write backup at block 35693: No space left on deviceERROR: Cannot write block 112460 of "/var/lib/pgsql/11/backups/probackup/backups/om11/PSKMBB/database/base/13878/16550": No space left on deviceERROR: File: /var/lib/pgsql/11/backups/probackup/backups/om11/PSKMBB/database/base/13878/16550.2_tmp, cannot write backup at block 39001: No space left on deviceERROR: Interrupted during page readingERROR: Data files merging failed

Далее высвобождаем n-количество байт и запускаем merge в 1 поток:

pg_probackup merge -B /var/lib/pgsql/11/backups/probackup/ --instance om11 --log-level-console=verbose -i PSKHNN -j 1

В итоге получаем ошибку и невалидный бэкап:

ERROR: Cannot read block 35686 of "/var/lib/pgsql/11/backups/probackup/backups/om11/PSKMBB/database/base/13878/33085.2" read 48 of 509ERROR: Data files merging failed

Полная версия лога -https://oc.postgrespro.ru/index.php/s/rhn8JppgJ5lXg5o

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions


      [8]ページ先頭

      ©2009-2025 Movatter.jp