Резервное копирование PostgreSQL

Я новичок в PostgreSQL и ищу резервную копию базы данных. Я понимаю, что есть 3 метода pg_dump, снимок и копирование и использование WAL. Какой из них вы предлагаете для полного резервного копирования базы данных? Если возможно, предоставьте фрагменты кода.

1 ответ

Решение

Это зависит гораздо больше от ваших эксплуатационных требований, чем что-либо еще.

Все три требуют обстрела внешней программы. libpq не предоставляет эти возможности напрямую; вам нужно будет вызвать pg_basebackup или же pg_dump с помощью execv или похожие.

Все три имеют разные преимущества.

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

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

pg_basebackup + WAL архивирование и PITR очень полезны и имеют довольно низкую стоимость ресурсов на сервере, но более сложны в настройке и управлении. Надлежащее резервное тестирование является обязательным условием.

Я настоятельно рекомендую разрешить пользователю контролировать используемый метод (ы) резервного копирования. Начать с pg_dump так как вы можете просто вызвать его как простую командную строку и управлять одним файлом. Использовать -Fc режим и pg_restore восстановить его там, где это необходимо. Затем изучите такие вещи, как настройка сервера для архивации WAL и PITR, как только вы освоите основы.

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