Не удается запустить powermill из за ошибки файла авторизации paf error 52 line 17
Отредактировано Monlen (16-11-2009 18:12:12)
Power Mill 8 уроки на русском
Для тех кто не нашёл: PowerMILL 10 (PM10006_RC4_Full_200907)
Отредактировано Посетитель (17-02-2010 00:34:37)
и конечно пилюля :
приветствую всех форумчан! мне нужна помощь. Я работаю на токарном станке ТПА 1200. И мне уже очень надоела встроенная управляющая программа. хочется найти программу, которая работает под управлением windows xp. Кто-нибудь сможет мне в этом помочь или хотя бы дать совет куда мне обратиться?
Если у вас установлен вылеченный ArtCam 2009 то пелюля для PowerMILL 10 работать скорее всего не будет.Если у вас стоит вторая операционка тогда все будет OK.
Если у вас установлен вылеченный ArtCam 2009
ArtCam 2009 и PowerMILL 10, конечно вместе не работают. смотря как запускать и нужно ли вам это? Лично мне нравится ArtCam(время и простота написания УП) , но приходится и PowerMILL использовать, некоторые УП пишутся дольше, но отличаются почти в двое по времени обработки и могое другое.
Скачал PM10006_SP5_Full_201002+delcam_flexlm_new_crk. пробовал ставить отправляет к производителю за новым кодом авторизации, не знаю что делать. помогите ПЛЗ
MAX_Brain
к производителю за новым кодом авторизации - сам ответил на свой вопрос.
Скачивай что угодно и ставь что хочешь, только для себя определи сначала зачем это те надо.
Зачем Арт и зачем Милл? А не работает, ПОТОМУ ЧТО ЧИТАТЬ НАДО.
Для кого это пишут ? flexlm_new_crk - СМОТРЕЛ, если ДА, то ПРОЧЕСТЬ НАДО.
Как устанавливать, что б работало.
\. купил комп, принес домой, а он работает , что делать? - В розетку включи! -О спасиб заработал\
а у рм10 сколько траекторий для 4хосевой?
лабаю в 8.
10 пока не смотрел-работы много
сильно отличается ))))
. это что-то между калькулятором и компьютером, примерно так .
не нашел таблетку на 10
просьба поделиться.
заранее благодарен
так искать и себя на форуме потеряете.
таблетка в посте №8 выше , проверил только что - всё работает, а если вам не видно ссылку , так это всё просто:
выложите ТУТ что не жалко , но и не бред.
или без флудеразма ответь или .
А нужно ещё и правила форума почитать - удачи.
я работаю по металу.
сильно вам завидую,глядя на ваши работы!
покажите вои , очень интерестно что вы делаете на метале
типо этого
Каката ваенка. китайцы на такое не способны.
Отредактировано valb (07-05-2010 10:32:52)
Вопрос по постпроцессору. У меня станок RJ 1212 програмное обеспечение Type3D в ArtCam постпроцессор указывать не надо но вPowerMill нужно .Вопрос какой и где его взять.
А CNC router попрет на этой проге?
А мы в милле венеру фрезернули ) теперь у начальства на столе стоит, если фотку найду выложу
хорошая система, дорогая только
А мы в милле венеру фрезернули
А материал какой?
Машина какая? DMV с Haidenhain 530?
Отредактировано MiRu (10-06-2010 18:00:57)
ВT-1500 Economic, дюралюминий
Сейчас будет бан.Исправляйтесь.
Всем привет! Назрела необходимость освоить PowerMILL , но никак немогу всунуть свой постпроцессор в эту прогу . Станок у меня китаец WOODPECKER HS 1325
Материал стопудово алюминий, станок вероятно maho (не принципиально, главное вектор отклонения достаточный шоб был), знакомая моделька, видел в DELCAME-Москва, есть модификации по круче, с головой и крыльчаткой в виде шляпы. Делалась в софте для моделирования таких вещей ( именно торс тела, статуэтки).
Совет:
Лучше лицензии бывает только лицензия. Те кто серъезно занимается лучше брать софт в опытную эксплуатацию, у оф диллера, (только для предприятий)
дорогое оно зараза. у мя 10ка стоит весч хорошая,
в москве даа они там извращались будь здоров, коллега тогда фотку прислал ))) причем вроде бы говорил что они данную фигню на каком то токарном делали :О
Мне в милле больше всего нравится использование 3D модели заготовки и детали и стратегий обработки дофига,
конкурентом до их уровня еще растиии. жалко только фрезерная (((
травы накурилса? Или тебе 7 лет?
почитав отзывы - повермил и арткам не совместимы, и надо сервера безопасности переключать
гугля случайно наткнулся на описание железа для нормальной работы этих прог (чуть не офигел, игровые сервера меньше требуют )
* Intel® Core™2 Quad Q9550 (2.83GHz, 1333MHz FSB, 12MB L2 Cache, Quad Core) 375W
* 8GB (4 x 2.0GB DIMM) 800MHZ ECC Dual Channel Memory (требует 64-bit O/S)
* 512MB PCIe x16 nVidia Quadro FX 3700 (MRGA15), DualMonitor DVI или VGA Graphics Card
* 2 x 320GB (7,200 rpm) SATA 3.0Gb/s Hard Drive с NCQ и 16MB DataBurst Cache™
* Genuine Windows Vista® Business x64 SP1
Если главным моментом для вас является время вычисления, то два четырехъядерных процессора помогут выполнять вычисления в фоновом и активном режиме на максимальной скорости .
* 2 x Intel® Xeon® X5450 (3.00GHz, 1333MHz, 2x6MB Cache, Quad Core)
* 16GB, 667MHz, ECC Memory (8x2GB)
* 512MB PCIe x16 nVidia Quadro FX 3700 (MRGA15), Dual Monitor DVI или VGA Graphics Card
* 2 x 320GB (7,200 rpm) SATA 3.0Gb/s Hard Drive с NCQ и 16MB DataBurst Cache™
* Genuine Windows Vista® Business x64 SP1 WITH Media
пост 37 там написано, поиск там не умер , и гугл поможет
и зачем писать в разных темах одно и тоже
В пилюле из поста №7 касперский нашел троян-блокиратор.
как импортировать модель в формате igs.
почитав отзывы - повермил и арткам не совместимы, и надо сервера безопасности переключать
гугля случайно наткнулся на описание железа для нормальной работы этих прог (чуть не офигел, игровые сервера меньше требуют )
На самом деле необязательно такую тачку иметь, начиная с 10 Milla идет поддержка многоядерности, по сравнению с 9 Millom 10 работает на порядок быстрее, в 11 версии оптимизировали и добавили стратегии обработки, поменяли интерфейс, а движок вычислений практически неизменился от 10 milla. у меня ноут ACER 9330 (1.6 turion 64x2. 4 gb оперативы , тянет нормально и в фоне и так. ArtCam у меня 2008SP5 у него таблетка отдельная(не flex), вместе работают.
PowerMill2010RC1 (relise candidate) не рекомендую использовать в работе, а только в ознакомительных целях (он же кандидат), иногда не корректно считает траектории (остаются недорезы), не стабильно работает.
там смотря чего делать. на обычные обработки и средней машины хватает а если какую нибудь 5д обработку с ограничением наклона, с маленьким гребешком обработки с замудреным инструментом можно на все выходные оставлять спокойно. хотя у мя оперативы гиг ничегго работаем. но для комфортной работы конечно гига 2 надо.
и кстати в фоновом режиме считается вроде прилично быстрее. только пока считает комп лучше не трогать
но пиратской 10ки рабочей я не видел. представленную тут ставил все работает но построцессировать прогу не хочет. обидно.
но может у мя руки нетуда растут.. больно установка замудреная..
Ну может Unigraphics NX7 поможет? Описание установки есть, все работает отлично, есть встроенный Post Builder для написания собственных постпроцессоров, или правки имеющихся (что проще). Плюс еще и импортировать в NX7 можно очень многое, моделировать, рассчитывать бог знает сколько. все что нужно - в одной программе. Я начинал еще с 4-й версии, и не собираюсь менять. Хотя как-то пробовал Power Mill, но количество задаваемых параметров при обработке детали меня никак не устроило.
Здрасти всем извините за глупый вопрос PowerMill может работать с самодельным станком?
Тихо сам с собою я веду беседу.
Предупреждение Вам.
Если никто не ответил-значит либо вопрос действительно глупый или не кто не может дать 100% ответ.Флудить не надо.
PowerMill может работать с самодельным станком?
Ему все равно какой станок, лишь бы постпроцессор соответсвующий был.
Господа!
Ни у кого не завалялся 4-х или 5-ти осевой постпроцессор Powermill?
Нужен для Mach3, но можно и любой другой.
Желательно с расширением *.pmopt (Postprocessor)
Все, всем спасибо за участие, уже написал сам.
для начала нужно почитать описаловку к установке, типа файла ReadMe.txt или Install.nfo, или что там было вместе с Вашей крякой.
Решил переходить с ArtCAM на PowerMill, пока изучаю новый, для меня софт, но уже впечатляет.
Автор ПО тот-же, но разница - просто поразительная. (стратегии, доработки, многоосевые. )
Если все получится - выложу отчет!
Отредактировано as-mechanic (24-10-2010 00:29:12)
as-mechanic, Я тоже решил подсесть на етот софт но исключительно из за многоосевой обработки, подцепил к станку поворотную ось, а к проге постпроцессор под мач найти не получается , а у тебя как успехи с поиском постпроцессора, нашел или еще нет?
Отредактировано Vektor_Z (25-10-2010 23:44:42)
Есть ли у кого документация по постпроцессорам, как их пишут и т.д., в чем разница между 3х и 4х осевым (то, что в количестве осей, это я понимаю). Несколько раз смотре PowerMill но где взять пост процессор под 4х осевую не знаю, 3 оси из арткама работают через G-code (tap).&?
Написал!
Взял за основу Fanuc.pmopt (идет в комплекте с Delcam Postprocessor), поковырялся денек, и добился чтобы он выдавал текст программы такой, как мне нужно. Чего и Вам советую.
Есть ли у кого документация по постпроцессорам, как их пишут и т.д., в чем разница между 3х и 4х осевым (то, что в количестве осей, это я понимаю). Несколько раз смотре PowerMill но где взять пост процессор под 4х осевую не знаю, 3 оси из арткама работают через G-code (tap).&?
Я тоже не нашел документации, но разобраться можно и самому.
Отредактировано as-mechanic (26-10-2010 18:04:13)
Разобраться то можно, но без документации это дело затянется на долго, без гарантии получения результата. Я сам PowerMill давно не устанавливал, там вместе с дистрибутивом совсем никакой доки, даже на английском нет?
И так, у меня - получилось.
вот первая деталь:
моделировалась в 3DsMax, генерация УП - PowerMill.
Размер изделия:
1200х270х99 мм
Материал - Ольха
И, собственно отчет, как обещал, прошу не придираться - это лично мое мнение:
1. Недостатки программы
- отсутствие встроенного моделировщика.
- плохо (почти никак) реализована возможность ручного ввода контуров, линий (простейших элементов построения) для операций 2D и 2.5D.
- для нормальной работы необходимо ещё иметь и уметь пользоваться PowerShape (вот это точно не входило в мои планы, но может все изменится).
2. Достоинства
- Высочайшая скорость работы с фасетными моделями, по сравнению с MasterCAM и NX (Unigraphics) (сравниваю с тем, с чем приходилось либо столкнуться(MasterCAM) либо работать(NX)). а в многоосевой обработке - ИМХО -лидер.
- Ввод исходных данных более понятен, но и более прост чем в NX.
- Весьма гибкая программа в плане работы со стратегиями 3D обработки.
- Очень понравилась возможность обрезки сгенерированной УП (например не обрабатывать какой либо участок поверхности)
- Впечатлило построение границ доработки, как по диаметрам фрез(указываются диаметры первой и второй фрезы и все - контура готовы), так и по модели материала (генерируется модель оставшегося материала).
- При переходе с ArtCAM явно заметно повышение качества обработанной поверхности, очень хорошо реализована стратегия 3D смещения.
- Очень понравилась стратегия однопроходной доработки углов, особенно пространственных.
3. Просто понравилось.
- После постпроцессирования корректно выводятся дуги (G2, G3) во всех плоскостях (G17, G18, G19) автоматом.
- В стратегии 3D Выборки плавность врезания между проходами, переход от прохода к проходу идет по дуге, за счет этого появляется, эдакая, танцевальная плавность в движениях станка.
- Скругление траектории в переходах - тоже красиво, при больших значениях радиуса скругления.
- Возможность использования в качестве заготовки отдельную модель (скажем ступенчатую, как для для детали на фото)
Анатолий, чтоб голову не ломать, достаточно посмотреть готовый G-код. там скорости идут после команды F
я не силен в g кодах, но как я понимаю там указан маршрут с командой f. а как определить, что маршрут по дуге и маршрут по прямой?
Если стандартный ISO-вский код, то по прямой -G1 команда, по радиусу G2,G3 в зависимости от направления. Открываешь в обычном блокноте готовый файл, в строку поиска букву F и смотришь где какие скорости
Анатолий,
Читайте документацию по g-кодам. Все основные понятия достаточно просты и в интернете море информации на эту тему.
При визуализации в power mill фреза перемещается по точкам (кнопка "Показать точки" чтобы их увидеть). Соответственно если имеется длинный отрезок с начальной и конечной точкой, то вы увидите скачок от точки к точке. Если точек будет много, то будет казаться что он движется медленно и плавно.
Скорости движения инструмента при работе на станке и визуализация никак не связаны.
На станке есть понятия режимов точного останова (G61) и постоянной скорости (G64).В режиме точного останова, станок отрабатывает каждый кадр выполняя полный цикл ускорения и замедления двигателей. Т.е. если будет движение по прямой запрограммированной не двумя, а к примеру четырьмя точками, то инструмент будет двигаться по этой прямой полностью останавливаясь в каждой этой точке и заново ускоряясь. В режиме постоянной скорости станок будет поддерживать постоянную заданную вами скорость перемещения на всем пути. По умолчанию всегда активна постоянная скорость.
В документации это все есть. Настоятельно рекомендую ознакомиться с g-кодами.
Дмитрий, в первой части по визуализации я догадался почему так происходит, спасибо за подтверждение моей теории. я листал литературу с G- кодами, но ничего там не понятно. поэтому желание лезть туда пропало. да и и где найти внятные видео уроки по этим кодам? что интересно, я пару месяцев назад самостоятельно осваивал спрут кам, и уже стал понимать что к чему, но постоянно выскакивала какаято ошибка, очень мешала, даже не успевал сохраняться. как вдруг увидел ваши уроки в пауэрмиле. мне стало настолько понятно, настолько разжовано, что решил скачать эту прогу пару дней назад. сегодня благодаря вам я даже сделал обработку двух деталей. если так пойдет , то останется развивать разные способы настройки и нюансы программы. сейчас насохраняю эти обработки с постами для разных станков и пойду пробовать подбирать под свой. купил станок, надо осваивать.
В руссифицированных версиях (даже той, которую пытается поствить Ivan и которые тут не обсуждаются ) есть отличный русский хелп. Так что с отдельным мануалом можно не заморачиваться. Все версии, начиная с 8.0. прекрасно встают на Win7
ах ты ленивый редуктор, гугли сам чего ты людей по пустякам напрягаешь
Какой же ты образованный. Носом в грязь тыкать людей, он же от счастья обратился за помощью, а ты как индюк ему ответил )ах ты ленивый редуктор, гугли сам чего ты людей по пустякам напрягаешь
всем привет.устанавил POWER MILL 2012 SP4. у меня XP SP3.нормально запускается.ощибок не выдает.модель открывается,выбираю заготовку,фрезу,стратегию обработки потом ВЫЧИСЛЕНИЕ и все.и ничего не происходит.как будто программа виснет и все.(фото прилагаю).
посоветуйте,может кто сталкивался.
спасибо.
Прикрепленные изображения
Если вам все равно, где вы находитесь, значит, вы не заблудились Скорее всего умная прога вежливо намекает на некоторые промахи со стороны пользователя.А вообще - надо быть скромнее и использовать более проверенные версии.Все замечания и нравоучения носят исключительно юмористический характер.Ни коим образом не затрагивают честь и достоинство собеседника облезлого Кота с форточки.
Кто людям помогает - тот тратит время зря.
Хорошими делами прославиться нельзя.
версия вроде сказали проверенная.ощибку исправил. после поправки УП создается нормально.теперь не могу найти как сохранить УП. желателько в tap.
Прикрепленные изображения
Если вам все равно, где вы находитесь, значит, вы не заблудились А воопще Power mill cохраняет УП (tap) под китайский станок 3 кордината,управление пульт ?Или отдельно надо постпроцессор сделать?
Если вам все равно, где вы находитесь, значит, вы не заблудились
Флешка должна стоять в USB
разобрался.УП тоже проверил на станке.вроде все ок.только вот в программе не могу модель в нижний левый угол ставить.всегда открывает по середине загатовки и оттуда же начинает резать.всем привет.устанавил POWER MILL 2012 SP4. у меня XP SP3.нормально запускается.ощибок не выдает.модель открывается,выбираю заготовку,фрезу,стратегию обработки потом ВЫЧИСЛЕНИЕ и все.и ничего не происходит.как будто программа виснет и все.(фото прилагаю).
посоветуйте,может кто сталкивался.
спасибо.
Если вам все равно, где вы находитесь, значит, вы не заблудились
только вот в программе не могу модель в нижний левый угол ставить
Когда выберете надо будет загрузить. Если выбрали PowerMill 2010 RC1 или PowerMILL 10.0.06 , то после установки у многих появляется ошибка "PAF. ". Это если Вы создали не правильно "Server" или "Переменные среды". Как создать, "Server" , там всё разложено по картинкам. С созданием, "Переменные среды", не каждый поймёт. Я попробую Вам с этим помочь. Начнём:
На рабочем столе компа ярлык "компьютер", на него нажимаем с начало левую кнопку мышки, а потом правую. На появившемся окне нажимаем "свойства". Выходит вот это окно
На этом нажимаем "изменить параметры". Появляется вот это
На нём нажимаем "дополнительно", выходит вот это окно
нажимаем "переменные среды", появляется вот это окно
На этом окне мы создаём "переменные среды пользователя" и "системные переменные".
С начало нажимаем "создать. " на "переменные среды пользователя", появляется вот это
В этом окне на первой строке записываем всё как на картинке, без пробелов. На второй пишем 1700@?, знак вопроса это имя вашего компьютера. На примере в этом окне я написал имя master. Всё пишем без пробелов и нажимаем "ок".
Потом создаём "системную переменную". Делаем всё тоже самое как на окне, что выше.
Перезагружаем комп и запускаем программу. Должно получится.
Как устанавливать PowerMill_2012_sp4 в папках написано всё подробно, главное внимательно читать.
И ещё, "Когда устанавливаете прогу и сервер, всё открывайте от имени администратора, особенно касается у кого Windows 7 64 bit"
Хочу поделиться с вами моим первым успешным опытом восстановления полной работоспособности базы данных Postgres. С СУБД Postgres я познакомился пол года назад, до этого опыта администрирования баз данных у меня не было совсем.
Я работаю полу-DevOps инженером в крупной IT-компании. Наша компания занимается разработкой программного обеспечения для высоконагруженных сервисов, я же отвечаю за работоспособность, сопровождение и деплой. Передо мной поставили стандартную задачу: обновить приложение на одном сервере. Приложение написано на Django, во время обновления выполняются миграции (изменение структуры базы данных), и перед этим процессом мы снимаем полный дамп базы данных через стандартную программу pg_dump на всякий случай.
Во время снятия дампа возникла непредвиденная ошибка (версия Postgres – 9.5):
Ошибка «invalid page in block» говорит о проблемах на уровне файловой системы, что очень нехорошо. На различных форумах предлагали сделать FULL VACUUM с опцией zero_damaged_pages для решения данной проблемы. Что же, попрробеум…
Подготовка к восстановлению
ВНИМАНИЕ! Обязательно сделайте резервную копию Postgres перед любой попыткой восстановить базу данных. Если у вас виртуальная машина, остановите базу данных и сделайте снепшот. Если нет возможности сделать снепшот, остановите базу и скопируйте содержимое каталога Postgres (включая wal-файлы) в надёжное место. Главное в нашем деле – не сделать хуже. Прочтите это.
Поскольку в целом база у меня работала, я ограничился обычным дампом базы данных, но исключил таблицу с повреждёнными данными (опция -T, --exclude-table=TABLE в pg_dump).
Сервер был физическим, снять снепшот было невозможно. Бекап снят, двигаемся дальше.
Проверка файловой системы
В моём случае файловая система с базой данных была примонтирована в «/srv» и тип был ext4.
Останавливаем базу данных: systemctl stop [email protected] и проверяем, что файловая система никем не используется и её можно отмонтировать с помощью команды lsof:
lsof +D /srv
Мне пришлось ещё остановить базу данных redis, так как она тоже исползовала "/srv". Далее я отмонтировал /srv (umount).
Проверка файловой системы была выполнена с помощью утилиты e2fsck с ключиком -f (Force checking even if filesystem is marked clean):
Далее с помощью утилиты dumpe2fs (sudo dumpe2fs /dev/mapper/gu2--sys-srv | grep checked) можно убедиться, что проверка действительно была произведена:
e2fsck говорит, что проблем на уровне файловой системы ext4 не найдено, а это значит, что можно продолжать попытки восстановить базу данных, а точнее вернуться к vacuum full (само собой, необходимо примонтирвоать файловую систему обратно и запустить базу данных).
Если у вас сервер физический, то обязательно проверьте состояние дисков (через smartctl -a /dev/XXX) либо RAID-контроллера, чтобы убедиться, что проблема не на аппаратном уровне. В моём случае RAID оказался «железный», поэтому я попросил местного админа проверить состояние RAID (сервер был в нескольких сотнях километров от меня). Он сказал, что ошибок нет, а это значит, что мы точно можем начать восстановление.
Попытка 1: zero_damaged_pages
Подключаемся к базе через psql аккаунтом, обладающим правами суперпользователя. Нам нужен именно суперпользователь, т.к. опцию zero_damaged_pages может менять только он. В моём случае это postgres:
psql -h 127.0.0.1 -U postgres -s [database_name]
Опция zero_damaged_pages нужна для того, чтобы проигнорировать ошибки чтения (с сайта postgrespro):
При выявлении повреждённого заголовка страницы Postgres Pro обычно сообщает об ошибке и прерывает текущую транзакцию. Если параметр zero_damaged_pages включён, вместо этого система выдаёт предупреждение, обнуляет повреждённую страницу в памяти и продолжает обработку. Это поведение разрушает данные, а именно все строки в повреждённой странице.
Включаем опцию и пробуем делать full vacuum таблицы:
К сожалению, неудача.
Мы столкнулись с аналогичной ошибкой:
pg_toast – механизм хранения «длинных данных» в Postgres, если они не помещаются в одну страницу (по умолчанию 8кб).
Попытка 2: reindex
Первый совет из гугла не помог. После нескольких минут поиска я нашёл второй совет – сделать reindex повреждённой таблицы. Этот совет я встречал во многих местах, но он не внушал доверия. Сделаем reindex:
reindex завершился без проблем.
Однако это не помогло, VACUUM FULL аварийно завершался с аналогичной ошибкой. Поскольку я привык к неудачам, я стал искать советов в интернете дальше и наткнулся на довольно интересную статью.
Попытка 3: SELECT, LIMIT, OFFSET
В статье выше предлагали посмотреть таблицу построчно и удалить проблемные данные. Для начала необходимо было просмотреть все строки:
В моём случае таблица содержала 1 628 991 строк! По-хорошему необходимо было позаботиться о партициирвоании данных, но это тема для отдельного обсуждения. Была суббота, я запустил вот эту команду в tmux и пошёл спать:
К утру я решил проверить, как обстоят дела. К моему удивлению, я обнаружил, что за 20 часов было просканировано только 2% данных! Ждать 50 дней я не хотел. Очередной полный провал.
Но я не стал сдаваться. Мне стало интересно, почему же сканирование шло так долго. Из документации (опять на postgrespro) я узнал:
OFFSET указывает пропустить указанное число строк, прежде чем начать выдавать строки.
Если указано и OFFSET, и LIMIT, сначала система пропускает OFFSET строк, а затем начинает подсчитывать строки для ограничения LIMIT.
Применяя LIMIT, важно использовать также предложение ORDER BY, чтобы строки результата выдавались в определённом порядке. Иначе будут возвращаться непредсказуемые подмножества строк.
Очевидно, что вышенаписанная команда была ошибочной: во-первых, не было order by, результат мог получиться ошибочным. Во-вторых, Postgres сначала должен был просканировать и пропустить OFFSET-строк, и с возрастанием OFFSET производительность снижалась бы ещё сильнее.
Попытка 4: снять дамп в текстовом виде
Далее мне в голову пришла, казалось бы, гениальная идея: снять дамп в текстовом виде и проанализировать последнюю записанную строку.
Но для начала, ознакомимся со структурой таблицы ws_log_smevlog:
В нашем случае у нас есть столбец «id», который содержал уникальный идентификатор (счётчик) строки. План был такой:
- Начинаем снимать дамп в текстовом виде (в виде sql-команд)
- В определённый момент времени снятия дампа бы прервалось из-за ошибки, но тектовый файл всё равно сохранился бы на диске
- Смотрим конец текстового файла, тем самым мы находим идентификатор (id) последней строки, которая снялась успешно
Снятия дампа, как и ожидалось, прервался с той же самой ошибкой:
Далее через tail я просмотрел конец дампа (tail -5 ./my_dump.dump) обнаружил, что дамп прервался на строке с id 186 525. «Значит, проблема в строке с id 186 526, она битая, её и надо удалить!» – подумал я. Но, сделав запрос в базу данных:
«select * from ws_log_smevlog where обнаружилось, что с этой строкой всё нормально… Строки с индексами 186 530 — 186 540 тоже работали без проблем. Очередная «гениальная идея» провалилась. Позже я понял, почему так произошло: при удалении\изменении данных из таблицы они не удаляются физически, а помечаются как «мёртвые кортежи», далее приходит autovacuum и помечает эти строки удалёнными и разрешает использовать эти строки повторно. Для понимания, если данные в таблице меняются и включён autovacuum, то они не хранятся последовательно.
Попытка 5: SELECT, FROM, WHERE > Неудачи делают нас сильнее. Не стоит никогда сдаваться, нужно идти до конца и верить в себя и свои возможности. Поэтому я решил попробовать ешё один вариант: просто просмотреть все записи в базе данных по одному. Зная структуру моей таблицы (см. выше), у нас есть поле id, которое является уникальным (первичным ключом). В таблице у нас 1 628 991 строк и id идут по порядку, а это значит, что мы можем просто перербрать их по одному:
Если кто не понимает, команда работает следующим образом: просматривает построчно таблицу и отправляет stdout в /dev/null, но если команда SELECT проваливается, то выводится текст ошибки (stderr отправляется в консоль) и выводится строка, содержащая ошибку (благодаря ||, которая означает, что у select возникли проблемы (код возврата команды не 0)).
Мне повезло, у меня были созданы индексы по полю id:
А это значит, что нахождение строки с нужным id не должен занимать много времени. В теории должно сработать. Что же, запускаем команду в tmux и идём спать.
К утру я обнаружил, что просмотрено около 90 000 записей, что составляет чуть более 5%. Отличный результат, если сравнивать с предыдущим способом (2%)! Но ждать 20 дней не хотелось…
Попытка 6: SELECT, FROM, WHERE id >= and id <
У заказчика под БД был выделен отличный сервер: двухпроцессорный Intel Xeon E5-2697 v2, в нашем расположении было целых 48 потоков! Нагрузка на сервере была средняя, мы без особых проблем могли забрать около 20-ти потоков. Оперативной памяти тоже было достаточно: аж 384 гигабайт!
Поэтому команду нужно было распараллелить:
Тут можно было написать красивый и элегантный скрипт, но я выбрал наиболее быстрый способ распараллеливания: разбить диапазон 0-1628991 вручную на интервалы по 100 000 записей и запустить отдельно 16 команд вида:
Но это не всё. По идее, подключение к базе данных тоже отнимает какое-то время и системные ресурсы. Подключать 1 628 991 было не очень разумно, согласитесь. Поэтому давайте при одном подключении извлекать 1000 строк вместо одной. В итоге команда преобразилоась в это:
Открываем 16 окон в сессии tmux и запускаем команды:
Через день я получил первые результаты! А именно (значения XXX и ZZZ уже не сохранились):
Это значит, что у нас три строки содержат ошибку. id первой и второй проблемной записи находились между 829 000 и 830 000, id третьей – между 146 000 и 147 000. Далее нам предстояло просто найти точное значение id проблемных записей. Для этого просматриваем наш диапазон с проблемными записями с шагом 1 и идентифицируем id:
Счастливый финал
Мы нашли проблемные строки. Заходим в базу через psql и пробуем их удалить:
К моему удивлению, записи удалились без каких-либо проблем даже без опции zero_damaged_pages.
Затем я подключился к базе, сделал VACUUM FULL (думаю делать было необязательно), и, наконец, успешно снял бекап с помощью pg_dump. Дамп снялся без каких либо ошибок! Проблему удалось решить таким вот тупейшим способом. Радости не было предела, после стольких неудач удалось найти решение!
Благодарности и заключение
Вот такой получился мой первый опыт восстановления реальной базы данных Postgres. Этот опыт я запомню надолго.
Ну и напоследок, хотел бы сказать спасибо компании PostgresPro за переведённую документацию на русский язык и за полностью бесплатные online-курсы, которые очень сильно помогли во время анализа проблемы.
Читайте также: