|
PostgreSQL 9.4 - ошибка при выполнении pg_dump -- ftell used | ☑ | ||
---|---|---|---|---|
0
2dolist
19.10.17
✎
10:20
|
Добрый день. При выполнении pg_dump.exe начала возникать ошибка:
pg_dump: [cumsom archiver] WARNING: ftell mismatch with expected position -- ftell used. Архивы выполняются вызовом батника с кодом: cd "путь к pg_dump.exe" .\pg_dump.exe -Fc -h АдресСервера -U юзер постгреса -c ut11_3test > АдресДляДампа Обнаружил, что некоторое время штампуются невосстанавливаемые архивы, хотя до этого при настройке они работали отменно. При попытке восстановить файл дампа через pg_restore.exe выдаётся ошибка: pg_restore: [archiver] input file does not appear to be a valid archive Всё, что нашёл по ошибке ftell это то, что проблема возникала на 8-й версии и советуют обновиться до 9. У нас 9.4 и до недавнего времени всё работало. |
|||
1
novichok79
19.10.17
✎
10:27
|
может быть обновить postgre до 9.6? в своих логах постгри чего-нибудь пишет?
|
|||
2
novichok79
19.10.17
✎
10:31
|
еще пишут что если в команде используется pipe notation (очевидно вертикальная палка), то ошибка появляется на Windows, в Linux'ах все норм.
|
|||
3
2dolist
19.10.17
✎
10:35
|
ошибок в логах по этому поводу нет. pipe notation-ов тоже не используем
|
|||
4
novichok79
19.10.17
✎
10:36
|
а если вместо этого
pg_dump.exe -Fc -h АдресСервера -U юзер постгреса -c ut11_3test > АдресДляДампа использовать pg_dump.exe -Fc -h АдресСервера -U юзер постгреса -c ut11_3test -f АдресДляДампа ? места на диске для дампов хватает? |
|||
5
novichok79
19.10.17
✎
10:37
|
какой размер дамп файла кстати? у меня 20 гигов восстанавливается нормально из кастомного формата postgre.
|
|||
6
2dolist
19.10.17
✎
10:37
|
места хватает, -f регается, что нельзя типа
размер дампа небольшой - порядка 2 гигов |
|||
7
novichok79
19.10.17
✎
10:39
|
ну вот с stackoverflow, тоже что и я посоветовал
I found several bug reports indicating that pg_dump has problems writing to a pipe on Windows: BUG #7794: pg_dump: errors when using pipes/streams https://www.postgresql.org/message-id/[email protected] BUG #6726: pg_dump - ftell mismatch when using -Fc and split https://www.postgresql.org/message-id/[email protected] Instead of writing to stdout and redirecting to a file, try using -f specify the output file: pg_dump -Fc -U "username" -w "dbname" -f "filename".dmp |
|||
8
novichok79
19.10.17
✎
10:40
|
(6) а что пишет?
может быть попробовать выгружать в другой формат? |
|||
9
2dolist
19.10.17
✎
10:41
|
если -f, то пишет, что too many command-line arguements
|
|||
10
2dolist
19.10.17
✎
10:41
|
(8) форматы для pg_restore - это Fc (какая-то своя кодировка уже слегка заархивированная) и Fd (дистрибутив). Пробовал и то, и то - одинаково.
|
|||
11
novichok79
19.10.17
✎
10:44
|
(10) попробуй параметры писать с двумя тире,
у меня для дампов прописано следующее в батнике REM Создание резервной копии CALL "%PGBIN%\pg_dump.exe" --format=custom --compress=9 --jobs=%THREADSAMOUNT% --verbose --file=%DUMPPATH% 2> %LOGPATH% работает как часы уже год. |
|||
12
novichok79
19.10.17
✎
10:44
|
Fc, это ведь тоже самое что и --format=custom, по-моему.
|
|||
13
2dolist
19.10.17
✎
10:46
|
ага, идентично
|
|||
14
novichok79
19.10.17
✎
10:48
|
(13) результат такой же?
|
|||
15
2dolist
19.10.17
✎
10:48
|
после dumppath 2 это что?
|
|||
16
2dolist
19.10.17
✎
10:52
|
а где у тебя указано с какой базы делать дамп?
|
|||
17
2dolist
19.10.17
✎
10:53
|
ругается на CALL
|
|||
18
novichok79
19.10.17
✎
10:54
|
(15) это чтобы stdout шел в лог файл
(16) в переменной среды (17) потому что это вызов из bat файла |
|||
19
novichok79
19.10.17
✎
10:57
|
я бы делал так
pg_dump.exe --dbname=baza --format=custom --compress=9 --jobs=4 --host=superkomputer --port=5432 --username=postgres --password --verbose --file="C:\В гостях у сказки\дамп_2017_10_19.backup" 2> "C:\В гостях у сказки\дамп_2017_10_19.log" |
|||
20
novichok79
19.10.17
✎
10:59
|
батник примерно такой
CLS ECHO OFF REM Установка кодовой страницы Win1251 CHCP 1251 REM Установка переменных окружения REM Для сервера поменять переменные SET PGBIN=C:\Program Files\PostgresPro 1C\9.4\bin\ SET PGHOST=...... SET PGPORT=...... SET PGUSER=...... SET PGPASSWORD=..... SET PGDATABASE=%1 IF '%PGDATABASE%'=='' (ECHO The database name is not specified & GOTO End) REM Установка путей копирования REM Для сервера установить D:\Backup\ SET STAGINGDIRECTORY=%TEMP% SET BACKUPDIRECTORY=D:\Backup\ REM Формирование имени файла резервной копии и файла-отчета SET DATETIME=%DATE:~6,4%-%DATE:~3,2%-%DATE:~0,2% %TIME:~0,2%-%TIME:~3,2%-%TIME:~6,2% SET DUMPFILE=%PGDATABASE%_%DATETIME%.backup SET LOGFILE=%PGDATABASE%_%DATETIME%.log IF NOT EXIST "%STAGINGDIRECTORY%" MD "%STAGINGDIRECTORY%" IF NOT EXIST "%BACKUPDIRECTORY%" MD "%BACKUPDIRECTORY%" REM Смена диска и переход во временную папку CD /d %STAGINGDIRECTORY% SET DUMPPATH="%STAGINGDIRECTORY%\%DUMPFILE%" SET LOGPATH="%STAGINGDIRECTORY%\%LOGFILE%" SET FINALDUMPPATH="%BACKUPDIRECTORY%\%DUMPFILE%" SET FINALLOGPATH="%BACKUPDIRECTORY%\%LOGFILE%" REM Создание резервной копии CALL "%PGBIN%\pg_dump.exe" --format=custom --compress=9 --jobs=%THREADSAMOUNT% --verbose --file=%DUMPPATH% 2> %LOGPATH% REM Анализ кода завершения IF NOT %ERRORLEVEL%==0 GOTO Error GOTO Successfull REM В случае ошибки удаляется поврежденная резервная копия и делается соответствующая запись в журнале :Error DEL %DUMPPATH% ECHO %DATETIME%: Errors when creating a database backup %DUMPFILE%. >> %LOGPATH% ECHO %DATETIME%: See the report %LOGFILE%. >> %LOGPATH% GOTO End REM В случае удачного резервного копирования просто делается запись в журнал :Successfull ECHO %DATETIME%: The backup %DUMPFILE% has been successfully created. >> %LOGPATH% ECHO F| XCOPY %DUMPPATH% %FINALDUMPPATH% /I /H /R /Y ECHO F| XCOPY %LOGPATH% %FINALLOGPATH% /I /H /R /Y DEL %DUMPPATH% DEL %LOGPATH% GOTO End REM Выходим из батника :End |
|||
21
novichok79
19.10.17
✎
11:03
|
SET THREADSAMOUNT=%2
не забудь установить переменную, иначе руганется забыл дописать когда пароли затирал |
|||
22
2dolist
19.10.17
✎
11:07
|
решили пойти методом деконструкции, так сказать. Начать с самого простого.
в общем, ошибка в формате - если убрать формат Fc, то дамп делается (правда, в формате .sql). |
|||
23
2dolist
19.10.17
✎
11:09
|
не совсем понятно как лучше поступить и почему внезапно начал тупить формат custom и distributive
|
|||
24
arsik
гуру
19.10.17
✎
11:10
|
(23) Антивирь?
|
|||
25
novichok79
19.10.17
✎
11:19
|
(22) я использовал длинные параметры, именно по той причине, что сначала Fc у меня тоже тупил.
|
|||
26
2dolist
19.10.17
✎
11:21
|
(20) нехило! курить надо это. А какая версия postgre?
|
|||
27
2dolist
19.10.17
✎
11:23
|
ещё проблема что если запускать батником, а ни из командной строки, то создаётся файл 0 размера. Т.е. по какой-то причине не пишется. Блин, тут права чтоль поменялись...
|
|||
28
novichok79
19.10.17
✎
11:23
|
(26) я писал сам. чего там "курить"? все просто - делается дамп во временный каталог на системном SSD диске сервера, потом полученный файл копируется на диск для дампов, вместе с логом.
|
|||
29
novichok79
19.10.17
✎
11:25
|
(26) 9.4.10 для Windows x64 с сайта postgrespro.ru
|
|||
30
novichok79
19.10.17
✎
11:27
|
||||
31
2dolist
19.10.17
✎
11:30
|
(28) у нас 9.4.2-1С
|
|||
32
novichok79
19.10.17
✎
11:36
|
(31) отлично, я планирую с обновлением платформы на 8.3.10 поставить 9.6, с сайта 1С.
|
|||
33
2dolist
19.10.17
✎
11:45
|
пока норм работает платформа - уже обновили
|
|||
34
2dolist
19.10.17
✎
11:57
|
(32) а если просто у тебя запустить строку
|
|||
35
2dolist
19.10.17
✎
11:58
|
%PGBIN%\pg_dump.exe --format=custom --compress=9 --file=%DUMPPATH% > %LOGPATH%
отработает? |
|||
36
2dolist
19.10.17
✎
11:59
|
ну, вручную заданными параметрами естественно. Я просто хочу узнать, у тебя --format=custom отрабатывает или нет без всяких обозначений переменных среды.
|
|||
37
novichok79
19.10.17
✎
12:06
|
(35) да, отработает. я уже писал выше, как я оформил бы вызов pg_dump без указания переменных среды.
|
|||
38
novichok79
19.10.17
✎
12:07
|
(36) тоже писал: батник работает уже год.
|
|||
39
novichok79
19.10.17
✎
12:09
|
(34) просто запусти батник, который я тебе дал, и проверь сам.
|
|||
40
ansh15
19.10.17
✎
12:11
|
(19) --jobs хороший параметр, но его можно использовать только с форматом вывода directory, то есть --format=directory.
https://postgrespro.ru/docs/postgrespro/9.6/app-pgdump (0)Попробуй, когда-то проверял в PowerShell & 'C:\Program Files\PostgresPro 1C\9.6\bin\pg_dump.exe' "-Fc" "-b" "-fC:\pgsql\bench.bak" "bench" & 'C:\Program Files\PostgresPro 1C\9.6\bin\pg_restore.exe' "-dbench" "C:\pgsql\bench.bak" База bench должна быть вновь созданной. Так работает. |
|||
41
2dolist
19.10.17
✎
12:22
|
а дамп, который в формате sql не удаётся восстановить через psql.
Вообще какая-то засада и нихрена не понятно. Почему fc перестал работать. Попробовали выгрузить в архив с форматом tar, он пгрестором не цепляется - говорит формат не тот. |
|||
42
2dolist
19.10.17
✎
12:23
|
хотя, на винде мб тар и не пойдёт
|
|||
43
novichok79
19.10.17
✎
12:25
|
(40) я да запамятовал, что он только при восстановлении может дать газу. а бэкап только без него делается, если в кастом формате.
(41) просто вызови pg_dump с ключом --format=custom, дальнейшеий диалог не имеет смысла, пока ты этого не сделаешь. |
|||
44
ansh15
19.10.17
✎
12:27
|
Вот и ответ
"I suspect that what's happening is that stdout isn't getting put into binary mode, so that Microsoft's CR/NL translation corrupts the data. If that's true, though, the resulting backup file should be corrupt" Отсюда https://www.postgresql.org/message-id/23854.1446474615%40sss.pgh.pa.us |
|||
45
2dolist
19.10.17
✎
12:39
|
(43) просто вызови pg_dump с ключом --format=custom
так изначально так и было. -Fc это прямой аналог --format custom. он выдаёт pg_dump: [cumsom archiver] WARNING: ftell mismatch with expected position -- ftell used. |
|||
46
Йохохо
19.10.17
✎
12:45
|
(45) нельзя в произвольном порядке комбинировать старую и новую нотации, перепиши все в новой с учетом (44)
|
|||
47
2dolist
19.10.17
✎
13:21
|
(46) у меня не работают обозначения через --format
попробовал запустить "адрес\pg_dump.exe" --format=custom --verbose --file="куда ставить" не отработало - ругается на format=custom - неопределенная лексема |
|||
48
2dolist
19.10.17
✎
13:23
|
(46) в 44 просто сказано не использовать |
И нак не используем |
|||
49
2dolist
19.10.17
✎
13:51
|
Нет больше идей как оживить custom archiver? Уже появляется желание снести и переустановить просто постгрешку.
|
|||
50
novichok79
19.10.17
✎
15:12
|
(49) у меня все норм, покажи полностью что пишешь
|
|||
51
2dolist
19.10.17
✎
15:16
|
В общем, в командной строке нормально отрабатывает таким образом:
cd "адрес\PostgreSQL\9.4.2-1.1C\bin" .\pg_dump.exe --host АдресХоста --port 5432 --username "postgres" --пасс --format custom --verbose --file "АдресКудаСкидыватьАрхивчик" "ut11_3test" Осталось запустить это в батнике, а то просто так не отрабатывает |
|||
52
novichok79
19.10.17
✎
15:31
|
(51) я еще равно обычно после параметров ставлю. но если так работает, то норм.
|
|||
53
2dolist
19.10.17
✎
15:35
|
(52) сейчас пробую твой батничек развернуть. Вопрос есть. А Зачем нам нужна промежуточная директория, из которой потом всё равно перекачиваем в конечную?
|
|||
54
novichok79
19.10.17
✎
15:46
|
(53) промежуточная директория на SSD диске, а конечная - на обычном HDD. это нужно для скорости.
|
|||
55
2dolist
19.10.17
✎
15:52
|
(54) хитро.
Не взлетает что-то батничек. Подозреваю, что с кодировкой дело. выполнение команды chcp уже не отрабатывает даже. |
|||
56
2dolist
19.10.17
✎
16:18
|
Спасибо большое novichok79! взял за основу батник из (20), переписал его и всё взлетело.
Но такой момент. Многопоточная архивация недоступна для формата custom. Пришлось её отменить. |
|||
57
novichok79
20.10.17
✎
08:39
|
(56) был рад помочь.
|
|||
58
novichok79
20.10.17
✎
08:41
|
(57) был бы еще более рад, если бы мне на яндекс-кошелек упало чуть-чуть денежек ))))
|
|||
59
2dolist
23.10.17
✎
10:36
|
(58) так данные нужны чтоб скинуть!
|
|||
60
novichok79
23.10.17
✎
15:54
|
(59) отлично, написал на [email protected] с ****[email protected]
|
|||
61
2dolist
25.10.17
✎
09:15
|
отблагодарил
|
|||
62
novichok79
25.10.17
✎
10:02
|
(61) получил, спасибо, очень приятно.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |