Освобождение места диска после утраченной базы данных

dba.stackexchange https://dba.stackexchange.com/questions/19182

  •  22-10-2019
  •  | 
  •  

Вопрос

Я работаю над системой разработчиков, и я восстанавливаю в базе данных, скажем, «Foo», которую я использую для целей Dev. Когда я работаю над изломами, я только что запускал базу данных Drop Foo. Тем не менее, я быстро понял, что съел все пространство на своем диске. Дерьмо.

Заполнен ли вакуум из другой логической базы данных, свободного пространства из базы данных, которую я ранее отбрасывал (FOO)? Я попробовал это из другой логической базы данных, и свободное пространство было восстановлено, но я не думаю, что этого было достаточно, чтобы учесть все вызовы Create Database/Drop Dashabase, которые я сделал. Это могло просто пылесосить логическую базу данных, из которой я бежал.

Должен быть способ вернуть себе пространство, не выполняя общую базу данных?

РЕДАКТИРОВАТЬ

Поэтому я повторно повторно ренициализировал базу данных из резервной копии, примерно следующей за эти шаги. Анкет После восстановления я восстановил тонну места на диске! Это работает на данный момент, но любая помощь в отношении очистки базы данных сброшена все равно будет полезна.

Редактировать 2

Итак, мне удалось собрать дополнительную информацию об этой проблеме ... вот что я придумал в качестве примера:

Initial partition size:
                       Size   Used  Avail Use% Mounted on
                        25G   8.1G    16G  35% /apps1

After creating my new database and populating it:
                        25G    18G   6.4G  73% /apps1

After Dropping the database using "DROP database mydb" from a separate logical DB:
                        25G    13G    11G  56% /apps1

Поэтому мне кажется, что новый БД занял ~ 9,6 ГБ на диске. Однако, после того, как он сбросил, восстановленное дисковое пространство выросло только на ~ 4,6 г. Итак, есть примерно 5 ГБ пространства, которое заставляет меня задуматься, что происходит!?

И это продолжает этот цикл, когда я воссоздаю, заполняю и снова падаю.

У кого -нибудь есть представление о том, что задерживается после выдачи команды «Drop Database»?

Нет правильного решения

Другие советы

Пытаться sudo lsof| grep deleted и проверьте, появляется ли какой -либо процесс PostgreSQL. Эта команда ищет файлы, которые были удалены, но его файловые дескрипторы все еще открыты любым процессом. Другой побочный эффект заключается в том, что df -h а также du -sh / отличается. Это потому что du Посмотрите на файловую систему и суммируйте размер всех файлов, и df смотрит на физическое устройство.

У меня только что была проблема с базой данных, которая не освободила места после DROP table И это было причиной.

Единственное решение, которое я знаю, - это перезапустить базу данных. Может быть, вы можете попытаться отправить перезагрузку (Sighup).

Насколько я понимаю, когда вы бросаете базу данных, тогда ее файлы исчезли.

Если вы не используете табличные пространства, у каждой базы данных должна быть свои данные в собственной подкаталоге под $ pgdata/base. Используя один из моих серверов для примера (как пользователь Postgres):

-bash-3.2$ cd $PGDATA/base

-bash-3.2$ ls | wc -l
9

-bash-3.2$ du -sh `ls`
6.9M    1
6.7M    12690
6.9M    12698
11M     16391
341M    17339
3.8G    17341
11M     17343
6.8M    19047
8.0K    pgsql_tmp

Теперь, если мы создадим новую базу данных, то в рамках $ pgdata/базы должен быть еще один подкаталог:

-bash-3.2$ createdb foo

-bash-3.2$ ls | wc -l
10

-bash-3.2$ du -sh `ls`
6.9M    1
6.7M    12690
6.9M    12698
11M     16391
341M    17339
3.8G    17341
11M     17343
6.8M    19047
6.9M    83637
8.0K    pgsql_tmp

Это то, что мы видим ($ pgdata/base/83637 - это подкаталог для новой базы данных).

Отбрасывание этой базы данных должно также удалить файлы данных:

-bash-3.2$ dropdb foo

-bash-3.2$ ls wc -l
9

-bash-3.2$ du -sh `ls`
6.9M    1
6.7M    12690
6.9M    12698
11M     16391
341M    17339
3.8G    17341
11M     17343
6.8M    19047
8.0K    pgsql_tmp

Что мы и ожидаем- каталог $ pgdata/base/83637 исчез, нечего вакуума.

Вы уверены, что нет ничего другого, когда нет вашего дискового пространства? Одна из других ваших баз данных? лог-файлы?

Что -то, что вы могли бы попробовать, было бы:

-bash-3.2$ cd $PGDATA
-bash-3.2$ du -sh `ls` > ../pre_sizes

Делайте свои различные материалы базы данных, создавать, отбросить и т. Д., А затем:

-bash-3.2$ du -sh `ls` > ../post_sizes

Чтобы получить представление о том, куда идет дисковое пространство.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с dba.stackexchange
scroll top