5

pg_xlog フォルダーのサイズを制限するように PostgreSQL 9.6 データベースを構成しようとしています。この問題または同様の問題に関する多くのスレッドを読みましたが、試したことはありません。

Postgresql 9.6 サービス インスタンスのセットアップ スクリプトを作成しました。initdb を実行し、Windows サービスを登録して開始し、空のデータベースを作成して、データベースにダンプを復元します。スクリプトが完了すると、データベース構造は正常になり、データはそこにありますが、xlog フォルダーには既に 55 個のファイル (880 mb) が含まれています。

フォルダーのサイズを小さくするために、wal_keep_segments を 0 または 1 に設定し、max_wal_size を 200mb に設定し、checkpoint_timeout を減らし、archive_mode をオフに設定し、archive_command を空の文字列に設定してみました。pg_settings をクエリすると、プロパティが正しく設定されていることがわかります。

次に、SQL を介してチェックポイントを強制し、データベースをバキュームし、Windows サービスを再起動して pg_archivecleanup を試しましたが、実際には何も機能しませんでした。xlog フォルダーは 50 ファイル (800 mb) に縮小されましたが、構成で設定した 200 mb の制限にはほど遠いものでした。

他に何を試すべきかわかりません。誰かが私が間違っていることを教えてくれたら、とても感謝しています。さらに情報が必要な場合は、喜んで提供します。

どうもありがとう

4

1 に答える 1

6

max_wal_sizePostgreSQL は、デフォルト値の 1GB のときに既に割り当てられている WAL セグメントを積極的に削除しません。

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

それほど長く待ちたくない場合は、pg_switch_xlog()関数を呼び出して多数の WAL スイッチを強制することができます。これにより、 pg_xlog.

于 2016-12-15T10:09:54.733 に答える