Настройка горячего резервирования Postgres в AWS

У нас есть база данных Posrgres 9.5, работающая на EC2 в AWS, и мы пытаемся настроить горячий резерв. Сервер имеет около 3 ТБ данных, поэтому резервное копирование не является быстрой задачей.

Сначала я попытался создать базовую резервную копию для горячего резервирования, выполнив (следуя этому руководству):

sudo -u postgres pg_basebackup -h <primary IP> -D /data/postgres -U repuser -v -P --xlog-method=stream

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

Я выключил основной сервер на ночь и сделал снимок тома EBS. (Мы храним каталог данных на отдельном томе.) Затем я создал том из снимка и подключил его к резервному.

На этом этапе и основной, и резервный серверы отключены, и у них обоих есть соответствующие каталоги данных. Я запустил первичный, он, очевидно, вышел в онлайн без проблем. Однако в режиме ожидания этого не произошло. Это заняло немного копания, но я нашел эту ошибку в папке журнала (CSV):

"hot standby is not possible because wal_level was not set to ""hot_standby"" or higher on the master server",,"Either set wal_level to ""hot_standby"" on the master, or turn off hot_standby here."

Значение wal_level IS основного сервера установлено в hot_standby. В Интернете я также обнаружил, что эта ошибка может произойти, если резервный сервер просто не может подключиться к первичному серверу, но я проверил учетные данные, и они в порядке. (Они также работали нормально, когда я пытался использовать pg_basebackup.)

Итак, вот мой вопрос:

1) Почему не сделали снимок основного устройства и подключили его к резервной работе? Есть ли способ заставить его работать?

2) Если нет, есть ли более быстрый способ сделать базовое резервное копирование?

3) Если нет, будет ли на первичном сервере достаточно данных WAL после завершения резервного копирования через 14 дней? Другими словами, сможет ли горячий резерв выяснить, что было упущено при запуске pg_basebackup?

1 ответ

Люк, в сообщении написано: "или отключи hot_standby здесь".

Разве это не так, у вас в режиме ожидания сервера (как это было из снимка)?

Я полагаю, вы не хотите использовать RDS, Райт?

Если это не делает работу, у меня нет простого ответа. Это будет зависеть от приемлемого времени простоя, которое вы можете иметь, будь то одно приложение или мультитенантное...

Вы можете попробовать:

1) использовать pg_barman; 2) сначала выведите структуру дампа, а затем попытайтесь сбросить каждую таблицу отдельно, чтобы вы могли воспользоваться преимуществами использования большего количества ядер 2.1) в этом сценарии ограничение будет равно io 2.2) мне потребуется больше времени для анализа использования FK, чтобы построить правильное последовательность 2.3) в этом случае я бы порекомендовал переименовать базу данных на некоторое время, поэтому новые данные не будут созданы 3) для разделения вашей базы данных

Удачи

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