postgreSQL pg_dump через локальную сеть - PullRequest
0 голосов
/ 31 мая 2018

Я ищу способ резервного копирования базы данных через локальную сеть на смонтированном диске на рабочей станции.В основном сценарий Bash на рабочей станции или на сервере для выгрузки одной базы данных в путь на томе.Том не монтируется нормально, поэтому мне неясно, в какой блок поставить скрипт, учитывая имя пользователя / пароль и разрешения / доступность монтируемого тома.

Проблема, с которой я сейчас сталкиваюсь, - это разрешения нарабочая станция:

myfile='/volumes/Dragonfly/PG_backups/serverbox_PG_mydomain5myusername_'`date +%Y_%m_%d_%H_%M`'.sql'
pg_dump -h serverbox.local -U adminuser -w dbname > $myfile

Есть ли синтаксис, который я могу предоставить для этого?Прочитайте документы, и нет никаких паролей, что вполне ожидаемо.Я также не хочу отображать пароль и хранить его в сценарии оболочки.Или есть другой способ сделать это, используя rsync после того, как резервное копирование выполняется локально?Приветствия

Ответы [ 2 ]

0 голосов
/ 01 июня 2018

Получил его для работы с ~/.pgpass, pg_hba.conf на сервере и скриптом, который включал переменную окружения TERM (xterm) и путь к pg_dump.

Нет логина для crontab, даже как текущий пользователь-администратор.Так что это немного слепо.

0 голосов
/ 31 мая 2018

Во-первых, обратите внимание, что используемая вами команда pg_dump включает параметр -w, что означает, что pg_dump не будет выдавать запрос пароля.Это действительно то, что вы хотите для резервного копирования без присмотра (т.е. выполняемого сценарием).Но вам просто нужно убедиться, что вы правильно настроили аутентификацию.Варианты здесь в основном:

  1. Установить ~/.pgpass файл на хосте, с которого запускается дамп.Исходя из того, что вы написали, вы должны сохранить этот файл в домашнем каталоге сервера, на котором выполняется задание резервного копирования, , а не , хранящемся где-то на подключенном томе.На основании информации в вашем примере строка в этом файле должна выглядеть следующим образом: serverbox.local:5432:database:adminuser:password Не забудьте указать имя базы данных, для которой вы создаете резервную копию!Это не было указано в вашем примере команды pg_dump.

  2. Дурак с файлом pg_hba.conf вашего сервера Postgres, так что соединения с вашей резервной машины как вашего пользователя резервного копирования не требуют пароля, но используйте что-то вроде trust или ident аутентификация.Будьте осторожны, конечно, если вы не полностью доверяете хосту, на котором работают резервные копии (например, это общий компьютер), это не очень хорошая идея.

  3. Установка средыпеременные на сервере, такие как PGPASSWORD, которые видны вашему сценарию резервного копирования.В целях безопасности обычно рекомендуется использовать файл ~/.pgpass.

Или есть другой способ сделать это с помощью rsync после локального создания резервных копий?

Не уверен, что вы спрашиваете здесь - вы, конечно, должны указать учетные данные для pg_dump до , резервное копирование может выполняться, а не после.И pg_dump - это только один из многих вариантов резервного копирования, есть другие методы, которые будут работать, если у вас есть SSH / rsync-доступ к серверу Postgres, например, резервные копии на уровне файловой системы .Эти виды резервных копий («физический» уровень) дополняют pg_dump («логический» уровень), вы можете использовать один или оба метода в зависимости от вашего уровня паранойи и сложности.

...