2016-12-14 33 views
1

PostgreSQL 9.6データベースを設定して、pg_xlogフォルダのサイズを制限しようとしています。私はこの問題やそれに類するものについて多くのスレッドを読んだことがありますが、何も助けなかった。pg_xlogの自動クリーニングを有効にする方法

私は自分のPostgreSQL 9.6サービスインスタンス用のセットアップスクリプトを書いています。 initdbを実行し、Windowsサービスを登録し、起動し、空のデータベースを作成し、ダンプをデータベースに復元します。スクリプトが完了した後、データベース構造は正常ですが、データはそこにありますが、xlogフォルダにはすでに55ファイル(880MB)が含まれています。

wal_keep_segmentsを0または1に設定し、max_wal_sizeを200mbに設定し、checkpoint_timeoutを減らし、archive_modeをオフにし、archive_commandを空の文字列に設定しました。私はpg_settingsを問い合わせるときにプロパティが正しく設定されているのがわかります。

私はSQLを使ってチェックポイントを強制し、データベースを空にし、Windowsサービスを再起動し、pg_archivecleanupを試しました。私のxlogフォルダは50ファイル(800メガバイト)に縮小されました。

私は他に何を試すのか分からない。誰かが私が間違っていることを教えてもらえれば、とても感謝しています。より多くの情報が必要な場合は、私はそれを提供してうれしいです。

感謝

答えて

0

PostgreSQLは積極的にmax_wal_sizeは1ギガバイトのデフォルト値にあったとき、既に割り当てられているWALセグメントを削除されません。

WALセグメントがいっぱいでリサイクルする必要がある場合は、徐々に削減が行われます。その後、PostgreSQLはファイルを削除するか(max_wal_sizeが超過した場合)、将来の使用のために新しいWALセグメントに名前を変更するかどうかを決定します。

長時間待たなければならない場合は、pg_switch_xlog()関数を呼び出すことで多くのWALスイッチを強制することができます。これにより、pg_xlogのファイル数を減らすことができます。

+0

忍耐力が必要とされているようです。データベースを作成する前に、 'ALTER SYSTEM SET max_wal_size = 20'を含むようにインストールスクリプトを修正しました。この方法で、px_logフォルダは320 MBを超えません。あなたの答えは正しい経路で私を送ったので、私はそれをチェックした。 – Ggilmann

+0

ちょうど私もSQLを介して設定をリロードしなければならないことを認識しました 'SELECT pg_reload_conf()' – Ggilmann

関連する問題