PostgreSQL - использование доставки журналов для постепенного обновления удаленного ведомого устройства только для чтения

Веб-сайт моей компании использует базу данных PostgreSQL. В нашем центре обработки данных у нас есть основная база данных и несколько подчиненных баз данных только для чтения, и мы используем Londiste для непрерывной репликации между ними.

Я хотел бы настроить другую подчиненную БД только для чтения для целей отчетности, и я хотел бы, чтобы это ведомое устройство находилось в удаленном месте (за пределами центра обработки данных). Этот раб не должен быть на 100% современным. Если до 24 часов, это нормально. Кроме того, я хотел бы минимизировать нагрузку на основную БД. Поскольку наша главная база данных занята днем ​​и бездействует ночью, я полагаю, что хорошей идеей (если это возможно) является то, чтобы подчинить подчиненного раба каждую ночь.

Я думаю об использовании доставки журналов для этого, как описано на http://www.postgresql.org/docs/8.4/static/continuous-archiving.html

Мой план:

  1. Настройка архивации WAL на главной БД
  2. Создайте полный снимок БД и скопируйте его в удаленное местоположение.
  3. Восстановите БД и поймайте ее
  4. Перейти в устойчивое состояние, где:
    • DAYTIME - база данных отстает, но люди могут запросить ее
    • НОЧЬ - Я копирую дневные файлы WAL и получаю данные из базы данных.

Примечание: ключевой момент в том, что мне нужно скопировать полный снимок БД только один раз. После этого мне нужно было всего лишь скопировать дневные файлы WAL, чтобы снова подключить удаленного ведомого.

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

Будет ли это работать? Поддерживает ли PostgreSQL такое повторное восстановление?

Есть ли у вас другие предложения о том, как настроить удаленного полу-свежего ведомого только для чтения?

Спасибо!

-S

2 ответа

Ваш план должен работать.
Как говорит Чарльз, теплое резервирование является еще одним возможным решением. Он поддерживается начиная с версии 8.2 и имеет относительно низкое влияние на производительность основного сервера. Теплый резерв документирован в Руководстве: PostgreSQL 8.4 Теплый резерв

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

  1. Настройте основную и резервную системы как можно более одинаково, включая две идентичные копии PostgreSQL на одном уровне выпуска.
  2. Настройте непрерывное архивирование из основного в WAL-архив, расположенный в каталоге на резервном сервере. Убедитесь, что archive_mode, archive_command и archive_timeout установлены соответствующим образом на первичном сервере (см. Раздел 24.3.1).
  3. Сделайте базовую резервную копию основного сервера (см. Раздел 24.3.2) и загрузите эти данные в резервный.
  4. Начните восстановление на резервном сервере из локального архива WAL, используя recovery.conf, в котором указывается команда restore_com, которая ожидает, как описано ранее (см. Раздел 24.3.3).

Чтобы добиться только ночных синхронизаций, ваша команда archive_command должна выйти с ненулевым состоянием выхода в дневное время.

Дополнительная информация:

Postgres Wiki о теплом режиме ожидания

Настройка блога "Теплый режим ожидания"

Встроенная 9.0 потоковая репликация WAL предназначена для выполнения задач, которые должны соответствовать вашим целям - теплый или горячий резерв, который может принимать запросы только для чтения. Рассматривали ли вы его использование, или вы застряли на 8.4 на данный момент?

(Также ожидается, что в следующем выпуске 9.1 будет обновленная / переписанная версия pg_basebackup, инструмента для создания начальной резервной точки для свежего ведомого.)


Обновление: PostgreSQL 9.1 будет включать в себя возможность приостанавливать и возобновлять потоковую репликацию простым вызовом функции на ведомом устройстве.

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