以降のセクションでは、レプリケーション用に AlloyDB Omni プライマリ サーバーを構成し、レプリカ サーバーを構成して、プライマリ サーバーでレプリケーション ステータスを確認する手順について説明します。
始める前に
続行する前に、RPM パッケージを使用して AlloyDB Omni をインストールして設定します。詳細については、RPM を使用して AlloyDB Omni をインストールするをご覧ください。
レプリケーション用にプライマリ サーバーを構成する
プライマリ サーバーのホストのネットワークまたはファイアウォールの設定を更新して、プライマリ サーバーのホストからレプリカ サーバーのホストへの上り(内向き)トラフィックがプライマリ サーバーの Postgres ポートを通過できるようにします。
レプリケーション ユーザーを作成します。
psql -h localhost -U postgres -c "create user REPLICA_USER with replication password 'PASSWORD'; grant pg_read_all_settings to REPLICA_USER;"プライマリ サーバーの
/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/24DATA_DIR: プライマリ サーバーのデータ ディレクトリ パス。
プライマリ サーバーを再起動します。
sudo systemctl restart alloydbomniPG_VERSION
レプリカ サーバーの作成と構成
AlloyDB Omni レプリカ サーバーを作成して構成するには、次の操作を行います。
レプリカがプライマリ サーバーとネットワーク接続していることを確認します。
ping SOURCE_IPSOURCE_IPは、複製元のプライマリ AlloyDB Omni インスタンスの IP アドレスに置き換えます。レプリカがプライマリ サーバーに接続できることを確認します。
psql "host=SOURCE_IP user=REPLICA_USER replication=1" -c "IDENTIFY_SYSTEM;"出力は次のようになります。
systemid | timeline | xlogpos | dbname ---------------------+----------+-----------+-------- 7376500460465963036 | 1 | 0/454B670 | (1 row)レプリカには、ディスク上の永続ストレージ ロケーションが必要です。
pg_basebackup \ --pgdata=DATA_DIR \ --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: レプリケーション スロットの名前のラベル。DATA_DIR: レプリカ サーバーのデータ ディレクトリ パス。
レプリカ インスタンスを起動します。
sudo systemctl start alloydbomniPG_VERSION
プライマリ サーバーでレプリケーション ステータスを確認する
レプリケーションが正しく構成されていることを確認するには、プライマリ サーバーのホストで次のコマンドを実行します。
psql -h localhost -U postgres -c "select * from pg_stat_replication"出力テーブルには、プライマリ データベース サーバーに接続されているレプリカごとに 1 行が含まれます。
レプリケーションを設定すると、プライマリ データベース サーバーの行に対するすべての挿入、更新、削除が数秒以内にレプリカで読み取り可能になります。