Добрый День! Помогите пожалуйста разобраться с резервным копированием баз postgres!
при запуске утилиты pg_dump выдает ошибку смотри скрин! при этом никакие монипуляции не помогают! поделитесь опытом кто как боролся с данной ошибкой!
в смысле параметры запуска, которые передаются pg_dump посредством интерфейса командной строки :) например, у меня pg_dump с виндовой машины запускается powershell скриптом, а сам постгрес стоит на linux-сервере, и делает скрипт это с такими "параметрами":
ну и вообще, интересно было бы узнать что-нибудь помимо загадочной ошибки, версия постгреса, версия windows, хоть что-нибудь. А пока выглядит как "у меня ничего не работает. помогите"
(25) doctorov_s,
скрипт - для Windows это к примеру файл "bat" либо "cmd". Расположить его можно где угодно. вызывать либо в ручную либо по расписанию. Расписание можно настроить в планировщике заданий Windows
Попробуйте сделать батник из примера в (20), обратите внимание, что пример рассчитан на архивацию в папку, из которой он будет запущен.
Когда разберетесь с батником-скриптом, изучите Планировщик заданий http://remontka.pro/windows-task-scheduler/ и попробуйте настроить скрипт для регулярного запуска. Убедитесь, что он отрабатывает и создаёт бэкап а не пустышку с ошибками.
А теперь прикиньте, сколько Вы на это потратите времени, поставьте любую программу для архивации или начните делать архивы регулярно вручную, и потратьте его, время )
(35) doctorov_s, у меня очень большие опасения за бэкапы сделанные вами. Надеюсь вы не рабочие базы трогаете.
Вам несколько раз попросили почитать таки мануалы к программам, а вы все свое.
Если банально ввести в гугле или даже в ютубе запрос "postgresql database backup" вам будут сотни, если не тысячи статей. Для особо умных видео даже сняли, не мучайте ни себя ни нас, посмотрите, почитайте и только потом спрашивайте, то что именно не понятно.
(6) doctorov_s, установки, как таковой, не требует, но pg_dump.exe для работы нужны несколько dll, которые установщик постгреса заботливо кладет рядом с ней, например. Также, если не ошибаюсь, для работы виндовой сборке постгреса нужны установленные vcredist (https://www.microsoft.com/ru-RU/download/details.aspx?id=40784).
Скачал установочный файл postgres c 1с сайт, установил, затем потребовалось настроить резервное копирование баз, начал искать как это делается! Нашел, что нужна нужна данная утилита, скачал, положил в папку System32 поробовал запустить а она выдает данную ошибку!
если вы подразумеваете под "1с сайт" https://releases.1c.ru/ то там выложен msi-дистрибутив постгреса с патчами от 1C, который нужно устанавливать. pg_dump вы оттуда отдельно никак не скачаете
(12) perpleks, да действительно я ее не оттуда запускал! Нашел где она действительно должна лежать!
Но теперь возникла другая проблема: Она просит меня ввести, я пытаюсь ввести пароль с клавиатуры, но он не вводится!
не очень понимаю, как вы ее запускаете, если честно. Просто щелкаете на exe? Это консольная утилита, у нее нет графического интерфейса, ее лучше запускать из командной строки (win+R -> cmd -> ok). Вы уже прочитали те ссылки, которые я вам скинул? :) я завидую вашей скорости чтения!
Создаешь задание , сохраняешь его в определенную папку. (Я делал занание на каждую базу, по этому каждый файл отдельная база)
Далее определяешь размещение Куда сувать архивы и как долго там хранить.
Ну и последнее это создание расписания в планировщике.
Все
Единственное еще раз повторюсь что надо галочку CLEAN поставить в ADVANCED - SQL параметры.
Без нее база восстановиться но зайти в нее не получиться, Учетки слетят, и авторизоваться не сможешь.
Еще одна возможная причина появления данной ошибки [0xc000007b] — поврежденные или отсутствующие Net Framework или Microsoft Visual C++ Redistributable.
(27) v3rter, Сейчас стоит вопрос как настроить резервное копирование с помощью скрипта, как его написать, где он размещается и т.д.! Просто я не разу этого не делал, попытка разобраться ни к чему ни привела!
(29) doctorov_s, скрипт разместить можно хоть где. Например скрипт находится в папке D:\scripts\ и имеет расширение .bat. В планировщике задач нужно создать задачу, выбрав файл скрипта, и если это windows 7 или старше, то в свойствах указать "выполнить с наивысшими правами". Там же указываешь когда и как часто выполнять.
А сам скрипт будет примерно такой:
cd "C:\Program Files\PostgreSQL\9.0\bin\"
pg_dump.exe -U postgres -f dbname > D:\backup\dbname_%date%_%time%.sql
Скрипт для восстановления:
pg_restore –d bd_name dbname_%выбратьдату%_%выбратьвремя%.sql
(33) v3rter, В dt не всегда возможно, так как надо пользователей выгонять на время выгрузки.
И еще слышал, но на практике не встречал, что в разных версиях платформах dt по разному формируется и может не загрузиться если выгрузка производилась на другой версии платформы
Значит на скринах попорядку:
1. Указываешь настройки для подключения к базе: Пароль и имя пользователя postgres
2. Выбираешь галкой базу которую надо бекапить
3. Добавляешь папки, для сетевых размещений указываешь сетевое имя и пароль
4. Открываешь Advanced и делаешь все как на скрине 2 (PSQL_BackUp_2.JPG)
5. Настраиваешь расписание.
6. сохраняешь задание в файл.
крохотная утилитка для ручного бэкапа и восстановления. Делал торопясь для людей которым надо в-два клика сделать копию базы и восстановить.
в файле \bin\setting.ini измените пути на свои (ковычки обязательны некогда было с ними разбираться)
https://yadi.sk/d/bwNcVVKUso2LE
@echo off
REM path bin postgres
set PATHPOSTGRESBIN=C:\Program Files\PostgreSQL\9.1.2-1.1C\bin
REM path backup
set PATHPOSTGRESBACKUP=D:\BACKUP\backup_postgressql
REM name dump file
set NAMEPGDUMP=pg_dump.exe
REM user database
set USERDATABASE=postgres
SET PGPASSWORD=password123
REM number day for delete old bachup
set NUMBERDAYBACKUP=20
call:GETNAMES %NUMBERDAYBACKUP%
REM name backup file
set NAMEFILEBACKUP=basename1%DATECUR%.sql
REM name delete backup file
set NAMEDELFILEBACKUP=basename1%DATEMINUS%.sql
call:PRINTPARAM
call:CREATEDUMP
call:DELETEOLDDUMP
goto:eof
:CREATEDUMP
@echo on
"%PATHPOSTGRESBIN%\%NAMEPGDUMP%" -F c -b -v -f "%PATHPOSTGRESBACKUP%\%NAMEFILEBACKUP%" -U %USERDATABASE% -w basename1
goto:eof
:PRINTPARAM
echo path bin postgres %PATHPOSTGRESBIN%
echo name dump file %NAMEPGDUMP%
echo path backup %PATHPOSTGRESBACKUP%
echo name backup file %NAMEFILEBACKUP%
echo user database %USERDATABASE%
echo name delete backup file %NAMEDELFILEBACKUP%
goto:eof
:DELETEOLDDUMP
del /Q "%PATHPOSTGRESBACKUP%\%NAMEDELFILEBACKUP%"
goto:eof
:GETNAMES
set yyyy=
set $tok=1-3
for /f "tokens=1 delims=.:/-, " %%u in ('date /t') do set $d1=%%u
if "%$d1:~0,1%" GTR "9" set $tok=2-4
for /f "tokens=%$tok% delims=.:/-, " %%u in ('date /t') do (
for /f "skip=1 tokens=2-4 delims=/-,()." %%x in ('echo.^|date') do (
set %%x=%%u
set %%y=%%v
set %%z=%%w
set $d1=
set $tok=
set yy=%%w
set dd=%%u
set mm=%%v))
if "%yyyy%"=="" set yyyy=%yy%
if /I %yyyy% LSS 100 set /A yyyy=2000 + 1%yyyy% - 100
set DATECUR=%dd%%mm%%yyyy%
set dayCnt=%~1
if "%dayCnt%"=="" set dayCnt=1
REM Substract your days here
set /A dd=1%dd% - 100 - %dayCnt%
set /A mm=1%mm% - 100
:CHKDAY
if /I %dd% GTR 0 goto DONE
set /A mm=%mm% - 1
if /I %mm% GTR 0 goto ADJUSTDAY
set /A mm=12
set /A yyyy=%yyyy% - 1
:ADJUSTDAY
if %mm%==1 goto SET31
if %mm%==2 goto LEAPCHK
if %mm%==3 goto SET31
if %mm%==4 goto SET30
if %mm%==5 goto SET31
if %mm%==6 goto SET30
if %mm%==7 goto SET31
if %mm%==8 goto SET31
if %mm%==9 goto SET30
if %mm%==10 goto SET31
if %mm%==11 goto SET30
REM ** Month 12 falls through
:SET31
set /A dd=31 + %dd%
goto CHKDAY
:SET30
set /A dd=30 + %dd%
goto CHKDAY
:LEAPCHK
set /A tt=%yyyy% %% 4
if not %tt%==0 goto SET28
set /A tt=%yyyy% %% 100
if not %tt%==0 goto SET29
set /A tt=%yyyy% %% 400
if %tt%==0 goto SET29
:SET28
set /A dd=28 + %dd%
goto CHKDAY
:SET29
set /A dd=29 + %dd%
goto CHKDAY
:DONE
if /I %mm% LSS 10 set mm=0%mm%
if /I %dd% LSS 10 set dd=0%dd%
set DATEMINUS=%dd%%mm%%yyyy%
goto:eof