2017-11-20 6 views
0

私のpostgresql環境でウォルの動作を理解しようとしています。 マイWALの設定は次のとおりです。PostgreSQL 9.6ウォール管理

wal_keep_segments = 200 
max_wal_size = 3GB 
min_wal_size = 80MB 
archive_command = 'cp %p /PostgreSQL-wal/9.6/pg_xlog/wal_archives/%f' 
archive_timeout = 10 
#checkpoint_flush_after = 256kB 
#checkpoint_completion_target = 0.5 

マイヴァルスディレクトリが/PostgreSQL-wal/9.6/pg_xlog/と私のアーカイブディレクトリは、PostgreSQL-WAL/9.6/pg_xlog内/ wal_archivesです。 私ヴァルスディレクトリストレージがいっぱいだ昨夜(彼らは同じFS上にあるため、アーカイブディレクトリを...)リットル

私は今、私のwal`sディレクトリ内に211ヴァルスあります

ls -l /PostgreSQL-wal/9.6/pg_xlog/ | wc -l 
212 

のみを夜間に実行されていたものは、私たちの監視エージェントからのみ選択されます。 archive_timeoutが非常に低く、wal_keep_segmentsが高いために削除されたため、ウォールが作成されたと思います。 今朝、wal_keep_segmentsを100に設定し、archive_timeoutを6分に設定しました。さて、これらの設定を行い、クラスタウォールスイッチを起動した後、スイッチが正常に動作していて、多くのウォールが作成されたことがわかりませんでした。しかし、古いウォールは自動的に削除されませんか?アーカイブを安全に削除できますか?

答えて

2

max_wal_sizeは厳しい制限ではありません。

制限を超えると、次のチェックポイントでPostgreSQLは古いWALセグメントをリサイクルするのではなく削除します。だから、pg_xlogは次のチェックポイントまで成長することができます。

3 GBの設定は192 WALセグメントに対応し、wal_keep_segmentsの設定よりも低くなります。そのため、PostgreSQLは3.125GBまでWALセグメントのリサイクルや削除を開始しません。

これらの設定を低くするか、WALアーカイブのディスク容量を増やす必要があります。

データベースアクティビティが新しいWALセグメントに切り替えるまで待つか、pg_switch_wal()関数を呼び出して手動で行うことができます。その後、チェックポイントを待つか、手動でCHECKPOINTを実行します。次に、WALセグメントの数が減少すると表示されます。

+0

wal_keep_segmentsを100に設定しました。現在、私は212ウォールで3.360Gを意味しています。だから、それはいくつかのwalを削除し始めてはいけませんか?アーカイブに関しては、データベースを今復元するつもりがない場合、それらを削除することは安全ですか? – Mariel

+0

'pg_xlog'でファイルを削除してはいけません。データベースが壊れる可能性があります。 'pg_xlog'のサイズを減らす方法を追加しました。 –

+0

あなたは私を理解できませんでした。私は、archive_commandで作成されたアーカイブについて話しています。 – Mariel

関連する問題