IBM Cloud Docs
読み取り専用レプリカの構成

読み取り専用レプリカの構成

Databases for EnterpriseDB は非推奨です。 2025年6月16日現在、新しいインスタンスを展開することはできません。 既存のインスタンスは2025年10月15日までサポートされます。 その日までにまだ存在しているインスタンスはすべて削除されます。 詳細は 、 Databases for EnterpriseDB の廃止 を参照してください。

IBM Cloud® Databases for EnterpriseDB のデプロイメントは、別の Databases for EnterpriseDB のデプロイメントの読み取り専用レプリカとしてセットアップすることができます。

読み取り専用レプリカとは、非同期レプリケーションを使用して、リーダー・デプロイメントのすべてのデータをレプリカ・デプロイメントに複製するようにセットアップしたものです。 名前が示すとおり、読み取り専用レプリカは読み取りトランザクションをサポートするので、書き込み中心の操作と読み取り中心の操作の両方があるデータベースの負荷を分散させることができます。 読み取り専用レプリカの Databases for EnterpriseDB データ・メンバーは 1 台であり、リーダーと同じようにメンバーの使用量を基準とする料金が課金されます。

読み取り専用レプリカに関する考慮事項

  • 読み取り専用レプリカは、ソース構成と同じリージョンに置くことも、別のリージョンに置いて、リージョンをまたいでデータを複製することもできます。

  • 読み取り専用レプリカは、リーダーと同じメジャー・バージョンでなければなりません。

  • 読み取り専用レプリカでは、バックアップは利用できません。 バックアップは、リーダーのデプロイメントでのみ取得されます。

  • EU のクラウド対応リージョン (現時点では eu-de) を出入りする読み取りレプリケーションはサポートされません。 これらのリージョンの中ではサポートされます。

  • 1 リーダーにつき読み取り専用レプリカ 5 台という制限があります。

  • 読み取り専用レプリカはリーダー・クラスターのプライマリー/フォロワーの選択に関与しないので、読み取り専用レプリカへのフェイルオーバーは自動化されません。 読み取り専用レプリカのフル・デプロイメントへのプロモーションは、ユーザーが開始して手動で行う作業です。

  • 読み取り専用レプリカの最小サイズは、RAM 3 GB およびディスク 60 GB です。 リーダーのデプロイメントがこれより小さくても、この最小サイズは変わりません。

  • 読み取り専用レプリカが、リーダーに合わせて自動的にスケーリングされることはありません。 保管するデータの量がデプロイメントに割り振られているディスクの量を超える場合は、読み取り専用レプリカのディスクをスケーリングしてから、リーダーのディスクをスケーリングしてください。 読み取り専用レプリカを最初にスケーリングすることで、読み取り専用レプリカのスペースが枯渇しないようにします。 スペースではなくパフォーマンスのためにリーダーのディスクをスケーリングした場合は、読み取り専用レプリカのスケーリングは必須ではありません。

  • レプリケーションは非同期で行われるので、レプリケーションに遅れが生じることがあります。 デフォルトでは、プライマリーとレプリカの間で整合性に関する通信は行われません。 再同期が必要になるほど、読み取り専用のレプリカが遅れる可能性があります。 リーダーから地理的に遠く離れたリージョンにレプリカを置くと、レプリケーションの遅れが大きくなります。

  • 読み取り専用レプリカは、データ・メンバー 1 台のデプロイメントであるため、内部的に高可用性ではありません。 メンテナンス時には一時的な中断やダウンタイムが発生しがちです。 読み取り専用レプリカに依存するアプリケーションがある場合は、失敗した照会を再試行するロジックや、複数の読み取り専用レプリカに負荷を分散させるロジックを実装してください。

リーダー

読み取り専用レプリカをプロビジョンする前の {{site.data.keyword.databases-for-enterpisedb}} デプロイメントの_「読み取りレプリカ (Read Replicas)」_タブの中央ペインには、読み取りレプリカが存在していないことが示され、**「作成」**ボタンが表示されます。

レプリカ前のレプリケーションペイン
レプリカ前のレプリケーションペイン

デプロイメントがリーダーであり、既に読み取り専用レプリカが接続されている場合、_「複製」_ペインには、レプリカ・デプロイメントのリストと、各デプロイメントへのリンクが表示されます。 読み取り専用レプリカのデプロイメント名の右側にある歯車をクリックすると、そのレプリカを管理できます。

リーダにアタッチされているレプリカのリスト
リーダにアタッチされているレプリカのリスト

UIでの読み取り専用レプリカのプロビジョニング

