4.8. 継続的アーカイブを使用した PostgreSQL データのバックアップと復元
継続的アーカイブを使用すると、WAL ファイルとベースバックアップを組み合わせることで、ポイントインタイムリカバリーと高可用性に対応した堅牢な PostgreSQL バックアップを作成できます。
PostgreSQL は、データベースのデータファイルに対するすべての変更を、クラスターのデータディレクトリーの pg_wal/ サブディレクトリーにあるログ先行書き込み (WAL) ファイルに記録します。このログは、主にクラッシュからの復元を目的としています。クラッシュが発生した後、最後のチェックポイント以降に作成されたログエントリーを使用して、データベースを整合性の取れた状態に復元できます。
継続的アーカイブ方式は、オンラインバックアップとも呼ばれ、WAL ファイルと、データベースクラスターのコピー (稼働中のサーバーで実行されたベースバックアップ、またはファイルシステムレベルのバックアップ) を組み合わせたものです。
データベースの復元が必要な場合は、データベースクラスターのコピーからデータベースを復元してから、バックアップした WAL ファイルからログをリプレイすることで、システムを現在の状態に戻すことができます。
継続的アーカイブ方式では、少なくとも最後のベースバックアップの開始時刻まで遡る、途切れのない一連の WAL ファイルをすべて保持する必要があります。そのため、ベースバックアップの理想的な頻度は、次の要素に左右されます。
- アーカイブされた WAL ファイルで利用可能なストレージボリューム。
- 復元が必要な場合の、データ復元の最大許容期間。最後のバックアップからの期間が長い場合、システムはより多くの WAL セグメントを再生するため、回復に時間がかかります。
pg_dump および pg_dumpall SQL ダンプは、継続的にアーカイブするバックアップソリューションの一部として使用することができません。SQL ダンプは論理バックアップを生成しますが、WAL 再生で使用する上で十分な情報は含まれていません。
4.8.1. 継続的アーカイブの利点と欠点 リンクのコピーリンクがクリップボードにコピーされました!
継続的アーカイブは、データベースのトランザクションログファイルを継続的に保存することで、データのバックアップ、高可用性、およびポイントインタイムリカバリー (PITR) のための堅牢な手法を提供する機能です。
利点:
- 継続的なバックアップメソッドでは、バックアップ内の内部不整合がログ再生により修正されるため、整合性が完全に取れないベースバックアップを使用することができます。したがって、実行中の PostgreSQL サーバーでベースバックアップを実行できます。
-
ファイルシステムのスナップショットは必要ありません。
tarまたは同様のアーカイブユーティリティーで十分です。 - 継続的にバックアップを行うには、継続的に WAL ファイルをアーカイブします。これは、ログ再生用の WAL ファイルの順序が無限に長くなる可能性があるためです。これは、特に大規模なデータベースで有用です。
- 継続的バックアップは、特定の時点への復旧 (ポイントインタイムリカバリー) をサポートします。WAL エントリーを最後まで再生する必要はありません。再生はいつでも停止でき、ベースバックアップを作成してから、データベースをいつでもその状態に復元できます。
- 一連の WAL ファイルが同じベースのバックアップファイルで読み込まれた別のマシンが継続的に利用可能である場合は、任意の時点で、データベースで現在に一番近いコピーで、他のマシンを復元できます。
欠点:
- 継続バックアップ方法は、サブセットではなく、データベースクラスター全体の復元のみをサポートします。
- 継続的にバックアップするには、大きなアーカイブストレージが必要です。