以降のセクションでは、レプリケーション用に AlloyDB Omni プライマリ サーバーを構成し、レプリカ サーバーを構成して、プライマリ サーバーでレプリケーション ステータスを確認する手順について説明します。
詳細については、Kubernetes に AlloyDB Omni をインストールするをご覧ください。
レプリケーション用にプライマリ サーバーを構成する
- プライマリ サーバーのホストのネットワークまたはファイアウォールの設定を更新して、プライマリ サーバーのホストからレプリカ サーバーのホストへの上り(内向き)トラフィックがプライマリ サーバーの Postgres ポートを通過できるようにします。 
- レプリケーション ユーザーを作成します。 - Docker- docker exec CONTAINER_NAME psql -h localhost -U postgres -c "create user REPLICA_USER with replication password 'PASSWORD'"- 次のように置き換えます。 - REPLICA_USER: レプリカ ユーザーの名前。
- PASSWORD: レプリカ ユーザーのパスワード。
- CONTAINER_NAME: AlloyDB Omni コンテナのインストール時に割り当てた名前。
 - Podman- podman exec CONTAINER_NAME psql -h localhost -U postgres -c "create user REPLICA_USER with replication password 'PASSWORD'"- 次のように置き換えます。 - REPLICA_USER: レプリカ ユーザーの名前。
- PASSWORD: レプリカ ユーザーのパスワード。
- CONTAINER_NAME: AlloyDB Omni コンテナのインストール時に割り当てた名前。
 
- プライマリ サーバーの - /DATA_DIR/pg_hba.confファイルで、ファイル内にある- host all all all scram-sha-256よりも前に次の行を追加します。- host alloydbmetadata alloydbmetadata IP_RANGE trust host replication REPLICA_USER IP_RANGE scram-sha-256- 次のように置き換えます。 - IP_RANGE: レプリカマシンが配置されているサブネットの IP 範囲(CIDR 表記)。例:- 203.0.113.0/24
- DATA_DIR: プライマリ サーバーのデータ ディレクトリ パス。
 
- プライマリ サーバーを再起動します。 - Docker- docker restart CONTAINER_NAME- Podman- podman restart CONTAINER_NAME
レプリカ サーバーの作成と構成
AlloyDB Omni レプリカ サーバーを作成して構成する手順は次のとおりです。
- レプリカがプライマリ サーバーとネットワーク接続していることを確認します。 - ping SOURCE_IP- SOURCE_IPは、複製元のプライマリ AlloyDB Omni インスタンスの IP アドレスに置き換えます。
- レプリカがプライマリ サーバーに接続できることを確認します。 - Docker- docker run -it --rm google/alloydbomni psql "host=SOURCE_IP user=REPLICA_USER replication=1" -c "IDENTIFY_SYSTEM;"- Podman- podman run -it --rm google/alloydbomni psql "host=SOURCE_IP user=REPLICA_USER replication=1" -c "IDENTIFY_SYSTEM;"- 出力は次のようになります。 - systemid | timeline | xlogpos | dbname ---------------------+----------+-----------+-------- 7376500460465963036 | 1 | 0/454B670 | (1 row)
- レプリカには、ディスク上の永続ストレージ ロケーションが必要です。 - Docker- mkdir alloydb && docker run --rm -it \ -e PGDATA=/var/lib/postgresql/data/pgdata \ -v "$PWD/alloydb":/var/lib/postgresql/data \ -p 5432:5432 \ --user $(id -u):$(id -g) \ google/alloydbomni \ /usr/lib/postgresql/15/bin/pg_basebackup \ --pgdata=/var/lib/postgresql/data/pgdata \ --checkpoint=fast \ --host="SOURCE_IP" \ --port="SOURCE_PORT" \ --username=REPLICA_USER \ --create-slot \ --write-recovery-conf \ --slot="SLOT_NAME"- 次のように置き換えます。 - SOURCE_PORT: レプリケート元のプライマリ AlloyDB Omni インスタンスの TCP ポート。この値を指定しない場合、AlloyDB Omni はデフォルト値- 5432を適用します。
- SLOT_NAME: レプリケーション スロットの名前のラベル。
 - Podman- mkdir alloydb && podman run --rm -it \ -e PGDATA=/var/lib/postgresql/data/pgdata \ -v "$PWD/alloydb":/var/lib/postgresql/data \ -p 5432:5432 \ --user $(id -u):$(id -g) \ google/alloydbomni \ /usr/lib/postgresql/15/bin/pg_basebackup \ --pgdata=/var/lib/postgresql/data/pgdata \ --checkpoint=fast \ --host="SOURCE_IP" \ --port="SOURCE_PORT" \ --username=REPLICA_USER \ --create-slot \ --write-recovery-conf \ --slot="SLOT_NAME"- 次のように置き換えます。 - SOURCE_PORT: レプリケート元のプライマリ AlloyDB Omni インスタンスの TCP ポート。この値を指定しない場合、AlloyDB Omni はデフォルト値- 5432を適用します。
- SLOT_NAME: レプリケーション スロットの名前のラベル。
 
- レプリカ インスタンスを起動します。 - Docker- docker run --detach \ --name pg-service \ -e POSTGRES_PASSWORD=a \ -e PGDATA=/var/lib/postgresql/data/pgdata \ -v "$PWD/alloydb":/var/lib/postgresql/data \ -v /dev/shm:/dev/shm \ -p 5432:5432 \ --user $(id -u):$(id -g) \ google/alloydbomni- Podman- podman run --detach \ --name pg-service \ -e POSTGRES_PASSWORD=a \ -e PGDATA=/var/lib/postgresql/data/pgdata \ -v "$PWD/alloydb":/var/lib/postgresql/data \ -v /dev/shm:/dev/shm \ -p 5432:5432 \ --user $(id -u):$(id -g) \ google/alloydbomni
プライマリ サーバーでレプリケーション ステータスを確認する
レプリケーションが正しく構成されていることを確認するには、プライマリ サーバーのホストで次のコマンドを実行します。
Docker
  docker exec -it CONTAINER_NAME psql -h localhost -U postgres -c "select * from pg_stat_replication"Podman
  podman exec -it CONTAINER_NAME psql -h localhost -U postgres -c "select * from pg_stat_replication"出力テーブルには、プライマリ データベース サーバーに接続されているレプリカごとに 1 行が含まれます。
レプリケーションを設定すると、プライマリ データベース サーバーの行に対するすべての挿入、更新、削除が数秒以内にレプリカで読み取り可能になります。