Я надеялся, что смогу получить четкий ответ о том, как обеспечить полное резервное копирование Postgres, как если бы вы использовали MS SQL Server, а затем позаботиться об осиротевших пользователях.
Из того, что я прочитал, и это может быть неправильно, найти хороший блог PostgreSQL было непросто, поэтому, пожалуйста, не стесняйтесь рекомендовать его мне, мне нужно выяснить, как работает это приложение, чтобы я мог доверять своим резервным копиям и Slony. репликация. У меня был разработчик, который восстановил резервную копию, которую я взял из PgadminIII через custom
, directory
и tar
отформатировал при выборе OID
s, но он сказал, что два из них не загружались, tar
а только каталог, а не данные. Я действительно смущен сейчас.
- Я использую PGAdminIII, у него есть
pg_dump
иpg_dumpall
опция. Я хочу сделать резервную копию всего , что мне нужно, чтобы проверить, восстановить базу данных где-нибудь и убедиться, что да, все данные, которые нам нужны, и наше резервное копирование в порядке. В конце концов я хочу написать сценарий авто-восстановления, но один день за один раз.
pg_dumpall
по-видимому, есть -globals
опция, которая должна делать резервные копии всего, но справка для pg_dumpall
показывает, а -g, --globals-only dump only global objects, no databases
не --globals
опция.
Я думал, pg_dumpall
что по крайней мере резервное копирование внешних ключей, но даже это, кажется, «вариант». Согласно документации , даже несмотря на то, что pg_dumpall
мне нужно использовать -o
опцию для резервного копирования внешних ключей, я не могу себе представить, когда не захочу делать резервные копии внешних ключей, и это было бы более целесообразно в качестве параметров по умолчанию.
- Как бы я позаботился об осиротевших пользователях и подтвердил, что у меня есть все? Я бы хотел восстановить файл резервной копии на другом сервере и убедиться, что все работает. Если у кого-нибудь есть какие-либо предложения о том, как сделать реальное резервное копирование в PostgreSQL и восстановить его, я был бы очень признателен.
У меня был сервер PostgreSQL, но я до сих пор не могу понять, почему приложение не будет делать резервные копии OID
по умолчанию! Кажется, что 99,9% времени вы хотели бы этого.
ОБНОВЛЕНИЕ 1:
В документации Postgres упоминается, что globals
вариант, который я искал, кажется, вариант по умолчанию в этой версии, но он все еще нуждается в этом -o
. Если кто-то может проверить или дать мне пример команды для восстановления одной базы данных в другом месте со всем необходимым, я был бы благодарен.
Изменить: когда меня попросили показать уникальность этого вопроса, отредактировав мой вопрос. Этот вопрос поднимает проблему и дает ясность в отношении OID в резервных копиях, различий между глобальными и неглобальными значениями, а также в тестировании восстанавливает рекомендации, чтобы обеспечить хорошее резервное копирование, а не просто резервное копирование. Благодаря ответам я смог выполнить резервное копирование, выяснить глобальные переменные / oids и начал тестовое восстановление ночью на Postgres, используя задания cron. Спасибо за помощь!
источник
Ответы:
Вы можете сбросить весь кластер PostgreSQL с помощью pg_dumpall. Это все базы данных и все глобальные переменные для одного кластера. Из командной строки на сервере я бы сделал что-то вроде этого. (Mine прослушивает порт 5433, а не порт по умолчанию.) Вам может потребоваться или не потребоваться опция --clean.
Сюда входят глобальные переменные - информация о пользователях и группах, табличные пространства и т. Д.
Если бы я собирался сделать резервную копию одной базы данных и перенести ее на рабочий сервер , я бы сделал дамп базы данных с помощью pg_dump и выгрузил глобальные переменные либо
pg_dumpall --globals-only
, илиpg_dumpall --roles-only
(если вам нужны только роли)так.
Выходы - это просто текстовые файлы.
После перемещения этих файлов на другой сервер сначала загрузите глобальные переменные, а затем дамп базы данных.
Нет, эта ссылка говорит: «Используйте эту опцию, если ваше приложение каким-либо образом ссылается на столбцы OID (например, в ограничении внешнего ключа). В противном случае эту опцию использовать не следует». (Акцент добавлен.) Думаю, маловероятно, что ваше приложение ссылается на столбцы OID. Вам не нужно использовать эту опцию для «резервного копирования внешних ключей». (Прочтите файл дампа в вашем редакторе или в программе просмотра файлов.)
источник
psql -U postgres -h localhost -p 5433 sandbox < sandbox.sql
pg_dumpall
версия 9.5 неправильно работает соNULL
значениями при использованииCOPY
. Я получаю много ошибок, как это:psql:/tmp/dumpall.sql:4133559: invalid command \N psql:/tmp/dumpall.sql:4133560: invalid command \.
При импорте обратно в Postgres 10 с использованиемpsql -f /tmp/dumpall.sql