| 
    
            
         
         | 
    
    
  | 
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/E1TrwXG-0005p0-Vb@wrigleys.postgresql.org BUG #6726: pg_dump - ftell mismatch when using -Fc and split https://www.postgresql.org/message-id/E1SowQw-0003mq-SL@wrigleys.postgresql.org 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) отлично, написал на stupidboxx@mail.ru с ****oleg@gmail.com     
         | 
|||
| 
    61
    
        2dolist    
     25.10.17 
            ✎
    09:15 
 | 
         
        отблагодарил     
         | 
|||
| 
    62
    
        novichok79    
     25.10.17 
            ✎
    10:02 
 | 
         
        (61) получил, спасибо, очень приятно.     
         | 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |