простой сценарий для резервного копирования базы данных PostgreSQL

Узнанный мы должны воссоздать логины на зеркальном сервере с тем же SID.

http://social.msdn.microsoft.com/Forums/en/sqldatabaseengine/thread/5b2b7404-69d3-44cf-b522-fae1e6712a8b

2
задан 30 May 2014 в 13:32
3 ответа

Вы не можете указать пароль для таких утилит Postgres, как pg_dump , в командной строке.
Это будет гигантская дыра в безопасности, требующая отвратительных обходных путей для смягчения .

То, что вы МОЖЕТ сделать, это создать pgpass файл , с которым будет обращаться pg_dump .

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

1
ответ дан 3 December 2019 в 12:52

Вы также можете создать выделенного пользователя, ограниченного localhost и с ограниченными привилегиями, который может подключаться без пароля. (Например, пользователь unix).

Мы использовали это, и если пользователь хорошо защищен, это не нарушит безопасность.

.
0
ответ дан 3 December 2019 в 12:52

Спасибо за ваш cmd-скрипт. Я использовал его, чтобы написать свой собственный, как показано ниже. Он создаст резервную копию всех баз данных, хранящихся в postgresql, в файл, отформатированный в пользовательском формате, используемом pg_dump, с датой yyyymmdd_hhss в имени. Задача: резервное копирование полной схемы без данных.

Имя базы данных сохраняется в переменной %% d в цикле. Вы можете безопасно изменить:

  • «backup_data_dir» (должен заканчиваться)
  • «pg_user» (postgres по умолчанию)
  • «pg_bin_dir» (должен заканчиваться)

Внимание: я француз. дд / мм / гггг для% date%, «DEBUT» для «START», «FIN» для «END».

@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
SET backup_data_dir=C:\path\to\backup\
SET backup_file_name=%COMPUTERNAME%.%date:~6,4%%date:~3,2%%date:~0,2%_%time:~0,2%%time:~3,2%.PGDMP
SET pg_user=--username=postgres
SET pg_dmp_option=--clean %pg_user% --format=custom
SET pg_lst_db=psql.exe %pg_user% --list --field-separator=^; --tuples-only --no-align
SET pg_bin_dir=C:\Program Files\PostgreSQL\9.6\bin\

CD /D %pg_bin_dir%
FOR /f "delims=; tokens=1" %%d IN ('!pg_lst_db!^| find ";"^|find /v "template0"') DO (
  @ECHO !date! !time! pg_dump de la base [%%d] --- DEBUT ---
  SET backup_file_name=%%d.%backup_file_name%
  SET pg_dmp_option=%pg_dmp_option% --file="%backup_data_dir%!backup_file_name!" --dbname=%%d
  pg_dump.exe !pg_dmp_option!
  ECHO !date! !time! pg_dump de la base [%%d] --- F I N ---
)
0
ответ дан 3 December 2019 в 12:52

Теги

Похожие вопросы