2013-11-27 5 views
4

Это первый раз набег на резервные копии PostgreSQL (db dumps), и я изучал различные форматы pgdump, другие параметры pgdump и pgdumpall. Для начинающего Postgres, который ищет почасовую дамп (будет перезаписывать предыдущий дамп) двух баз данных, содержащих триггеры таблиц и две разные схемы в каждом db, каков будет формат и параметры резервного копирования, чтобы легко достичь следующего:Какой формат pgdump лучше всего подходит для небольшого размера памяти и быстрого восстановления?

  1. Небольшого размера файла (один файл в БД или способность выбирать, какую БД для восстановления)
  2. Легко восстановить как чистый дБ (с & без одной БД имени [с])
  3. Легко восстановить на другом сервере (пользователь может быть другой)
  4. Триггеры отключены при восстановлении и снова включены после восстановления.

Включить пример команд для резервного копирования и восстановления.

Любые другие полезные предложения pgdump/pgrestore приветствуются.

+0

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

ответ

1

Эта команда создаст небольшой DMP файл, который включает в себя только структуру dattabase - рабочих таблиц, столбцов, триггеры, представления и т.д .. (Эта команда будет просто занять несколько минут)

pg_dump -U "dbuser" -h "host" -p "port" -F c -b -v -f ob_`date +%Y%m%d`.dmp dbname 

**ex:** pg_dump -U thames -h localhost -p 5432 -F c -b -v -f ob_`date +%Y%m%d`.dmp dbname 

Эта команда будет принимать резервное копирование всей базы данных

pg_dump -h localhost -U "dbuser" "dbname" -Fc > "pathfilename.backup" 

**ex:** pg_dump -h localhost -U thames thamesdb - Fc > "thamesdb.backup" 

и для восстановления вы можете использовать:

pg_restore -i -h localhost -U "user" -d "dbname" -v "dbname.backup" 

**ex:** pg_restore -i -h localhost -U thames -d thamesdb -v "thamesdb.backup" 

взять резервную копию выбранных рабочих таблиц (использует регулярные выражения) here

pg_dump -t '(A|B|C)' 

для подробной информации вы можете посетить pgdump страницу справки Есть много вариантов там

-1

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

+0

Вы могли бы объяснить более подробно и что должно произойти с резервным копированием, а также восстановить с помощью архивации журналов? – thames

+0

@jjanes, что было бы здорово, если бы вы могли объяснить –

+0

Я не думаю, что смогу сделать лучше, чем документы, которые уже делают: http://www.postgresql.org/docs/current/static/continuous-archiving.html – jjanes