Освобождение места диска после утраченной базы данных
-
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
Чтобы получить представление о том, куда идет дисковое пространство.