Я новичок в PostgreSQL, и я ищу резервное копирование базы данных. Я понимаю, что есть 3 метода pg_dump
, снимок и копирование и использование WAL. Какой из них вы предлагаете для полного резервного копирования базы данных? Если возможно, укажите фрагменты кода.Резервное копирование PostgreSQL
ответ
Это зависит от ваших эксплуатационных требований, а не от других.
Все три потребуют обхода внешней программы. libpq
не предоставляет эти объекты напрямую; вам необходимо вызвать pg_basebackup
или pg_dump
через execv
или аналогичный.
Все три имеют разные преимущества.
Резервные копии с резервным копированием на основе атомных снимков полезны, если файловая система поддерживает их, но становится бесполезной, если вы используете табличные пространства, так как тогда вам нужен многотомный атомный снимок - то, что большинство систем не поддерживают. Они также могут быть больно настроены.
pg_dump
простой и производит компактные резервные копии, но требует больше ресурсов сервера для запуска и не поддерживает какое-либо восстановление в определенный момент времени или инкрементное резервное копирование.
pg_basebackup
+ WAL-архивирование и PITR очень полезны и имеют довольно низкую стоимость ресурсов на сервере, но сложнее настроить и управлять. Необходимы правильные тесты резервного копирования.
Я настоятельно рекомендую разрешить пользователю управлять используемыми методами резервного копирования. Начните с pg_dump
, так как вы можете просто вызвать его как простую командную строку и управлять одним файлом. Используйте режим -Fc
и pg_restore
, чтобы восстановить его там, где это необходимо. Затем изучите такие вещи, как настройка сервера для архивации WAL и PITR, когда у вас есть основы.
Здесь не так много контекста, в частности, почему вам нужна программа на C/C++: пытаетесь ли вы создать автоматизацию резервного копирования в каком-то существующем приложении для обслуживания? Или реализовать некоторые дополнительные функции поверх существующих инструментов? Как бы то ни было, единственный способ ответить - это широкое обсуждение существующих инструментов, и это не тот вопрос, который здесь предлагается. – IMSoP