Сервер на Debian, СУБД - postgresPro-12. Сейчас на этом одном сервере 4 информационные базы (две Документооборот и 2 ERP, они в одном кластере). Делаем бэкапы с помощью pg_probackup.
pg_probackup делает бэкап ВСЕХ баз вместе и если нужно восстановиться, то восстанавливает ВСЕ четыре. Есть ли возможность настроить бэкапы так, чтобы была возможность восстанавливать по 1 базе? Например, если нужно одну базу откатить на вчерашний день или на какой-то момент времени до критической ошибки, но остальные базы не трогать.
Может не pg_probackup, а какой-то другой инструмент это умеет? Требуется, чтобы была возможность по 1 базе восстанавливать к нужной точке во времени.
(2) насколько я понимаю, 1 сервер - 1 кластер, если несколько кластеров, нужно запускать несколько экземпляров серверов postgres. Правильно ли так делать?
(3) если авария всего сервера(физической машины), то тут понятно - мы всё восстанавливаем. Но если у меня проблемы с 1 базой (кто-то случайно удалил лишнее) и мне нужно откатить конкретно эту базу на три часа назад, то мне pg_dump не поможет, он не поддерживает восстановление к точке во времени. К тому же, нужно параллельно поддерживать 2 вида бэкапов (делать регулярно и pg_dump, и pg_probackup)
(5)Не пользовался pg_probackup, это платная утилита?, спрашиваю т.к. утверждается, что pg_probackup позволяет частичное восстановление, вы же читали документацию?
Если вы подготовились к частичному восстановлению до того, как сделали резервную копию, вы можете восстановить только некоторые базы данных, используя параметры частичного восстановления с командой restore.
Чтобы восстановить только некоторые базы данных, выполните команду restore как минимум со следующими параметрами:
(9) папка, в которую идет восстановление, должна быть пуста. то есть я удалю 4 базы, а восстановлю одну. Или мне нужно восстанавливать в другое место одну базу, а потом ее переносить, как предлагает ниже redfred :
8. redfred 28.10.22 09:08
Как вариант - разворачивать на промежуточном сервере весь кластер на нужный момент времени и уже там делать дамп конкретной базы
(7) Поискать "run two instances postgres" пример https://stackoverflow.com/a/48903584 postgresql.conf указать порт и прочие настройки безопасности и производительности
Добавить пользователя
postgres=# CREATE USER postgres SUPERUSER;
postgres=# ALTER USER postgres PASSWORD 'КрепкийПароль';
Настроить подключение с сервера 1с на нужный порт
Бэкап
pg_basebackup -stream -p 5444 -U %PGUSER% --format=tar -z -D %PGBACKUP% -P 2>%LOGPATH%
pg_dump — это программа для создания резервных копий базы данных Postgres Pro. Она создаёт целостные копии, даже если база параллельно используется. Программа pg_dump не препятствует доступу других пользователей к базе данных (ни для чтения, ни для записи).
Программа pg_dump выгружает только одну базу данных. Чтобы сохранить глобальные объекты, относящиеся ко всем базам в кластере, например, роли и табличные пространства, воспользуйтесь программой........
pg_probackup — это утилита для управления резервным копированием и восстановлением кластеров баз данных Postgres Pro. Она предназначена для регулярного создания резервных копий экземпляра
За пример спасибо. Сценарий отличный, но он делает только pg_dump. То есть если я делаю бэкапы ночью, то и восстановиться могу только на состояние последней ночи. Это хорошо, но передо мной стоит задача восстанавливаться к определенному времени. Если сотрудник напортачил и удалил документ в конце рабочего дня в 17:30, нужно и восстанавливать базу в состояние 17:20 (или 17:00), но не в состояние ночного бэкапа (результат целого дня работы будет потерян).