Thread: Удаление мусора в виде BLOBов
Добрый день В результате не очень удачного восстановления БД накопилось много мусора в виде Больших Объектов на которые в пользовательских таблицах нет ссылок. Вопрос идёт о дополнительных 800 Мб в бэкапном файле, что напрягает. Хотелось бы как-то решить эту проблему. Попробовал нечто под названием vacuumlo, но оно ничего не удалило. Куда глянуть? Есть конечно вариант, что я сканирую все пользовательские таблицы в поисках ссылок на BLOBы (я знаю что надо), а затем удаляю все записи из pg_largeobject на которые ссылок в пользовательских таблицах нет (что и должна была сделать программа vacuumlo), но меня гложет вопрос, а не выкину ли я какую-либо системную информацию? С уважением Евгений
This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. ---559023410-1069872185-1118133557=:18464 Content-Type: TEXT/PLAIN; charset=koi8-r; format=flowed Content-Transfer-Encoding: 8BIT On Tue, 7 Jun 2005, Evgeny M. Baldin wrote: > Добрый день > > В результате не очень удачного восстановления БД накопилось много мусора в > виде Больших Объектов на которые в пользовательских таблицах нет ссылок. > > Вопрос идёт о дополнительных 800 Мб в бэкапном файле, что напрягает. Хотелось > бы как-то решить эту проблему. Попробовал нечто под названием vacuumlo, но > оно ничего не удалило. Куда глянуть? > Есть конечно вариант, что я сканирую все пользовательские таблицы в поисках > ссылок на BLOBы (я знаю что надо), а затем удаляю все записи из > pg_largeobject на которые ссылок в пользовательских таблицах нет (что и > должна была сделать программа vacuumlo), но меня гложет вопрос, а не выкину > ли я какую-либо системную информацию? Хмм, именно это и делает vacuumlo. Может это вовсе не мусор :? This is a simple utility that will remove any orphaned large objects out of a PostgreSQL database. An orphaned LO is considered to be any LO whose OID does not appear in any OID data column of the database. > > С уважением > Евгений > > ---------------------------(end of broadcast)--------------------------- > TIP 4: Don't 'kill -9' the postmaster > Regards, Oleg _____________________________________________________________ Oleg Bartunov, sci.researcher, hostmaster of AstroNet, Sternberg Astronomical Institute, Moscow University (Russia) Internet: oleg@sai.msu.su, http://www.sai.msu.su/~megera/ phone: +007(095)939-16-83, +007(095)939-23-83 ---559023410-1069872185-1118133557=:18464--
Добрый день On Tue, 7 Jun 2005, Oleg Bartunov wrote: > Хмм, именно это и делает vacuumlo. Может это вовсе не мусор :? По окончанию работы vacuumlo выдало нечто: всё O'k, удалено ноль объектов. Проблема возникла следующим образом: 1) при восстановлении из дампа после восстановления таблицы pg_largeobjects произошёл сбой и ссылки на большие объекты не поправились. Далее восстановление продолжалось не с нуля, а с той таблицы непосредственно до которой возник сбой. 2) Было обнаружено, что большие объекты по ссылкам достать невозможно и была предпринята попытка восстановить только таблицы где есть ссылки на большие объекты и непосредственно большие объекты с ключиком -c у pg_restore -c --clean Clean (drop) database objects before recreating them. Таблицы сбросились, а большие объекты не обнулились, а просто добавились к тому, что уже было. 3) При восстановлении опять произошёл сбой, но соответствие старых OIDоы и новых было вытащено из логов и поправлено в таблицах в полуавтоматическом режиме. То есть большие объекты в pg_largeobjects это нормальные объекты, которые просто сдублированы и на первую половину просто нет ссылок. Вот такая вот история. Жить, собственно говоря, можно, но размер бэкапа 1.8 Гб напрягает. И 1 Гб то напрягает. С уважением Евгений