Open danvernsk opened 1 year ago
Скорее всего Вы вызывали операцию merge
от имени пользователя root
.
Проверил ещё раз, нет нигде рута. Вот кронтаб:
01 12 * * 1-5 postgres bash /var/command/pgBack/pgback.sh
15 20 * * 1-4 postgres bash /var/command/pgBack/pgback.sh
Команда из скрипта, создающая резервные копии:
pg_probackup-14 backup --instance=$srv --backup-mode=$mode --compress -j 8 --stream --pguser=backup --pgdatabase=backup --remote-host=$srv --remote-user=postgres -B /media/s1/ --retention-window=30 --retention-redundancy=4 --delete-expired --merge-expired
Всё правильно работает почти всегда, но иногда появляется этот рут.
Вы сохраняете логи запусков мёржа? Попробуйте поискать в них что-то необычное.
При создании резервных копий рабочих серверов с помощью pg_probackup 14.7 методом full и stream периодически в копиях у файла backup.control владелец оказывается root, из за этого следующее задание не выполняется. Остальные файлы в копии с нужными правами. Откуда может взяться этот root, если резервирование делается скриптом от имени postgres? Если в такой копии переназначить права вручную, всё снова работает. Выглядит вот так:
-rw------- 1 postgres postgres 187630212 июн 24 03:39 backup_content.control
-rw------- 1 root root 840 июл 4 09:20 backup.control
drwx------ 20 postgres postgres 4096 июн 24 03:38 database
-rw------- 1 postgres postgres 106347338 июн 24 03:38 page_header_map
Как исправить?