Azure CLI、REST API から読み取りレプリカを作成および管理する

適用対象: Azure Database for PostgreSQL - 単一サーバー

重要

Azure Database for PostgreSQL - シングル サーバーは廃止パスにあります。 Azure Database for PostgreSQL - フレキシブル サーバーにアップグレードすることを強くお勧めします。 Azure Database for PostgreSQL - フレキシブル サーバーへの移行の詳細については、Azure Database for PostgreSQL 単一サーバーの現状に関するページを参照してください。

この記事では、Azure CLI と REST API を使用して Azure Database for PostgreSQL の読み取りレプリカを作成および管理する方法について説明します。 読み取りレプリカの詳細については、概要を参照してください。

Azure レプリケーションのサポート

読み取りレプリカ論理デコードはどちらも、情報を Postgres 書き込み先行ログ (WAL) に依存しています。 これらの 2 つの機能には、Postgres とは異なるレベルのログが必要です。 論理デコードには、読み取りレプリカよりも高いレベルのログが必要です。

適切なレベルのログを構成するには、Azure レプリケーション サポート パラメーターを使用します。 Azure レプリケーション サポートには、次の 3 つの設定オプションがあります。

  • オフ - 最小限の情報を WAL に格納します。 この設定は、ほとんどの Azure Database for PostgreSQL サーバーでは使用できません。
  • レプリカ - [オフ] よりも冗長です。 これは、読み取りレプリカを機能させるために必要な最小レベルのログです。 ほとんどのサーバーでは、この設定が既定値です。
  • 論理 - [レプリカ] よりも冗長です。 これは、論理デコードを機能させるための最小レベルのログです。 読み取りレプリカはこの設定でも機能します。

Note

書き込み集中型の永続的で大量のプライマリのワークロードのために読み取りレプリカをデプロイする場合、レプリケーションの遅延が増加し続け、プライマリに追いつくことができない可能性があります。 これにより、レプリカで受信されるまで WAL ファイルが削除されないため、プライマリでのストレージの使用量も増加する可能性があります。

Azure CLI

Azure CLI を使用して、読み取りレプリカを作成して管理できます。

前提条件

プライマリ サーバーを準備する

  1. プライマリ サーバーの azure.replication_support 値を確認します。 読み取りレプリカを機能させるには、少なくともレプリカである必要があります。

    az postgres server configuration show --resource-group myresourcegroup --server-name mydemoserver --name azure.replication_support
    
  2. azure.replication_support が少なくともレプリカでない場合は、それを設定します。

    az postgres server configuration set --resource-group myresourcegroup --server-name mydemoserver --name azure.replication_support --value REPLICA
    
  3. 変更を適用するために、サーバーを再起動します。

    az postgres server restart --name mydemoserver --resource-group myresourcegroup
    

読み取りレプリカを作成します

az postgres server replica create コマンドには、次のパラメーターが必要です。

設定 値の例 説明
resource-group myresourcegroup レプリカ サーバーが作成されるリソース グループ。
name mydemoserver-replica 作成する新しいレプリカ サーバーの名前。
source-server mydemoserver レプリケート元の既存のプライマリ サーバーの名前またはリソース ID。 レプリカとプライマリのリソース グループを異なるものにする場合は、リソース ID を使います。

次の CLI の例では、レプリカはプライマリと同じリージョンに作成されます。

az postgres server replica create --name mydemoserver-replica --source-server mydemoserver --resource-group myresourcegroup

リージョンをまたがる読み取りレプリカを作成するには、--location パラメーターを使用します。 次の CLI の例では、米国西部にレプリカを作成します。

az postgres server replica create --name mydemoserver-replica --source-server mydemoserver --resource-group myresourcegroup --location westus

Note

レプリカを作成できるリージョンの詳細については、読み取りレプリカの概念に関する記事を参照してください。

汎用またはメモリ最適化プライマリ サーバーで azure.replication_support パラメーターを [REPLICA] に設定しておらず、サーバーを再起動していないと、エラーが返されます。 レプリカを作成する前に、この 2 つの手順を済ませておいてください。

重要

読み取りレプリカの概要に関するページの考慮事項セクションを確認してください。

プライマリ サーバーの設定が新しい値に更新される前に、レプリカの設定をそれと同等以上の値に更新します。 このアクションにより、プライマリに対して行われたすべての変更がレプリカに反映されるようになります。

レプリカの一覧表示

プライマリ サーバーのレプリカの一覧を表示するには、az postgres server replica list コマンドを使用します。

az postgres server replica list --server-name mydemoserver --resource-group myresourcegroup 

