LINUX.ORG.RU
решено ФорумAdmin

Подскажите, как восстановить базу после -Fc

 , ,


2

2

Пытаюсь понять, как из консоли правильно делать бекапы и восстанавливать из них. Курю вот такие косяки, но ничего не вкуривается...

Скрипт бекапа написал такой:

#/bin/bash
date=`date +'%Y-%m-%d-%H-%M-%S'`

pg_dump -O -Fc -h localhost -U postgres mg > mg_$date.pgsq

А вот с восстановлением - тупак :(

#/bin/bash
if [[ -z $1 || -z $2 ]]; then
    echo "./restore DATABASE FILE"
    exit
fi

date=`date +'%Y %b %d - %H:%M:$S'`
echo "\n\n[$date]\n" >> restore.log
pg_restore -C -d $1 -e -Fc -O -h localhost -U postgres $2 >> restore.log

Никак не могу подобрать параметры для pg_restore

1) pg_restore -C -d $1 - говорит, что база уже есть

2) pg_restore -c -d $1 - говорит, что схема не найдена

3) если удалить базу перед выполнением и сделать -C -d $1 - говорит, что не удается подключиться к базе (естественно, ее же нет!)

Подскажите, как восстановить базу, пожалуйста.

Перемещено beastie из general

★★★★★
Ответ на: комментарий от maxcom

Да, так не ругается. Но это же ненормально - создавать базу вручную перед восстановлением из бекапа, если в бекапе уже есть момент создания БД, не находите?

А с ролями как быть? они перенесутся при таком способе выгрузки/загрузки?

bvn13 ★★★★★
() автор топика
Ответ на: комментарий от bvn13

Да, так не ругается. Но это же ненормально - создавать базу вручную перед восстановлением из бекапа, если в бекапе уже есть момент создания БД, не находите?

-C это странная штука — ей надо в качестве -d указать не то куда мы разворачиваем, а какую-нибудь существующую БД к которой мы будем коннектиться чтобы сделать CREATE DATABASE (например template1). Развернута база будет в оригинальное имя из backup'а.

А с ролями как быть? они перенесутся при таком способе выгрузки/загрузки?

Права перенесутся, а пользователей надо все равно заранее создавать.

maxcom ★★★★★
()
Ответ на: комментарий от maxcom

-C это странная штука — ей надо в качестве -d указать не то куда мы разворачиваем, а какую-нибудь существующую БД к которой мы будем коннектиться чтобы сделать CREATE DATABASE (например template1). Развернута база будет в оригинальное имя из backup'а.

о! вот чего я не догнал :) сейчас попробую...

Права перенесутся, а пользователей надо все равно заранее создавать.

хм... Роли создавать? А есть возможность их выгрузить?

bvn13 ★★★★★
() автор топика
Ответ на: комментарий от bvn13

А pg_dumpall пароли пользователей разве не должен вытаскивать ?
//me знает что оффтоп, но не хочет из-за мелочи создавать тему.

dada ★★★★★
()

всегда делал как, бекап: pg_dump -Fc base > ./base.sql.bin

востановление: createdb base; pg_restore -j 8 -d base ./base.sql.bin

косяков не было, роли естественно отдельно...

SandySandy
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.