Резервное копирование 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, как только вы освоите основы.