レプリカ サーバーへのレプリケーションを停止します。

プライマリ サーバーと読み取りレプリカの間のレプリケーションを停止するには、az postgres server replica stop コマンドを使用します。

プライマリ サーバーと読み取りレプリカへのレプリケーションを停止した後、それを元に戻すことはできません。 読み取りレプリカは、読み取りと書き込みの両方をサポートするスタンドアロン サーバーになります。 スタンドアロン サーバーをもう一度レプリカにすることはできません。

az postgres server replica stop --name mydemoserver-replica --resource-group myresourcegroup 

プライマリ サーバーまたはレプリカ サーバーを削除する

プライマリ サーバーまたはレプリカ サーバーを削除するには、az postgres server delete コマンドを使用します。

プライマリ サーバーを削除すると、すべての読み取りレプリカへのレプリケーションが停止されます。 読み取りレプリカは、読み取りと書き込みの両方をサポートするようになったスタンドアロン サーバーになります。

az postgres server delete --name myserver --resource-group myresourcegroup

REST API

Azure REST API を使用して、読み取りレプリカを作成して管理できます。

プライマリ サーバーを準備する

  1. プライマリ サーバーの azure.replication_support 値を確認します。 読み取りレプリカを機能させるには、少なくともレプリカである必要があります。

    GET https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DBforPostgreSQL/servers/{masterServerName}/configurations/azure.replication_support?api-version=2017-12-01
    
  2. azure.replication_support が少なくともレプリカでない場合は、それを設定します。

    PUT https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DBforPostgreSQL/servers/{masterServerName}/configurations/azure.replication_support?api-version=2017-12-01
    
    {
     "properties": {
     "value": "replica"
     }
    }
    
  3. 変更を適用するために、サーバーを再起動します。

    POST https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DBforPostgreSQL/servers/{masterServerName}/restart?api-version=2017-12-01
    

読み取りレプリカを作成します

作成 API を使用して、読み取りレプリカを作成できます。

PUT https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DBforPostgreSQL/servers/{replicaName}?api-version=2017-12-01
{
  "location": "southeastasia",
  "properties": {
    "createMode": "Replica",
    "sourceServerId": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DBforPostgreSQL/servers/{masterServerName}"
  }
}

注意

レプリカを作成できるリージョンの詳細については、読み取りレプリカの概念に関する記事を参照してください。

汎用またはメモリ最適化プライマリ サーバーで azure.replication_support パラメーターを [REPLICA] に設定しておらず、サーバーを再起動していないと、エラーが返されます。 レプリカを作成する前に、この 2 つの手順を済ませておいてください。

レプリカは、プライマリと同じコンピューティングとストレージの設定を使用して作成されます。 レプリカが作成されたら、プライマリ サーバーとは独立にいくつかの設定 (コンピューティング世代、仮想コア、ストレージ、およびバックアップ保持期間) を変更できます。 価格レベルも独立して変更できます (Basic レベルへの変更や Basic レベルからの変更を除く)。

重要

プライマリ サーバーの設定が新しい値に更新される前に、レプリカの設定をそれと同等以上の値に更新します。 このアクションにより、プライマリに対して行われたすべての変更がレプリカに反映されるようになります。

レプリカの一覧表示

レプリカ一覧表示 API を使用して、プライマリ サーバーのレプリカの一覧を表示できます。

GET https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DBforPostgreSQL/servers/{masterServerName}/Replicas?api-version=2017-12-01

レプリカ サーバーへのレプリケーションを停止します。

更新 API を使用して、プライマリ サーバーと読み取りレプリカの間のレプリケーションを停止できます。

プライマリ サーバーと読み取りレプリカへのレプリケーションを停止した後、それを元に戻すことはできません。 読み取りレプリカは、読み取りと書き込みの両方をサポートするスタンドアロン サーバーになります。 スタンドアロン サーバーをもう一度レプリカにすることはできません。

PATCH https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DBforPostgreSQL/servers/{replicaServerName}?api-version=2017-12-01
{
  "properties": {
    "replicationRole":"None"  
   }
}

プライマリ サーバーまたはレプリカ サーバーを削除する

プライマリ サーバーまたはレプリカ サーバーを削除するには、削除 API を使用します。

プライマリ サーバーを削除すると、すべての読み取りレプリカへのレプリケーションが停止されます。 読み取りレプリカは、読み取りと書き込みの両方をサポートするようになったスタンドアロン サーバーになります。

DELETE https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DBforPostgreSQL/servers/{serverName}?api-version=2017-12-01

次のステップ