データベースを落とした後、ディスクスペースを解放します

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

  •  22-10-2019
  •  | 
  •  

質問

私は開発システムに取り組んでおり、「Foo」というデータベースに復元しており、開発の目的で使用しています。私はキンクスを介して作業しているので、ドロップデータベースfooを実行しています。しかし、私はすぐに自分のディスク上のすべてのスペースを食べたことに気付きました。くだらない。

別の論理データベースからVacuumはいっぱいになり、以前にドロップしたデータベースからスペースを解放しますか(foo)?私はこれを別の論理データベースから試しましたが、空き領域が再生されましたが、作成したすべての作成データベース/ドロップデータベース呼び出しを考慮するだけでは十分ではないと思います。私が実行した論理データベースを掃除機で掃除しただけかもしれません。

完全なデータベースinitを実行せずにそのスペースを取り戻す方法がなければなりませんか?

編集

だから私はバックアップからデータベースを再活性化し、ほぼフォローしています これらの手順. 。復元後、ディスク上の大量のスペースを取り戻しました!これは今のところ機能しますが、削除されたデータベースをクリーンアップする方法に関するヘルプは依然として役立ちます。

編集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

そのため、新しいDBがディスクで約9.6 GBを占有したように見えます。ただし、ドロップした後、再生されたディスクスペースは約4.6gのみ成長しました。 だから、何が起こっているのか不思議に思うので、およそ5 GBのスペースがあります!?

そして、私が再現し、埋葬し、再びドロップするとき、それはこのサイクルを続けます。

「ドロップデータベース」コマンドが発行された後、何が残っているのか誰もが考えていますか?

正しい解決策はありません

他のヒント

試す sudo lsof| grep deleted PostgreSQLプロセスが表示されるかどうかを確認します。このコマンドは、削除されたファイルを探しますが、そのファイル記述子はどのプロセスでも開いています。別の副作用はそれです df -hdu -sh / 異なる。それの訳は du ファイルシステムを見て、すべてのファイルのサイズを要約し、 df 物理デバイスを見てください。

私はデータベースに問題がありましたが、その後スペースを解放しませんでした DROP table そしてそれが原因でした。

私が知っている唯一の解決策は、データベースを再起動することです。多分あなたはリロード(Sighup)を送ることができます。

私の理解では、データベースをドロップすると、ファイルがなくなっているということです。

テーブルスペースを使用している場合を除き、各データベースには、$ PGDATA/ベースの下の独自のサブディレクトリにデータが含まれている必要があります。例として私のサーバーの1つを使用してください(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/ベースの下にもう1つのサブディレクトリがあるはずです。

-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ディレクトリはなくなりました。真空は何もないはずです。

あなたのディスクスペースを食べて他に何かがありませんか?他のデータベースの1つ?ログファイル?

あなたが試すことができることは次のとおりです。

-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