2016-09-16 21 views
5

誰でもPostgreSQL 9.5のpg_xlogを自動的にクリーンアップする方法を知っていますか? レプリケーションディスクを有効にしてから2週間、200Gまでの容量が満杯になりました。だから私は、次のコマンドを使用して手動でクリーニング:もちろん自動クリーニングpg_xlog

sudo service portgesql stop 
sudo /usr/lib/postgresql/9.5/bin/pg_controldata /var/lib/postgresql/9.5/main/ | grep Next | grep -v Multi 
sudo -u postgres /usr/lib/postgresql/9.5/bin/pg_resetxlog -o 44842 -x 575323138 -f /var/lib/postgresql/9.5/main/ 
sudo service portgesql start 

を私はbashスクリプトでそれを自動化することができますが、ここでの問題は、PotgreSQLを停止する必要があるということです。 PostgreSQLを停止することなくこれをクリーニングする他の方法はありますか?

答えて

3

pg_xlogからファイルを削除することに少し気になっても、データベースの回復に不可欠です。私はこれが生産であると教えてください:)

とにかく、WALがPostgreSQLの新しく導入された「複製スロット」のような速度で集まっている根本的な理由があります。

複製スロットは、WALSがDRに適用されるまでWALログを保持して、WALSがスタンバイに適用されないようにします。あなたがWALSを取り除いていて、それが決して適用されない場合は、チャンスがあります。したがって、目に見えるサイクルになります。

"wal_keep_segments"のパラメータで、そのディレクトリ内のWALSの量を制御することもできますが、レプリカとレプリケーションスロットを持つ9.5でどのくらいの役割があるかわかりません。

いずれにしても、WALの削除を中止して、マスタの新しく同期されたDRを再構築する必要があります。

+0

回答ありがとうございます。ウォール・キープ・セグメントは5000に設定されています。これをクリーニングした不明な理由で、ほぼ10000個のアイテムがありました。したがって、これは9.5では動作しないように見えます。 – Ilya

+0

私はレプリケーション設定をリセットし、レプリケーションスロットを追加して 'ウォール・キープ・セグメント'を削除しました。 pg_xlogディレクトリにある約10個のファイルだけが空のサイズまで成長しません=)P.S.はい、プロダクションであり、pgdumpから最新のデータを復元する必要がありました。それはそれをきれいにする良い考えではなかった:) – Ilya

+0

それは素晴らしいニュースです。 – d1ll1nger

関連する問題