リーダーの_「レプリカの読み取り」タブで**「読み取り専用レプリカの作成」**をクリックして、読み取り専用レプリカをプロビジョンできます。 ソース・インスタンスは自動的に入力されます。 読み取り専用レプリカの名前は「サービス名」_フィールドに自動生成されますが、自由に名前変更できます。 レプリカをデプロイするリージョンと、初期メモリー割り振り量を選択できます。 ディスク・サイズ、バージョン、パブリック・エンドポイントまたはプライベート・エンドポイントは、リーダーのデプロイメントの設定に合わせて自動的に構成されます。

Key Protect を使用する場合は、CLI と API でプロビジョニングしないと、Bring Your Own Key (BYOK) がサポートされません。 それ以外でプロビジョンすると、読み取り専用レプリカは、生成された鍵で暗号化されます。

CLIによるプロビジョニング

CLIによる読み取り専用レプリカのプロビジョニングは、標準的なDatabases for EnterpriseDBデプロイメントのプロビジョニング と同様に動作します。 プロビジョニングはリソース・コントローラーで処理され、パラメーター {"remote_leader_id": "crn:v1:..."} を使用して、プロビジョニングするレプリカのリーダーを指定します。

Key Protect を使用する場合は、CLI と API でプロビジョニングしないと、Bring Your Own Key (BYOK) がサポートされません。 それ以外でプロビジョンすると、読み取り専用レプリカは、生成された鍵で暗号化されます。

CLIで読み取り専用のレプリカをプロビジョニングするには、次のようなコマンドを使用します:

ibmcloud resource service-instance-create <replica_name> databases-for-enterprisedb standard <region> \
-p \ '{
  "remote_leader_id": "crn:v1:bluemix:public:databases-for-enterprisedb:us-south:a/54e8ffe85dcedf470db5b5ee6ac4a8d8:1b8f53db-fc2d-4e24-8470-f82b15c71819::",
  "members_memory_allocation_mb": "3072",
  "members_disk_allocation_mb": "61440"
}'

RAMとディスクの容量の両方を指定する必要があります。最小サイズはRAMが3GB、ディスクが60GBであることを念頭に置いてください。 オプションで、読み取り専用レプリカでパブリックとプライベートのどちらのエンドポイントを使用するかを指定します。 読み取り専用レプリカのバージョンは指定できません。 このバージョンは、リーダーのデプロイメントと同じメジャー・バージョンに自動的に設定されます。

API を使用したプロビジョニング

CLIによる読み取り専用レプリカのプロビジョニングは、標準的なDatabases for EnterpriseDBデプロイメントのプロビジョニング と同様に動作します。 プロビジョニングはリソース・コントローラーで処理され、パラメーター {"remote_leader_id": "crn:v1:..."} を使用して、プロビジョニングするレプリカのリーダーを指定します。

Key Protect を使用する場合は、CLI と API でプロビジョニングしないと、Bring Your Own Key (BYOK) がサポートされません。 それ以外でプロビジョンすると、読み取り専用レプリカは、生成された鍵で暗号化されます。

APIを通じて読み取り専用のレプリカをプロビジョニングするには、以下のようなコマンドを使用する:

curl -X POST \
  https://resource-controller.cloud.ibm.com/v2/resource_instances \
  -H 'Authorization: Bearer <>' \
  -H 'Content-Type: application/json' \
    -d '{
    "name": "<replica_name>",
    "target": "<region>",
    "resource_group": "<your_resource_group_id>",
    "resource_plan_id": "databases-for-enterprisedb-standard",
    "remote_leader_id": "crn:v1:bluemix:public:databases-for-enterprisedb:us-south:a/54e8ffe85dcedf470db5b5ee6ac4a8d8:1b8f53db-fc2d-4e24-8470-f82b15c71819::",
    "members_memory_allocation_mb": "3072",
    "members_disk_allocation_mb": "61440"
  }'

RAMとディスクの容量の両方を指定する必要があります。最小サイズはRAMが3GB、ディスクが60GBであることを念頭に置いてください。 オプションで、読み取り専用レプリカでパブリックとプライベートのどちらのエンドポイントを使用するかを指定します。 読み取り専用レプリカのバージョンは指定できません。 このバージョンは、リーダーのデプロイメントと同じメジャー・バージョンに自動的に設定されます。

読み取り専用レプリカ

読み取り専用レプリカの_「レプリカの読み取り」タブの「複製」_ペインには、その名前とリージョン、およびリーダーの名前とリージョンが表示されます。 また、読み取り専用レプリカを再同期するボタンや、プロモートするボタンもあります。

