Какой формат pgdump лучше всего подходит для небольшого размера хранилища и быстрого восстановления?

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

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

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

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


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


Ответы (2)


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

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"

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

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

для получения полной информации посетите страницу справки pgdump, там много варианты там

person Mani Deep    schedule 27.11.2013

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

person jjanes    schedule 27.11.2013
comment
не могли бы вы объяснить более подробно и что должно произойти для резервного копирования и восстановления с использованием архивирования журналов? - person thames; 27.11.2013
comment
@jjanes, было бы здорово, если бы ты мог объяснить - person Mani Deep; 06.12.2013
comment
Я не думаю, что смогу сделать работу лучше, чем это уже сделано в документации: postgresql.org/docs/current/static/continuous-archiving.html - person jjanes; 06.12.2013