PostgreSQL - использование доставки журналов для постепенного обновления удаленного ведомого устройства только для чтения
Веб-сайт моей компании использует базу данных PostgreSQL. В нашем центре обработки данных у нас есть основная база данных и несколько подчиненных баз данных только для чтения, и мы используем Londiste для непрерывной репликации между ними.
Я хотел бы настроить другую подчиненную БД только для чтения для целей отчетности, и я хотел бы, чтобы это ведомое устройство находилось в удаленном месте (за пределами центра обработки данных). Этот раб не должен быть на 100% современным. Если до 24 часов, это нормально. Кроме того, я хотел бы минимизировать нагрузку на основную БД. Поскольку наша главная база данных занята днем и бездействует ночью, я полагаю, что хорошей идеей (если это возможно) является то, чтобы подчинить подчиненного раба каждую ночь.
Я думаю об использовании доставки журналов для этого, как описано на http://www.postgresql.org/docs/8.4/static/continuous-archiving.html
Мой план:
- Настройка архивации WAL на главной БД
- Создайте полный снимок БД и скопируйте его в удаленное местоположение.
- Восстановите БД и поймайте ее
- Перейти в устойчивое состояние, где:
- DAYTIME - база данных отстает, но люди могут запросить ее
- НОЧЬ - Я копирую дневные файлы WAL и получаю данные из базы данных.
Примечание: ключевой момент в том, что мне нужно скопировать полный снимок БД только один раз. После этого мне нужно было всего лишь скопировать дневные файлы WAL, чтобы снова подключить удаленного ведомого.
Так как я не делал доставку журналов, прежде чем я хотел бы получить некоторые отзывы / советы.
Будет ли это работать? Поддерживает ли PostgreSQL такое повторное восстановление?
Есть ли у вас другие предложения о том, как настроить удаленного полу-свежего ведомого только для чтения?
Спасибо!
-S
2 ответа
Ваш план должен работать.
Как говорит Чарльз, теплое резервирование является еще одним возможным решением. Он поддерживается начиная с версии 8.2 и имеет относительно низкое влияние на производительность основного сервера. Теплый резерв документирован в Руководстве: PostgreSQL 8.4 Теплый резерв
Краткая процедура настройки резервного сервера заключается в следующем. Для получения полной информации о каждом шаге обратитесь к предыдущим разделам, как отмечено.
- Настройте основную и резервную системы как можно более одинаково, включая две идентичные копии PostgreSQL на одном уровне выпуска.
- Настройте непрерывное архивирование из основного в WAL-архив, расположенный в каталоге на резервном сервере. Убедитесь, что archive_mode, archive_command и archive_timeout установлены соответствующим образом на первичном сервере (см. Раздел 24.3.1).
- Сделайте базовую резервную копию основного сервера (см. Раздел 24.3.2) и загрузите эти данные в резервный.
- Начните восстановление на резервном сервере из локального архива WAL, используя recovery.conf, в котором указывается команда restore_com, которая ожидает, как описано ранее (см. Раздел 24.3.3).
Чтобы добиться только ночных синхронизаций, ваша команда archive_command должна выйти с ненулевым состоянием выхода в дневное время.
Дополнительная информация:
Встроенная 9.0 потоковая репликация WAL предназначена для выполнения задач, которые должны соответствовать вашим целям - теплый или горячий резерв, который может принимать запросы только для чтения. Рассматривали ли вы его использование, или вы застряли на 8.4 на данный момент?
(Также ожидается, что в следующем выпуске 9.1 будет обновленная / переписанная версия pg_basebackup, инструмента для создания начальной резервной точки для свежего ведомого.)