読み取り専用レプリカのレプリケーション・ペイン
読み取り専用レプリカのレプリケーション・ペイン

レプリケーション状況の確認

レプリケーション状況は自動的にはモニターされません。ユーザーがレプリケーションをモニターする必要があります。

psql で読み取り専用レプリカのレプリケーション状況を確認できますが、リーダーから実行する必要があります。 管理者の資格情報psqlを使用して、リーダーのデプロイメントに接続してください。 接続したら、SELECT * from pg_stat_replication; を実行します。

読み取り専用レプリカのユーザーと特権

  • リーダーのユーザーは、読み取り専用レプリカをプロビジョニングする前に存在していたユーザーであっても、リーダーのオブジェクトに対して持っている特権と同じ特権で、読み取り専用レプリカにログインして読み取りを実行することができます。

  • 1 つのリーダーに複数の読み取り専用レプリカを関連付けた場合、リーダーで作成したユーザーは、他のすべての読み取り専用レプリカにも作成されます。

  • adminユーザーを含め、リーダーで作成したユーザーは、読み取り専用レプリカをスタンドアロン・デプロイメントにプロモートしてもレプリカに存在し続けます。 読み取り専用レプリカをプロモートすると、リーダーのすべてのユーザーと特権が、プロモートしたデプロイメントに転送されます。

  • 読み取り専用レプリカに対する書き込み操作は、すべてのユーザーについてフィルタリングまたは拒否されるわけではなく、データベース・レベルで機能しなくなります。

読み取り専用レプリカにはアクセスできるが、読み取り専用レプリカからリーダーにアクセスすることはできないユーザーを作成することもできます。 1 つのリーダーに複数の読み取り専用レプリカを関連付けた場合に、いずれかの読み取り専用レプリカでユーザーを作成すると、そのユーザーは他のすべての読み取り専用レプリカにも作成されます。

ある読み取り専用レプリカで作成した読み取り専用レプリカ・ユーザーは、それらのレプリカに接続して読み取りを実行することができます。 読み取り専用レプリカ・ユーザーは、リーダーに接続して操作を実行することはできません。 また、読み取り専用レプリカをスタンドアロン・デプロイメントにプロモートすると、存在しなくなります。

読み取り専用レプリカで作成したユーザーには、リーダーから特権が割り当てられ、ibm-cloud-base-user-ro 役割が割り当てられ、 ibm-cloud-base-user グループのメンバーになります。 サービス資格情報、CLI、または API を使用して作成されたリーダーのすべてのユーザーを含め、このグループの他のメンバーによって作成されたすべてのオブジェクトにアクセスできます。 ibm-cloud-base-user の特権によって、読み取り専用レプリカで作成したユーザーは、管理者ユーザーや、psql で作成された他のユーザーによって作成されたオブジェクトにアクセスすることができません。 詳しくは、Databases for EnterpriseDB の役割と特権ページを参照してください。

UIでの読み取り専用レプリカの再同期

読み取り専用レプリカを再同期する必要がある場合は、**「読み取り専用レプリカの再同期 (Resync Read-Only Replica)」**ボタンをクリックします。 再同期は中断を伴う操作です。再同期を実行すると、読み取り専用レプリカのデータは解体されて最初から再構築されます。 再同期の実行中は、読み取り専用レプリカで他の操作を実行することも、照会を実行することもできません。 照会の宛先がリーダーに変更されることはないので、読み取り専用レプリカへの接続は、再同期が完了するまで失敗します。

読み取り専用レプリカの再同期にかかる時間はそれぞれに異なりますが、長い時間がかかるプロセスになる可能性があります。

CLIでの読み取り専用レプリカの再同期

CLI を使用して再同期を開始するには、cdb read-replica-resync コマンドを使用します。

ibmcloud cdb read-replica-resync <deployment name>

読み取り専用レプリカの再同期にかかる時間はそれぞれに異なりますが、長い時間がかかるプロセスになる可能性があります。

APIで読み取り専用レプリカを再同期する

API を使用して再同期を開始するには、/deployments/{id}/remotes/resync エンドポイントに POST を送信します。

curl -X POST \
  https://api.{region}.databases.cloud.ibm.com/v4/ibm/deployments/{id}/remotes/resync \
  -H 'Authorization: Bearer <>'

UIで読み取り専用レプリカをプロモートする

