【動画で製品解説】Barman 3.14.1

音声ガイド

1. Barmanとは?
Barman(Backup and Recovery Manager)は、PostgreSQLサーバーの災害復旧(DR)のためのオープンソース管理ツールです。Pythonで書かれており、複数のサーバーのリモートバックアップとリカバリを一元的に管理するように設計されています。その主な目的は、ビジネスクリティカルな環境においてデータベース管理者(DBA)がリスクを低減し、災害後のリカバリプロセスを簡素化するのを支援することです。

2. Barmanの仕組み
Barmanは、1つ以上のPostgreSQLサーバーに接続し、そのバックアップとリカバリのライフサイクルを管理することで動作します。その中核機能は、PostgreSQLネイティブの物理バックアップおよびレプリケーション技術に基づいています。

  • バックアップ方法: Barmanはベースバックアップを取得するためにいくつかの方法をサポートしています。
    • rsync: SSH接続を介してrsyncユーティリティを使用し、PostgreSQLデータディレクトリのファイルベースのコピーを実行します。この方法はファイルレベルの増分バックアップと並列ジョブをサポートします。
    • postgres: ストリーミングレプリケーションプロトコルを介してPostgreSQLネイティブのpg_basebackupツールを利用します。SSHが不要なため設定が簡単で、ブロックレベルの増分バックアップ(Postgres 17以降)に必要です。
    • snapshot: クラウドプロバイダー(AWS, Azure, GCP)と統合し、データベースが存在するストレージボリュームのスナップショットを取得することで物理バックアップを作成します。
  • WAL(トランザクションログ)のアーカイブ: ポイントインタイムリカバリ(PITR)を可能にするため、Barmanは先行書き込みログ(WAL)をアーカイブする必要があります。これには主に2つの方法があります。
    • WALストリーミング: pg_receivewalを使用して、トランザクションログをPostgresからBarmanへほぼリアルタイムでストリーミングします。これにより目標復旧時点(RPO)が大幅に短縮されます。こちらが推奨される方法です。
    • archive_command: 従来のPostgresのarchive_command設定に依存し、完了したWALファイルをBarmanサーバーにプッシュします。
  • 一元化されたカタログ: Barmanは、すべてのバックアップとそのメタデータのカタログを保持しており、管理者はバックアップと保持ポリシーを簡単に一覧表示、確認、管理できます。

3. Barmanの実際のユースケース
典型的なユースケースとして、本番環境のPostgreSQLサーバーに対してストリーミングのみのバックアップを設定する例が挙げられます。これにより、SSH接続を必要とせずに低いRPOを実現できます。

  • PostgreSQLサーバー側 (pghost):
    • 管理タスク用のスーパーユーザー(例:barman)と、ストリーミングバックアップおよびWAL用のレプリケーションユーザー(例:streaming_barman)を作成します。
    • pg_hba.confを編集し、これらの新規ユーザーがBarmanサーバーのIPアドレスから接続できるように許可します。
    • postgresql.confでwal_levelがreplica以上に設定されていることを確認します。
  • Barmanサーバー側 (barmanhost):
    • サーバー設定ファイル(例:/etc/barman.d/production-db.conf)を作成します。
    • ファイル内で、接続情報(barmanユーザー用のconninfoとstreaming_barmanユーザー用のstreaming_conninfo)を定義します。
    • バックアップ方法をbackup_method = postgresに設定します。
    • WALストリーミングをstreaming_archiver = onで有効にします。
    • WALが失われないように、create_slot = autoでレプリケーションスロットを設定します。
  • 実行:
    • barman check production-dbを実行し、すべての設定が正しいか確認します。
    • barman backup production-dbを実行し、最初のフルバックアップを取得します。
    • barman cronをバックグラウンドで実行し、WALのアーカイブと保持ポリシーを管理します。
    • リカバリするには、barman restore production-db /path/to/restore/を使用します。

4. Barmanの利点

  • 一元管理: 複数のPostgreSQLサーバー(バージョンが異なっていても可)のバックアップを単一の場所から管理できます。
  • 災害復旧の強化: 信頼性の高いポイントインタイムリカバリ(PITR)を可能にし、特定の時点への復旧が可能です。同期レプリケーションを使用することで目標復旧時点(RPO)ゼロを達成できます。
  • 効率性: ファイルレベルおよびブロックレベルの増分バックアップをサポートし、ストレージ容量を節約し、バックアップ時間を短縮します。
  • 柔軟性: さまざまなネットワークやセキュリティアーキテクチャに合わせて、複数のバックアップおよびWALアーカイブ戦略(rsync、ストリーミング、クラウドスナップショット)を提供します。
  • 地理的冗長性: Barmanサーバーを「パッシブ」ノードとして機能させ、プライマリのBarmanサーバーからバックアップを同期することで、災害復旧用のオフサイトコピーを提供します。
  • クラウド連携: AWS、Azure、GCPのネイティブなクラウドボリュームスナップショットを使用してバックアップを実行・管理できます。

5. バージョン3.14.1の新機能
このユーザーガイドはリリース3.14.1のものです。ドキュメント内の注記(18ページ)に基づくと、3.14リリースにおける最も重要な変更点は以下の通りです。

  • 古いPythonバージョンの非推奨化: Python 3.6および3.7のサポートが非推奨となりました。Barman 3.14の実行にはPython 3.8以上が必要です。これにより、BarmanがよりモダンなPythonの機能を活用し、セキュリティを維持できるようになります。

日本語マニュアルを見る
※ 日本語マニュアルの閲覧には ユーザー登録(パスワード)が必要です。