pg_combinebackup — 増分バックアップと依存するバックアップ群からフルバックアップを再構築する
pg_combinebackup
[option
...] [backup_directory
...]
pg_combinebackupは、増分バックアップとそれが依存する以前のバックアップから、合成フルバックアップを再構築するために使用されます。
コマンドラインで、古いバックアップから最新のバックアップまで、必要なすべてのバックアップを指定します。
つまり、最初のバックアップディレクトリはフルバックアップへのパスでなければならず、最後のバックアップはリストアしたい最後の増分バックアップへのパスでなければなりません。
再構築されたバックアップは、-o
オプションで指定された出力ディレクトリに書き込まれます。
pg_combinebackupは、指定したバックアップが正しいフルバックアップを再構築できる正当なバックアップチェーンを形成しているかどうかを検証します。 ただし、どのバックアップがどのバックアップに依存しているかを追跡するための機能は備えていません。 増分バックアップが依存する以前のバックアップを1つでも削除すると、その増分バックアップはリストアできなくなります。 さらに、pg_combinebackupは、バックアップが互いに正しい関係を持っているかどうかを検証するだけで、個々のバックアップが損なわれていないかどうかは検証しません。そのためにはpg_verifybackupを使用してください。
pg_combinebackupの出力は合成フルバックアップであるため、将来のpg_combinebackupの呼び出しの入力として使用できます。 再構築に使われたバックアップチェーンの代わりに合成フルバックアップをコマンドラインで指定します。
-d
--debug
stderr
に大量のデバッグログを出力します。
-n
--dry-run
-n
/--dry-run
オプションは、ターゲットディレクトリや出力ファイルを実際には作成せずに、pg_combinebackup
が何を行うかを報告します。
これは--debug
と組み合わせて使用すると特に便利です。
-N
--no-sync
デフォルトでは、pg_combinebackup
はすべてのファイルがディスクに安全に書き込まれるまで待機します。
このオプションを指定すると、pg_combinebackup
は待機せずに返ります。
これは高速ですが、後続のオペレーティングシステムのクラッシュによって出力バックアップが破損する可能性があります。
通常、このオプションは試験用では有用ですが、実用のインストレーションを作成する際に使用すべきではありません。
-o outputdir
--output=outputdir
合成フルバックアップを書き込む出力ディレクトリを指定します。 現在、この引数は必須です。
-T olddir
=newdir
--tablespace-mapping=olddir
=newdir
バックアップ時にディレクトリolddir
内のテーブル空間をnewdir
に再配置します。
olddir
はコマンドラインで指定された最終バックアップに存在するテーブル空間の絶対パスで、newdir
は再構築されたバックアップでテーブル空間に使用される絶対パスです。
どちらかのパスに等号(=
)が含まれる場合、その前にバックスラッシュを置きます。
このオプションは、複数のテーブル空間に対して複数回指定できます。
--clone
新しいデータディレクトリにファイルをコピーする代わりに、効率的なファイルクローニング(一部のシステムでは「reflinks」とも呼ばれます)を使用します。これによりデータファイルをほぼ瞬時にコピーすることができます。
バックアップマニフェストが使用できない場合、または正しいタイプのチェックサムが含まれていない場合、ファイルコピーのためにクローニングが使われますが、ファイルはチェックサム計算のためにブロックごとに読み取られます。
ファイルのクローニングは、一部のオペレーティングシステムおよびファイルシステムでのみサポートされています。 選択されているけれどもサポートされていない場合、pg_combinebackupの実行はエラーになります。 現在、Linux(カーネル4.5以上)のBtrfsと、XFS(reflinkを有効にして作成されたファイルシステム)、および、macOSのAPFSでサポートされています。
--copy
通常のファイルコピーを行います。
これがデフォルトです(--copy-file-range
および--clone
も参照してください。)
--copy-file-range
システムコールcopy_file_range
を使用して、効率的なコピーを行います。
ファイルシステムによって、物理ディスクブロックを共有して--clone
と似た効果を得られるものもあれば、依然としてブロックをコピーするものの最適化されたパスを介して動作するものもあります。
現在、LinuxとFreeBSDでサポートされています。
バックアップマニフェストが利用できないか、正しいタイプのチェックサムを含んでいない場合、copy_file_range
はファイルをコピーするために使用されますが、ファイルはチェックサム計算のためにブロックごとに読み取られます。
--manifest-checksums=algorithm
pg_basebackupと同様に、pg_combinebackupはバックアップマニフェストを出力ディレクトリに書き込みます。
このオプションは、バックアップマニフェストに含まれる各ファイルに適用されるチェックサムアルゴリズムを指定します。
現在利用可能なアルゴリズムは、NONE
、CRC32C
、SHA224
、SHA256
、SHA384
、SHA512
です。
デフォルトはCRC32C
です。
--no-manifest
バックアップマニフェストの生成を無効にします。 このオプションを指定しない場合、再構築されたバックアップのバックアップマニフェストが出力ディレクトリに書き込まれます。
--sync-method=method
デフォルトのfsync
に設定すると、pg_combinebackup
はバックアップディレクトリ内の全てのファイルを再帰的にオープンして同期します。
plain形式を使用する場合、ファイルの検索はWALディレクトリと設定された各テーブル空間のシンボリックリンクをたどります。
Linuxでは、syncfs
を代わりに使用して、バックアップディレクトリを含むファイルシステム全体を同期するようにオペレーティングシステムに要求できます。
plain形式を使用する場合、pg_combinebackup
はWALファイルと各テーブル空間を含むファイルシステムも同期させます。
syncfs
を使用する際に注意すべき注意事項については、recovery_init_sync_methodを参照してください。
このオプションは--no-sync
が使われている場合は効果がありません。
-V
--version
pg_combinebackupのバージョンを出力して終了します。
-?
--help
pg_combinebackupコマンドライン引数についてのヘルプを表示して終了します。
pg_combinebackup
は出力ディレクトリを書き込む際にページチェックサムを再計算しません。
したがって、再構築に使用されたバックアップのいずれかがチェックサム無効で取得され、最終バックアップがチェックサム有効で取得された場合、結果のディレクトリは無効なチェックサムを持つページを含む可能性があります。
この問題を回避するには、pg_checksumsを使用してクラスタのチェックサム状態を変更した後に新しいフルバックアップを取ることをお勧めします。
別な方法としては、問題を修正するためにpg_combinebackup
によって生成されたディレクトリのチェックサムを無効にした後、必要に応じて再度有効にすることができます。
このユーティリティは、他のほとんどのPostgreSQLユーティリティと同様、libpqでサポートされる環境変数を使用します(32.15を参照してください)。
環境変数PG_COLOR
は診断メッセージで色を使うかどうかを指定します。
指定可能な値はalways
、auto
、never
です。