- Notifications
You must be signed in to change notification settings - Fork91
Description
Имеем некий виртуальный сервер с 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