2013-06-03 8 views
0

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

+1

Здесь не так много контекста, в частности, почему вам нужна программа на C/C++: пытаетесь ли вы создать автоматизацию резервного копирования в каком-то существующем приложении для обслуживания? Или реализовать некоторые дополнительные функции поверх существующих инструментов? Как бы то ни было, единственный способ ответить - это широкое обсуждение существующих инструментов, и это не тот вопрос, который здесь предлагается. – IMSoP

ответ

6

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

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

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

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

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

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

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