読み取り専用レプリカを、読み取り操作だけでなく書き込み操作も受け入れる独立したクラスターにプロモートすることができます。 リーダーのデプロイメントに問題が発生した場合に、読み取り専用レプリカをスタンドアロン・クラスターにプロモートして、アプリケーションからの書き込みの受け入れを開始することができます。

UI から読み取り専用レプリカを昇格するには、 「読み取り専用レプリカの昇格」 をクリックします。

プロモートすると、読み取り専用レプリカはリーダーへの接続を終了し、スタンドアロンの Databases for EnterpriseDB デプロイメントになります。 このデプロイメントは読み取り操作と書き込み操作の受け入れと実行を開始できます。バックアップが有効になり、独自の管理者ユーザーが発行されます。 新規データ・メンバーが 1 台追加されるので、デプロイメントはデータ・メンバー 2 台のクラスターになります。 これによってコストは増えますが (メンバーの使用量を基準とする同じ料金が課金されるため)、デプロイメントのメンバーは 1 台ではなく 2 台になります。

読み取り専用レプリカをプロモートするときに、通常はプロモート時に取得する初期バックアップをスキップすることができます。 初期バックアップをスキップすると、レプリカはより早く使用可能になりますが、即時バックアップは利用できません。 プロモーションのプロセスが完了したら、オンデマンド・バックアップを開始できます。

独立したデプロイメントにプロモートした読み取り専用レプリカは、読み取り専用レプリカに戻すことも、リーダーに再参加させることもできなくなります。

CLIでの読み取り専用レプリカのプロモート

プロモートすると、読み取り専用レプリカはリーダーへの接続を終了し、スタンドアロンの Databases for EnterpriseDB デプロイメントになります。 このデプロイメントは読み取り操作と書き込み操作の受け入れと実行を開始できます。バックアップが有効になり、独自の管理者ユーザーが発行されます。 新規データ・メンバーが 1 台追加されるので、デプロイメントはデータ・メンバー 2 台のクラスターになります。 これによってコストは増えますが (メンバーの使用量を基準とする同じ料金が課金されるため)、デプロイメントのメンバーは 1 台ではなく 2 台になります。

読み取り専用レプリカをプロモートするときに、通常はプロモート時に取得する初期バックアップをスキップすることができます。 初期バックアップをスキップすると、レプリカはより早く使用可能になりますが、即時バックアップは利用できません。 プロモーションのプロセスが完了したら、オンデマンド・バックアップを開始できます。

独立したデプロイメントにプロモートした読み取り専用レプリカは、読み取り専用レプリカに戻すことも、リーダーに再参加させることもできなくなります。

CLI を使用してプロモートするには、cdb read-replica-promote コマンドを使用します。

ibmcloud cdb read-replica-promote <deployment name>

APIで読み取り専用レプリカをプロモートする

プロモートすると、読み取り専用レプリカはリーダーへの接続を終了し、スタンドアロンの Databases for EnterpriseDB デプロイメントになります。 このデプロイメントは読み取り操作と書き込み操作の受け入れと実行を開始できます。バックアップが有効になり、独自の管理者ユーザーが発行されます。 新規データ・メンバーが 1 台追加されるので、デプロイメントはデータ・メンバー 2 台のクラスターになります。 これによってコストは増えますが (メンバーの使用量を基準とする同じ料金が課金されるため)、デプロイメントのメンバーは 1 台ではなく 2 台になります。

読み取り専用レプリカをプロモートするときに、通常はプロモート時に取得する初期バックアップをスキップすることができます。 初期バックアップをスキップすると、レプリカはより早く使用可能になりますが、即時バックアップは利用できません。 プロモーションのプロセスが完了したら、オンデマンド・バックアップを開始できます。

独立したデプロイメントにプロモートした読み取り専用レプリカは、読み取り専用レプリカに戻すことも、リーダーに再参加させることもできなくなります。

API を使用してプロモートするには、/deployments/{id}/remotes/promotion エンドポイントに POST を送信します。

curl -X POST \
  https://api.{region}.databases.cloud.ibm.com/v4/ibm/deployments/{id}/remotes/promotion \
  -H 'Authorization: Bearer <>'  \
 -H 'Content-Type: application/json' \
 -d '{"promotion": {}}' \

プロモートし、プロモート後の初期バックアップをスキップするには、JSON 本文に skip_initial_backup も設定します。

curl -X POST \
  https://api.{region}.databases.cloud.ibm.com/v4/ibm/deployments/{id}/remotes/promotion \
  -H 'Authorization: Bearer <>'  \
 -H 'Content-Type: application/json' \
 -d '{"promotion": {"skip_initial_backup": true}}' \