バックアップのエクスポートとインポート

バックアップのエクスポートとインポート#

概要#

Barmanは、既存のバックアップを単一の自己完結型のtarボールとしてエクスポートし、後でBarmanカタログにインポートして戻すことができます。これにより、外部アーカイブシステムに依存するエンタープライズデータ管理ワークフロー、たとえば、祖父/父/息子戦略の一環として、テープに長期コピーを書き込んだり、ストレージ階層を超えてバックアップを移動したりして、 Barmanを橋渡しします。

交換フォーマットは次のとおりです。エクスポートはファイルのtarballです。インポートでは、tarballがディスク上でターゲットBarmanサーバーに提示されることのみが必要です。 Barmanは、特定の外部製品と統合していません。ディスクからファイルをアーカイブし、後で復元できるシステムは、エクスポートされたバックアップをエンドツーエンドで運ぶことができます。

外部のtarボールは、オプションでサポートされているアルゴリズム gzip 、 bzip2 または xz で圧縮できます。圧縮は外部のtarボールにのみ適用されます。内部のデータファイルとWALセグメントは再圧縮されず、既に伝送されている圧縮たとえば、ソースサーバーに構成されているWALまたはバックアップ圧縮などはそのまま保存されます。インポート時に、圧縮形式はtarballから自動的に検出され、解凍は透過的に処理されます。

制限事項#

  • DONE 状態のフルバックアップのみがエクスポートまたはインポートできます。インクリメンタル バックアップ チェーンは、この機能では現在サポートされていません。

  • この機能は、ローカルストレージを使用するBarmanサーバーでのみサポートされています。

  • エクスポートされたtarballは、ソースクラスターの systemid に関連付けられます。別のクラスターへのインポートはサポートされていません。

  • 元のtarballファイル名はアーカイブチェーンを介して保存する必要があり、名前を変更すると完全性チェックが中断されます。

  • 暗号化は透過的に保持されます。暗号化されたバックアップはそのままエクスポートおよびインポートされます。

Tarballレイアウト#

エクスポートされたtarボールには、 Barmanがバックアップを再登録および復元するために必要なすべてが含まれています。

backup-export-SERVER-BACKUP_ID-TIMESTAMP-CHECKSUM.tar[.gz|.bz2|.xz]
├── identity.json            # server identity
├── backup.info              # backup metadata
├── barman.json              # additional Barman metadata
├── backup/                  # backup data tree (PGDATA + tablespaces)
├── wals/<hash>/<wal_name>   # WAL segments required for consistency
└── xlog.db                  # WAL metadata

通常 pg_tblspc/ にあるシンボリックリンクはtarballに保存されません。テーブルスペースデータはプレーンなサブディレクトリとして保存され、シンボリックリンクはインポート中に再構成されます。

Tarballファイル名と完全性#

ファイル名は次のパターンに従います。

backup-export-{SERVER_NAME}-{BACKUP_ID}-{TIMESTAMP}-{CHECKSUM}.tar[.gz|.bz2|.xz]

TIMESTAMP はUTCでのエクスポート時間 YYYYMMDDTHHMMSS であり、 CHECKSUM はtarボール全体のSHA-256ハッシュの最初の8文字です。 barman import-backup が実行されると、ファイルのSHA-256を再計算し、ファイル名に埋め込まれた値と比較し、不一致の場合にインポートを拒否します。

警告

アーカイブシステムを介して転送する場合、エクスポートされたtarballの名前を変更しないでください。名前を変更すると完全性チェックが中断され、 barman import-backup はそれを拒否します。アーカイブシステムが別の名前でファイルを保存している場合、インポートする前に元の名前に復元します。

使用法#

次のウォークスルーでは、ライフサイクル全体をカバーしています。バックアップのエクスポート、外部アーカイブシステムへの受け渡し、ディスクへの復元、リカバリーのためのBarmanサーバーへのインポート。

  1. ソースサーバーでの Pick a full backup は DONE 状態

    barman list-backups main
    barman show-backup main 20260513T101530
    
  2. Export the backup を既存のディレクトリにコピーします。オプションで外部のtarボールを --compression {gzip|bzip2|xz} で圧縮し、 --compression-level でレベルを調整します。

    barman export-backup main 20260513T101530 /var/tmp/barman-exports
    

    Barmanは、 /var/tmp/barman-exports の下に単一のファイルを書き込みます。その名前には、エクスポートタイムスタンプと完全性チェックサムが埋め込まれます。例

    backup-export-main-20260513T101530-20260513T134207-9f3a1c20.tar
    
  3. Archive the tarball を外部バックアップ製品で使用します。ファイルを不透明として扱います。唯一の要件は、元のファイル名がアーカイブチェーンを介して保持されることです。

  4. 外部製品を使用して、ターゲットBarmanサーバー上の Restore the tarball back to disk を、選択したディレクトリにコピーします。

  5. Import the backup をターゲットカタログに追加します。

    barman import-backup main \
        /var/tmp/barman-imports/backup-export-main-20260513T101530-20260513T134207-9f3a1c20.tar
    

    インポートはアトミックです。データは basebackups_directory の下のステージングディレクトリに抽出され、エンドツーエンドで検証されて、適切な場所に移動されます。ステップが失敗した場合、ステージングディレクトリと部分的なWAL変更は自動的にクリーンアップされ、カタログはそのまま残されます。

    成功すると、バックアップには KEEP:STANDALONE の注釈が付けられるため、保持ポリシーによって削除されず、これを可視化するために警告が印刷されます。インポートされたバックアップを再度リテンションに参加させる場合は、 barman keep main BACKUP_ID --release を使用します KEEP:STANDALONE を参照してください。

  6. Verify and restore 、インポートされたバックアップが完全に使用できることを確認します。

    barman list-backups main
    barman show-backup main 20260513T101530
    barman restore main 20260513T101530 /var/lib/postgresql/recovered