PostgreSQL: восстановление на определенный момент времени для отдельной базы данных, а не для всего кластера

Согласно стандартной документации Postgres

Как и в случае простого метода резервного копирования файловой системы, этот метод может поддерживать только восстановление всего кластера базы данных, но не подмножества.

Исходя из этого, я понял, что невозможно настроить PITR для отдельных баз данных в кластере (так называемый экземпляр базы данных, содержащий несколько баз данных). Если мое понимание неверно, возможно, следующая часть вопроса не актуальна, но если нет, то вот она:

У меня до сих пор нет проблем с теоретической настройкой, поскольку каждая база данных генерирует свой собственный архив WAL.

Проблема заключается в следующем: мне нужно настроить несколько кластеров Postgres, и у меня есть только 2 машины RHEL 7.6 для этого. Я пытаюсь сократить количество кластеров на этих двух компьютерах до двух. Я планирую создать несколько баз данных, а не несколько экземпляров для обработки пользовательских приложений. Но это означает, что я должен пожертвовать PITS, поскольку PITR может выполняться только на уровне экземпляра / кластера, а не на уровне базы данных (согласно официальной документации).

Может кто-нибудь, пожалуйста, помогите прояснить мое недоразумение.

1 ответ

Решение

Вы правы, вы можете выполнять PITR только в кластере базы данных PostgreSQL, а не в отдельной базе данных.

Существует только один поток WAL для всего кластера базы данных; WAL не разделяется на базу данных.

Не стесняйтесь запускать несколько кластеров PostgreSQL на одной машине, если это выгодно для вас.

Есть небольшие накладные расходы при запуске второго кластера базы данных. Самый большой ресурс кластера - это общие буферы, но вы все равно хотите, чтобы он составлял лишь часть доступной оперативной памяти. Большая часть памяти должна быть оставлена ​​для кэша файловой системы, который используется всеми кластерами PostgreSQL.

Другие вопросы по тегам