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 を使用して、読み取りレプリカを作成して管理できます。
前提条件
- Azure CLI 2.0 のインストール
- プライマリ サーバーになる Azure Database for PostgreSQL サーバー。
プライマリ サーバーを準備する
プライマリ サーバーの
azure.replication_support
値を確認します。 読み取りレプリカを機能させるには、少なくともレプリカである必要があります。az postgres server configuration show --resource-group myresourcegroup --server-name mydemoserver --name azure.replication_support
azure.replication_support
が少なくともレプリカでない場合は、それを設定します。az postgres server configuration set --resource-group myresourcegroup --server-name mydemoserver --name azure.replication_support --value REPLICA
変更を適用するために、サーバーを再起動します。
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 を使用して、読み取りレプリカを作成して管理できます。
プライマリ サーバーを準備する
プライマリ サーバーの
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
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" } }
変更を適用するために、サーバーを再起動します。
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
次のステップ
- Azure Database for PostgreSQL の読み取りレプリカについて確認してください。
- Azure portal で読み取りレプリカを作成および管理する方法を確認する。