выгрузка всех баз с pg_dumpall на srv1 с последующим восстановлением на srv2

1. beard1 14.08.19 21:05 Сейчас в теме
Доброго!

Хотелось бы выгрузить все базы данных 1C на
srv1 Win10, PostgreSQL 9.6, 1С 8.3
и загрузить их на
srv2 Win10, PostgreSQL 9.6, 1С 8.3
установка PostgreSQL 9.6 и на srv1 и на srv2 с одного дистрибутива все по умолчанию

делаю в командной строке от имени администратора
на srv1>
pg_dumpall > d:\alldb.dump

на srv2>
psql -f d:\alldb.dump postgres

в ответ частично получаю "кракозябры", из читаемого цитирую

psql:alldb.dump:1: неверная команда \
psql:alldb.dump:2: неверная команда \.!
psql:alldb.dump:4: неверная команда \!
psql:alldb.dump:25: неверная команда \.!
...
psql:alldb.dump:195: ОШИБКА: для символа с последовательностью байт 0x98 из кодировки "WIN1251" нет эквивалента в "UTF8"
psql:testalldb.dump:196: ОШИБКА: ошибка синтаксиса (примерное положение: "")
СТРОКА 1: !9 !& U ! 0 X U !0 Q T...
...
и т.д.


чего не так нажимаю?

спасибо!
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. a.doroshkevich 1470 15.08.19 03:59 Сейчас в теме
Через утилиту restore восстановить на srv2 попробуйте
3. beard1 15.08.19 09:59 Сейчас в теме
(2) не, если я правильно понимаю, pg_restore принимает результат pg_dump, а не pg_dumpall

али не так? не разобрался?
4. a.doroshkevich 1470 15.08.19 10:04 Сейчас в теме
(3)Да, вы правы, это я не увидел что pg_dumpall а не pg_dump
5. a.doroshkevich 1470 15.08.19 10:08 Сейчас в теме
6. beard1 15.08.19 10:46 Сейчас в теме
(5) да, все кодировки, локали один в один.
даже подумалось, что результат дампа зависит от локали терминала )
но нет, не зависит.

нашел засаду )

перемудрил, рассказываю:

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

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

$StartTime=(Get-Date)

pg_dumpall > alldb.dump

$EndTime=(Get-Date)
$SpentTime=$EndTime-$StartTime
$Duratiom='{0:mm} min {0:ss} sec' -f $SpentTime

Write-Host $Duratiom
Показать


и полученный этим скриптиком alldb.dump я пытался залить на srv2...

не понятно по какой причине, в такой обертке pg_dumpall выдает дамп раза в 1,5 больше и не пригодный к восстановлению.

при запуске из классической командной строки все "ОК"

кстати говоря, pg_dump, завернутый также, отрабатывает совершенно нормально.
7. a.doroshkevich 1470 15.08.19 10:52 Сейчас в теме
(6)Утилита pg_dumpall предназначена для записи («выгрузки») всех баз данных кластера Postgres Pro в один файл в формате скрипта. Этот файл содержит команды SQL, так что передав его на вход psql, можно восстановить все базы данных. Для формирования этого файла вызывается pg_dump для каждой базы данных в кластере

Скорее всего как раз каждый раз вызывая pg_dump для очередной базы у вас в вывод в файл дампа попадало время формирования. Но это не точно)
8. beard1 15.08.19 11:01 Сейчас в теме
(7) не, не сходится, я прост запускал скрипт PS с одной строкой
pg_dumpall > alldb.dump

он жеж внутри себя pg_dump зовет, а не выходит наружу каждый раз )

да и наскоро сляпанный cmd
echo Начло: %date% %time%
pg_dumpall > alldb.dump
echo Конец %date% %time%

выдал пригодный дамп для последующей загрузки
9. a.doroshkevich 1470 15.08.19 11:08 Сейчас в теме
в общем опять винда виновата)
10. beard1 15.08.19 12:03 Сейчас в теме
(9) ну что ж так сразу )

ну не срослось у них, у PS и pg_dump

бывает )))
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот