AlloyDB Omni 用に Barman を設定する

このページでは、オープンソースのデータベース バックアップ サーバーである Barman で動作するように AlloyDB Omni を構成して、データを保護する方法について説明します。

AlloyDB Omni のデータは、PostgreSQL で動作する任意のデータベース バックアップ テクノロジーを使用して保護できます。たとえば、管理する Barman サーバーからの接続を許可するように AlloyDB Omni を構成できます。これにより、Barman サーバーは AlloyDB Omni サーバーに保存されているデータの継続的なバックアップを実行できます。

Barman サーバーと AlloyDB Omni サーバーを連携するように構成したら、Barman コマンドを実行して、次のようなさまざまなデータ保護と障害復旧タスクを実行できます。

  • データのオンデマンド バックアップを作成します。
  • バックアップ サーバーにデータ変更の同期 WAL ストリーミングを設定します。
  • 特定のバックアップから復元します。
  • ポイントインタイム復元を実行します。

Barman の操作の詳細については、Barman マニュアルをご覧ください。

始める前に

Barman で動作するように AlloyDB Omni を構成する前に、次のものが必要です。

Barman で動作するように AlloyDB Omni を構成する

Barman で動作するように AlloyDB Omni サーバーを準備するには、AlloyDB Omni をインストールしたサーバーで次のコマンドを実行します。

  1. 適切な権限を持つ barman データベース ユーザーを作成します。

    docker exec CONTAINER_NAME psql -h localhost -U postgres -c "
    CREATE USER barman;
    GRANT EXECUTE ON FUNCTION pg_backup_start(text, boolean) to barman;
    GRANT EXECUTE ON FUNCTION pg_backup_stop(boolean) to barman;
    GRANT EXECUTE ON FUNCTION pg_switch_wal() to barman;
    GRANT EXECUTE ON FUNCTION pg_create_restore_point(text) to barman;
    GRANT pg_read_all_settings TO barman;
    GRANT pg_read_all_stats TO barman;
    CREATE USER streaming_barman WITH REPLICATION;
    "
  2. DATA_DIR/pg_hba.conf ファイルに、ファイルに存在する host all all all scram-sha-256 行の前に次の行を追加します。

    host all barman BARMAN_IP/32 AUTHN_METHOD
    host replication streaming_barman BARMAN_IP/32 AUTHN_METHOD
    

    次のように置き換えます。

    • DATA_DIR: AlloyDB Omni データ ディレクトリに使用されるファイル システム パス。

    • BARMAN_IP: Barman サーバーの IP アドレス。

    • AUTHN_METHOD: AlloyDB for PostgreSQL サーバーが Barman サーバーに期待する PostgreSQL 認証方法。次のいずれかの値をおすすめします。

      • Barman サーバーがパスワードなしで認証できるようにするには、trust を使用します。

      • Barman サーバーからのパスワードを必須にするには、scram-sha-256 を使用します。

  3. DATA_DIR/postgresql.conf ファイルに次の行を追加します。

    archive_command='/bin/true'
    archive_mode=on
    listen_addresses='*'
    wal_level='replica'
    
  4. AlloyDB Omni サービスを再起動します。

    docker restart CONTAINER_NAME

    CONTAINER_NAME は、AlloyDB Omni コンテナのインストール時に割り当てた名前に置き換えます。

  5. 次のコマンドを実行して、必要なパラメータがすべて適切に設定されていることを確認します。

    docker exec CONTAINER_NAME psql -h localhost -U postgres -c "
    SELECT name, setting
     FROM pg_catalog.pg_settings
     WHERE name IN ('archive_command',
                    'archive_mode',
                    'listen_addresses',
                    'wal_level')
     ORDER BY name;
     "

    出力は次のとおりです。

        name          |  setting
    ------------------|-----------
    archive_command   | /bin/true
    archive_mode      | on
    listen_addresses  | *
    wal_level         | replica
    (4 rows)
    

Barman バックアップ サーバーを設定する

AlloyDB Omni サーバーで動作するように Barman を設定して構成するには、Barman サーバーで次のコマンドを実行します。

  1. ストリーミング レプリケーション接続が機能していることを確認します。

    psql -h DATABASE_IP -U streaming_barman -c "IDENTIFY_SYSTEM" replication=1

    出力は次のようになります。

          systemid       | timeline |  xlogpos   | dbname
    ---------------------+----------+------------+--------
     7265722823667040273 |        1 | 0/1F0AFCD0 |
    (1 row)
    
  2. Barman が barman データベース ユーザーとして AlloyDB Omni サーバーに接続できることを確認します。

    psql -t -h DATABASE_IP -U barman -d postgres -c "SELECT 'Connected as: '||current_user"

    DATABASE_IP は、AlloyDB Omni サーバーの IP アドレスに置き換えます。

    出力は次のようになります。

    Connected as: barman
    
  3. ニーズと設定に応じて Barman バックアップ サーバーを構成します。

    構成には次の設定が含まれている必要があります。

    • conninfo を設定して、barman ユーザーとして AlloyDB Omni postgres データベースに接続します。
    • streaming_barman ユーザーを使用するように streaming_conninfo を設定します。
    • Barman のドキュメントに沿って、WAL ストリーミングを有効にするために必要な他のディレクティブを構成します。

    次の最小限の完全な例では、Barman のドキュメントのストリーミング構成の例を変更しています。

    [CONFIGURATION_TAG]
    description = "Backup settings for my AlloyDB Omni server"
    conninfo = host=DATABASE_IP user=barman dbname=postgres
    streaming_conninfo = host=DATABASE_IP user=streaming_barman
    backup_method = postgres
    streaming_archiver = on
    slot_name = barman
    

    次のように置き換えます。

    • CONFIGURATION_TAG: barman コマンドを実行するときにこのサーバー構成を識別する短いタグ(例: omni)。

    • DATABASE_IP: AlloyDB Omni サーバーの IP アドレス。

  4. barman ユーザーに切り替えます。

    sudo su - barman
  5. barman receive-wal コマンドを使用してレプリケーション スロットを作成し、データベース サーバーから WAL ストリームの受信を開始します。

    barman receive-wal --create-slot CONFIGURATION_TAG
    barman receive-wal CONFIGURATION_TAG &

    CONFIGURATION_TAG は、前の手順で選択した構成タグに置き換えます。

これで、AlloyDB Omni サーバーで動作するように Barman が構成されました。レプリケーション ステータスの確認、手動バックアップの作成、その他のタスクの実行については、一般的なコマンドをご覧ください。

たとえば、手動バックアップを作成するには、barman backup コマンドを実行します。

次のステップ