Barman 3.19.0
日本語訳|Barman 3.19.0
※GoogleのAutoML Translationを使用して翻訳しております。
![]() |
![]() |
英語原文|Barman 3.19.0
![]() |
![]() |
概要
1. Barmanとは
Barman (Backup and Recovery Manager) は、ビジネスにおいて極めて重要な環境にあるPostgreSQLサーバーの物理バックアップと災害復旧(ディザスタリカバリ)を目的として設計された、Python製のオープンソース管理ツールです。
EnterpriseDB(EDB)によって開発・メンテナンスされており、GNU GPL 3ライセンスのもとで配布されています。Barmanは、データベース管理者(DBA)に対して、リモートまたはローカルにある複数のPostgreSQLインスタンスの物理バックアップとトランザクションログ(WAL)を安全に一元管理するためのサーバー(ホスト)を提供します。論理バックアップツール(pg_dumpなど)とは異なり、データベースの物理ファイルのコピーに特化しているため、より迅速なリストアや高度な復旧(リカバリ)戦略を可能にします。
2. Barmanの仕組み
Barmanは、PostgreSQLインスタンスと連携してデータベースのクラスタディレクトリをコピーし、トランザクション情報を管理します。主に以下の仕組みで動作します。
- 物理ファイルのコピー: データをSQL文に変換するのではなく、ファイルシステムから直接、データベースのバイナリファイルをコピーします。
- バックアップ手法:
- ストリーミングバックアップ(pg_basebackup): PostgreSQL固有のストリーミングレプリケーションプロトコルを使用します。SSH接続を必要としないため、コンテナ環境(Dockerなど)や、ネットワークセキュリティの制約が厳しい環境に適しています。
- Rsyncバックアップ: SSH経由のRsyncを使用してデータベースファイルをコピーします。PostgreSQLの低レベルバックアップAPIを利用し、データベースをバックアップモードに移行・解除しながら実行します。
- スナップショットバックアップ: クラウドプロバイダー(AWS、Azure、GCP)と連携してディスクボリュームのスナップショットを作成します。Barmanはバックアップカタログの管理を担当します。
- トランザクションログ(WAL)のアーカイブ:
- WALアーカイブ: PostgreSQLのarchive_commandパラメータ(多くの場合、barman-wal-archiveユーティリティを併用)を使用して、完了したWALファイル(通常は16MB単位)をBarmanホストにコピーします。
- WALストリーミング: pg_receivewalを使用してトランザクションをリアルタイムでストリーミングします。WALセグメントが完全に閉じるのを待つことなく、生成されたトランザクションを即座に取得できるため、データ損失のリスクが軽減されます。
- リカバリとリストア: barman restoreコマンドは、ベースバックアップと必要なWALシーケンスを組み合わせることでリストア先ディレクトリを準備し、起動時にPostgreSQLがクラッシュリカバリ処理をスムーズに完了できるようにします。
3. Barmanの機能とメリット
- 一元管理(スタートポロジ): 1台のBarmanサーバーで、地理的に異なる、または独立した複数のPostgreSQLインスタンスのバックアップを統合管理・監視できます。
- ポイントインタイムリカバリ (PITR): ベースバックアップの開始からアーカイブされたトランザクションログの終点までの間で、特定のトランザクションID、LSN(ログシーケンス番号)、またはタイムスタンプを指定して任意の時点に復旧できます。
- データ損失ゼロ (RPO=0): PostgreSQLクラスタ内で同期WALレシーバーとして統合するように設定することで、障害発生時のデータ損失をゼロに抑える構成に対応しています。
- 増分バックアップ:
- ファイルレベル: Rsyncのハードリンクを利用して、前回のバックアップから変更されたファイルのみをコピー・保存します。
- ブロックレベル: PostgreSQL 17以降と連携し、ストリーミング接続を通じてページレベル(ブロックレベル)でデータの重複排除を行います。
- 自動的な保持ポリシー: 冗長性(指定したバックアップ世代数の維持)またはリカバリウィンドウ(指定した過去の期間内のバックアップ維持)に基づいて、バックアップのライフサイクルポリシーを自動的に適用します。
- フックスクリプト: バックアップの作成・削除、WALのアーカイブ、リストアの前後でカスタムスクリプトを実行し、管理ワークフローを自動化できます。
- クラウドオブジェクトストレージのサポート: Amazon S3、Azure Blob、Google Cloud Storageなどのクラウドプロバイダーへ、バックアップやWALファイルを直接ストリーミングして保存できます。
4. リリース 3.19.0 の新機能
バージョン 3.19.0 では、クラウド統合機能、バックアップ共有、パフォーマンスの向上に関連する以下のアップデートが導入されました。
- クラウドストレージからのリストア対応: local-to-cloudまたはpostgres方式で取得し、クラウドオブジェクトストレージに保存されているバックアップを、標準のbarman restoreコマンドを使用して直接復元できるようになりました。
- 並行クラウドWAL取得: リカバリ中にクラウドストレージからWALファイルを直接フェッチするためのbarman cloud-wal-restoreコマンドが導入されました。並行ダウンロードに対応しており、リストア時のパフォーマンスが向上します。
- バックアップのエクスポートとインポート:
- barman export-backup: フルバックアップを1つの圧縮アーカイブ(tarball、形式はgzip、bzip2、またはxzをサポート)としてエクスポートします。これにより、バックアップの共有やテープなどの長期外部媒体への保存が容易になります。
- barman import-backup: エクスポートされたバックアップtarballをBarmanのカタログに再登録し、再びリストア可能な状態にします。
- クラウドバックアップの進捗可視化向上: 実行中のクラウドバックアップが、barman-cloud-backup-listにおいて即座にSTARTEDステータスでカタログ上に表示されるようになり、管理者が実行中タスクを監視しやすくなりました。
- AWS S3 オブジェクトロックのサポート: aws_check_object_lock設定オプションが追加されました。有効にすると、バックアップファイルを削除する前にS3オブジェクトロックのステータスを確認し、保護されたバケットでの誤削除を防ぎます。
- 代替GCPユニバースの対応: GOOGLE_CLOUD_UNIVERSE_DOMAIN環境変数を介して、非標準のGCPエンドポイントや代替GCPユニバースとの連携が可能になりました。
- クラウドへの並行WALアーカイブ: barman cloud-wal-archiveに–parallelフラグが追加され、アップロード準備が整った複数のWALファイルを同時に送信できるようになりました。高負荷環境でのWAL滞留を軽減します。
- 不完全WAL(.partial)復元のオプトイン: barman restoreに–partial-walフラグ(–no-get-walと併用)が追加されました。書きかけの不完全なWALファイル(.partial)をリカバリディレクトリにコピーし、RPO(目標復旧時点)の短縮を図ることができます。
依存関係のクリーンアップ: 実行時の依存関係からsetuptoolsが削除されました。





