レプリケーションスロットの使い方

スタンバイが要る WAL を消さずに残す

書き方

SELECT * FROM pg_create_physical_replication_slot('名前');
primary_slot_name = '名前'(スタンバイの設定)
SELECT slot_name, active, restart_lsn, wal_status FROM pg_replication_slots;
SELECT pg_drop_replication_slot('名前');

スロットを使うと、スタンバイがまだ受け取っていない WAL を、プライマリが消さずに残します。止まったスタンバイがあとで追いつけます。その代わり、使われないスロット(active が f)があると WAL がたまり続け、ディスクがあふれます。要らないスロットは消し、max_slot_wal_keep_size で残す量の上限を決めておきます(超えると wal_status が lost)。

例

SELECT slot_name, active, pg_wal_lsn_diff(pg_current_wal_lsn(), restart_lsn) FROM pg_replication_slots;

実際に打って練習する

PostgreSQL DBA コースの Lv57「レプリケーションスロット」で覚えます。ブラウザの中のシミュレーターで、本物と同じように打って確かめられます。

すべてのレベルが、プラチナ以上のプランで遊べます。

PostgreSQL の管理コマンド一覧(DBA)へ戻る