Thread: Удаление мусора в виде BLOBов

Удаление мусора в виде BLOBов

From
"Evgeny M. Baldin"
Date:
Добрый день

 В результате не очень удачного восстановления БД накопилось много мусора
в виде Больших Объектов на которые в пользовательских таблицах нет ссылок.

 Вопрос идёт о дополнительных 800 Мб в бэкапном файле, что напрягает.
Хотелось бы как-то решить эту проблему. Попробовал нечто под названием
vacuumlo, но оно ничего не удалило. Куда глянуть?

 Есть конечно вариант, что я сканирую все пользовательские таблицы в
поисках ссылок на BLOBы (я знаю что надо), а затем удаляю все записи из
pg_largeobject на которые ссылок в пользовательских таблицах нет (что и
должна была сделать программа vacuumlo), но меня гложет вопрос, а не
выкину ли я какую-либо системную информацию?

С уважением
    Евгений

Re: Удаление мусора в виде BLOBов

From
Oleg Bartunov
Date:
  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--

Re: Удаление мусора в виде BLOBов

From
"Evgeny M. Baldin"
Date:
Добрый день

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 Гб то напрягает.

С уважением
    Евгений