Azure portal、CLI、およびREST API から Azure Database for PostgreSQL - フレキシブル サーバーの読み取りレプリカを作成および管理する
[アーティクル] 08/15/2024
10 人の共同作成者
フィードバック
この記事の内容
適用対象: Azure Database for PostgreSQL - フレキシブル サーバー
この記事では、Azure Database for PostgreSQL フレキシブル サーバーの読み取りレプリカを、Azure portal、CLI、および REST API から作成および管理する方法について説明します。 読み取りレプリカの詳細については、概要 を参照してください。
前提条件
プライマリ サーバーにする Azure Database for PostgreSQL フレキシブル サーバー インスタンス 。
Note
書き込み集中型で持続的かつ高負荷なプライマリ ワークロードに対して読み取りレプリカを配置する場合、レプリケーションの遅延が増加し続け、プライマリに追いつくことができない可能性があります。 WAL ファイルはレプリカで受信されてはじめて削除されるため、これによりプライマリでのストレージの使用量が増加する可能性もあります。
プライマリ設定を確認する
Azure Database for PostgreSQL フレキシブル サーバーの読み取りレプリカを設定する前に、必要な前提条件を満たすようにプライマリ サーバーが構成されていることを確認します。 プライマリ サーバー上の特定の設定は、レプリカを作成する機能に影響する可能性があります。
ストレージの自動拡張 : プライマリ サーバーとその読み取りレプリカのストレージ自動拡張設定は、一貫性を確保し、レプリケーションの中断を防ぐために、特定のガイドラインに従う必要があります。 詳細なルールと設定については、「ストレージの自動拡張 」を参照してください。
Premium SSD v2 : 現在のリリースでは、Premium SSD v2 ストレージを使用したプライマリ サーバーの読み取りレプリカの作成はサポートされていません。 ワークロードで読み取りレプリカが必要な場合は、プライマリ サーバーに別のストレージ オプションを選択します。
Azure portal で、レプリカに使用する Azure Database for PostgreSQL フレキシブル サーバー インスタンスを選択します。
[概要] ダイアログで、PostgreSQL のバージョン (例 15.4
) をメモします。 また、プライマリが配置されているリージョン (例 East US
) もメモしてください。
サーバー サイドバーの [設定] で、[コンピューティング + ストレージ ] を選択します。
次の設定を確認してメモします。
[設定] で [ネットワーク] を選択します。
ネットワーク設定を確認します。
Note
このガイドに記載されているコマンドは、Azure CLI バージョン 2.56.0 以降に適用できます。 これらのコマンドが正常に実行されるように、必要なバージョンまたはそれ以降のバージョンがインストールされていることを確認します。 現在の Azure CLI のバージョンは、コマンド ライン インターフェイスで az --version
を実行することで確認できます。 Azure CLI を最新バージョンに更新するには、Azure CLI ドキュメント に記載されている手順に従ってください。
Azure PostgreSQL フレキシブル サーバーの構成と現在の状態を表示するには、az postgres flexible-server show
コマンドを使用します。 このコマンドにより、指定されたサーバーに関する詳細情報を確認できます。
az postgres flexible-server show \
--resource-group <resource-group> \
--name <server-name>
<resource-group>
と <server-name>
を、特定のリソース グループと、表示するサーバーの名前に置き換えます。
次の設定を確認してメモします。
コンピューティング レベル、プロセッサ、サイズ (例 Standard_D8ads_v5
)。
ストレージ
Type
ストレージ サイズ (例 128
)
自動拡張
高可用性
バックアップの設定
サンプル応答
{
"administratorLogin": "myadmin",
"administratorLoginPassword": null,
"authConfig": {
"activeDirectoryAuth": "Disabled",
"passwordAuth": "Enabled",
"tenantId": null
},
"availabilityZone": "2",
"backup": {
"backupRetentionDays": 7,
"earliestRestoreDate": "2024-01-06T11:43:44.485537+00:00",
"geoRedundantBackup": "Disabled"
},
"createMode": null,
"dataEncryption": {
"geoBackupEncryptionKeyStatus": null,
"geoBackupKeyUri": null,
"geoBackupUserAssignedIdentityId": null,
"primaryEncryptionKeyStatus": null,
"primaryKeyUri": null,
"primaryUserAssignedIdentityId": null,
"type": "SystemManaged"
},
"fullyQualifiedDomainName": "{serverName}.postgres.database.azure.com",
"highAvailability": {
"mode": "Disabled",
"standbyAvailabilityZone": null,
"state": "NotEnabled"
},
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DBforPostgreSQL/flexibleServers/{serverName}",
"identity": null,
"location": "East US",
"maintenanceWindow": {
"customWindow": "Disabled",
"dayOfWeek": 0,
"startHour": 0,
"startMinute": 0
},
"minorVersion": "0",
"name": "{serverName}",
"network": {
"delegatedSubnetResourceId": null,
"privateDnsZoneArmResourceId": null,
"publicNetworkAccess": "Enabled"
},
"pointInTimeUtc": null,
"privateEndpointConnections": null,
"replica": {
"capacity": 5,
"promoteMode": null,
"promoteOption": null,
"replicationState": null,
"role": "Primary"
},
"replicaCapacity": 5,
"replicationRole": "Primary",
"resourceGroup": "{resourceGroupName}",
"sku": {
"name": "Standard_D8ads_v5",
"tier": "GeneralPurpose"
},
"sourceServerResourceId": null,
"state": "Ready",
"storage": {
"autoGrow": "Disabled",
"iops": 500,
"storageSizeGb": 128,
"throughput": null,
"tier": "P10",
"type": ""
},
"systemData": {
"createdAt": "2023-11-08T11:27:48.972812+00:00",
"createdBy": null,
"createdByType": null,
"lastModifiedAt": null,
"lastModifiedBy": null,
"lastModifiedByType": null
},
"tags": {},
"type": "Microsoft.DBforPostgreSQL/flexibleServers",
"version": "16"
}
Azure Database for PostgreSQL フレキシブル サーバーでのサーバーの構成に関する情報を取得するには、特にストレージの自動拡張やプライベート リンクなどの最近導入された機能の設定を表示するには、最新の API バージョン 2023-06-01-preview
を使用する必要があります。 GET
要求は、次のような形式になります。
https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DBforPostgreSQL/flexibleServers/{serverName}?api-version=2023-06-01-preview
{subscriptionId}
、{resourceGroupName}
、および {serverName}
を、それぞれ Azure サブスクリプション ID、リソース グループ名、確認するプライマリ サーバーの名前に置き換えます。 この要求により、プライマリ サーバーの構成の詳細にアクセスできるようになり、読み取りレプリカを作成するために適切に設定されます。
次の設定を確認してメモします。
コンピューティング レベル、プロセッサ、サイズ (例 Standard_D8ads_v5
)。
ストレージ
Type
ストレージ サイズ (例 128
)
自動拡張
ネットワーク
高可用性
バックアップの設定
サンプル応答
{
"sku": {
"name": "Standard_D8ads_v5",
"tier": "GeneralPurpose"
},
"systemData": {
"createdAt": "2023-11-22T16:11:42.2461489Z"
},
"properties": {
"replica": {
"role": "Primary",
"capacity": 5
},
"storage": {
"type": "",
"iops": 500,
"tier": "P10",
"storageSizeGB": 128,
"autoGrow": "Disabled"
},
"network": {
"publicNetworkAccess": "Enabled"
},
"dataEncryption": {
"type": "SystemManaged"
},
"authConfig": {
"activeDirectoryAuth": "Disabled",
"passwordAuth": "Enabled"
},
"fullyQualifiedDomainName": "{serverName}.postgres.database.azure.com",
"version": "15",
"minorVersion": "4",
"administratorLogin": "myadmin",
"state": "Ready",
"availabilityZone": "1",
"backup": {
"backupRetentionDays": 7,
"geoRedundantBackup": "Disabled",
"earliestRestoreDate": "2023-11-23T12:55:33.3443218+00:00"
},
"highAvailability": {
"mode": "Disabled",
"state": "NotEnabled"
},
"maintenanceWindow": {
"customWindow": "Disabled",
"dayOfWeek": 0,
"startHour": 0,
"startMinute": 0
},
"replicationRole": "Primary",
"replicaCapacity": 5
},
"location": "East US",
"tags": {},
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DBforPostgreSQL/flexibleServers/{serverName}",
"name": "{serverName}",
"type": "Microsoft.DBforPostgreSQL/flexibleServers"
}
読み取りレプリカを作成します
読み取りレプリカを作成するには、次の手順に従います。
プライマリ サーバーとして使用する既存の Azure Database for PostgreSQL フレキシブル サーバー インスタンスを選択します。
サーバー サイドバーで、[設定] の [レプリケーション] を選択します。
[レプリカの作成] を選択します。
[基本] フォームに次の情報を入力します。
[確認と作成] を選択してレプリカの作成を確認するか、ファイアウォール規則を追加、削除、または変更する場合は [次へ: ネットワーク] を選択します。
残りの既定値のままにして、ページの下部にある [確認と作成] ボタンを選択するか、次のフォームに進んでタグを追加するか、データ暗号化方法を変更します。
最後の確認ウィンドウの情報を確認します。 準備ができたら、 [作成] を選択します。 新しいデプロイが作成されます。
配置中、プライマリが Updating
状態にあることが分かります。
読み取りレプリカが作成されたら、それを [レプリケーション] ウィンドウから表示できます。
Azure PostgreSQL フレキシブル サーバーの読み取りレプリカを作成するには、az postgres flexible-server replica create
コマンドを使用します。
az postgres flexible-server replica create \
--replica-name <replica-name> \
--resource-group <resource-group> \
--source-server <source-server-name> \
--location <location>
<replica-name>
、<resource-group>
、<source-server-name>
、および <location>
を特定の値に置き換えます。
読み取りレプリカが作成された後、プライマリ レプリカのレプリカであるすべてのサーバーのプロパティを取得するには、az postgres flexible-server replica create
コマンドを使用します。
az postgres flexible-server replica list \
--name <source-server-name> \
--resource-group <resource-group>
<source-server-name>
および <resource-group>
を特定の値に置き換えます。
サーバー作成 API を使用して、HTTP PUT
要求を開始します。
PUT https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DBForPostgreSql/flexibleServers/{replicaserverName}?api-version=2022-12-01
ここでは、{subscriptionId}
、{resourceGroupName}
、および {replicaserverName}
を、それぞれ特定の Azure サブスクリプション ID、リソース グループの名前、読み取りレプリカの希望する名前に置き換える必要があります。
{
"location": "eastus",
"properties": {
"createMode": "Replica",
"SourceServerResourceId": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DBForPostgreSql/flexibleServers/{sourceserverName}"
}
}
読み取りレプリカが作成された後、プライマリ レプリカのレプリカであるすべてのサーバーのプロパティを取得するには、レプリカのサーバーごとに一覧取得 API を使用して HTTP GET
要求を開始します。
GET https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DBForPostgreSql/flexibleServers/{sourceserverName}/replicas?api-version=2022-12-01
ここでは、{subscriptionId}
、{resourceGroupName}
、および {sourceserverName}
をそれぞれ、特定の Azure サブスクリプション ID、リソース グループの名前、プライマリ レプリカに割り当てた名前に置き換える必要があります。
[
{
"administratorLogin": null,
"administratorLoginPassword": null,
"authConfig": null,
"availabilityZone": null,
"backup": {
"backupRetentionDays": null,
"earliestRestoreDate": "2023-11-23T12:55:33.3443218+00:00",
"geoRedundantBackup": "Disabled"
},
"createMode": null,
"dataEncryption": {
"geoBackupEncryptionKeyStatus": null,
"geoBackupKeyUri": null,
"geoBackupUserAssignedIdentityId": null,
"primaryEncryptionKeyStatus": null,
"primaryKeyUri": null,
"primaryUserAssignedIdentityId": null,
"type": "SystemManaged"
},
"fullyQualifiedDomainName": null,
"highAvailability": null,
"id": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DBforPostgreSQL/flexibleServers/{replicaserverName}",
"identity": null,
"location": "eastus",
"maintenanceWindow": {
"customWindow": "Disabled",
"dayOfWeek": 0,
"startHour": 0,
"startMinute": 0
},
"minorVersion": null,
"name": "{replicaserverName}",
"network": {
"delegatedSubnetResourceId": null,
"privateDnsZoneArmResourceId": null,
"publicNetworkAccess": "Disabled"
},
"pointInTimeUtc": null,
"privateEndpointConnections": null,
"replica": {
"capacity": null,
"promoteMode": null,
"promoteOption": null,
"replicationState": "Active",
"role": "AsyncReplica"
},
"replicaCapacity": null,
"replicationRole": "AsyncReplica",
"resourceGroup": "{resourceGroupName}",
"sku": {
"name": "",
"tier": null
},
"sourceServerResourceId": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DBforPostgreSQL/flexibleServers/{serverName}",
"state": "Ready",
"storage": {
"autoGrow": "Disabled",
"iops": null,
"storageSizeGb": 0,
"throughput": null,
"tier": null,
"type": null
},
"systemData": {
"createdAt": "2023-11-22T17:11:42.2461489Z",
"createdBy": null,
"createdByType": null,
"lastModifiedAt": null,
"lastModifiedBy": null,
"lastModifiedByType": null
},
"tags": null,
"type": "Microsoft.DBforPostgreSQL/flexibleServers",
"version": null
}
]
重要
読み取りレプリカの概要に関するページの考慮事項セクション を確認してください。
レプリカの昇格中に発生する問題を回避するには、次のサーバー パラメーターを、必ず最初にレプリカで変更してから、プライマリで適用します: max_connections
、max_prepared_transactions
、max_locks_per_transaction
、max_wal_senders
、max_worker_processes
。
仮想エンドポイントの作成
Note
追加、編集、削除のように仮想エンドポイントに関連するすべての操作は、プライマリ サーバーのコンテキストで実行されます。
Azure portal でプライマリ サーバーを選びます。
サーバー サイドバーで、[設定] の [レプリケーション] を選択します。
[エンドポイントの作成] を選択します。
ダイアログで、エンドポイントのわかりやすい名前を入力します。 生成されている DNS エンドポイントに注目してください。
[作成] を選択します
Note
仮想エンドポイントを作成しない場合は、レプリカ昇格の試行でエラーが発生します。
仮想エンドポイントを作成するには、az postgres flexible-server virtual-endpoint create
コマンドを使用します。
az postgres flexible-server virtual-endpoint create \
--resource-group <resource-group> \
--server-name <primary-name> \
--name <virtual-endpoint-name> \
--endpoint-type ReadWrite \
--members <replica-name>
<resource-group>
、<primary-name>
、<virtual-endpoint-name>
、および <replica-name>
を特定の値に置き換えます。
Azure の REST API を使用して仮想エンドポイントを作成するには、HTTP PUT
要求を使用します。 要求は次のようになります。
PUT https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DBForPostgreSql/flexibleServers/{sourceserverName}/virtualendpoints/{virtualendpointName}?api-version=2023-06-01-preview
この要求に付随する JSON 本文は次のとおりです。
{
"Properties": {
"EndpointType": "ReadWrite",
"Members": ["{replicaserverName}"]
}
}
ここで、{replicaserverName}
は、この仮想エンドポイントのリーダー エンドポイント ターゲットとして含めるレプリカ サーバーの名前に置き換える必要があります。
仮想エンドポイントの一覧表示
仮想エンドポイントを一覧表示するには、次の手順を使用します。
Azure portal でプライマリ サーバーを選びます。
サーバー サイドバーで、[設定] の [レプリケーション] を選択します。
ページの上部に、リーダー エンドポイントとライター エンドポイントの両方が、それらが指しているサーバーの名前と一緒に表示されます。
仮想エンドポイントの詳細を表示するには、list
または show
コマンドを使用します。 許可される仮想エンドポイントはプライマリ/レプリカ ペアごとに 1 つだけなので、どちらのコマンドでも同じ結果を得られます。
list
コマンドの使用方法の例を次に示します。
az postgres flexible-server virtual-endpoint list \
--resource-group <resource-group> \
--server-name <server-name>
<server-name>
をプライマリ サーバーの名前に、<resource-group>
をリソース グループの名前に置き換えます。
show
コマンドを使用する方法を次に示します。
az postgres flexible-server virtual-endpoint show \
--name <virtual-endpoint-name>
--resource-group <resource-group> \
--server-name <server-name>
このコマンドでは、<virtual-endpoint-name>
、<server-name>
、および <resource-group>
をそれぞれの名前に置き換えます。 <server-name>
はプライマリ サーバーの名前です。
GET https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DBForPostgreSql/flexibleServers/{sourceserverName}/virtualendpoints?api-version=2023-06-01-preview
ここで、{sourceserverName}
は、仮想エンドポイントを管理するプライマリ サーバーの名前にする必要があります。
アプリケーションを仮想エンドポイントを指すように変更する
新しい仮想エンドポイントを使用するように Azure Database for PostgreSQL フレキシブル サーバー インスタンスを使用するすべてのアプリケーションを変更します (例: corp-pg-001.writer.postgres.database.azure.com
および corp-pg-001.reader.postgres.database.azure.com
)。
必要なすべてのコンポーネントが配置され、レプリカのプライマリへの昇格操作を実行する準備が整いました。
Azure portal からレプリカのレベルを上げるには、次の手順に従います。
Azure portal で、プライマリ Azure Database for PostgreSQL フレキシブル サーバー インスタンスを選択します。
サーバー メニューで、[設定] の [レプリケーション] を選択します。
[サーバー] で、レプリカの [昇格] アイコンを選択します。
ダイアログで、アクションが [プライマリ サーバーへの昇格] になっていることを確認します。
[データの同期] で、[計画済み - 昇格前にデータを同期] が選択されていることを確認します。
[昇格] を選択してプロセスを開始します。 完了すると、ロールは逆になります。レプリカがプライマリになり、プライマリがレプリカのロールを引き受けます。
Azure PostgreSQL フレキシブル サーバーのプライマリ サーバーにレプリカを昇格する場合は、az postgres flexible-server replica promote
コマンドを使用します。 このプロセスは、プライマリ サーバーとして機能するようにレプリカ サーバーを昇格し、現在のプライマリからレプリカ ロールに降格するうえで不可欠です。 コマンドで --promote-mode switchover
と --promote-option planned
を指定します。
az postgres flexible-server replica promote \
--resource-group <resource-group> \
--name <replica-server-name> \
--promote-mode switchover \
--promote-option planned
<resource-group>
と <replica-server-name>
を、特定のリソース グループとレプリカ サーバー名に置き換えます。 このコマンドにより、計画的かつスムーズにレプリカからプライマリ ロールに移行できます。
レプリカをプライマリ サーバーに昇格する場合は、特定の JSON
本文で HTTP PATCH
要求を使用して、昇格オプションを設定します。 このプロセスは、プライマリ サーバーとして機能するようにレプリカ サーバーを昇格する必要がある場合に重要です。
HTTP
要求の構造は次のとおりです。
PATCH https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DBForPostgreSql/flexibleServers/{replicaserverName}?api-version=2023-06-01-preview
{
"Properties": {
"Replica": {
"PromoteMode": "switchover",
"PromoteOption": "planned"
}
}
}
この JSON
では、昇格は、planned
昇格オプションを使用して switchover
モードで行われるよう設定されています。 昇格には、planned
または forced
の 2 つのオプションがありますが、この演習では planned
を選択しました。
Note
昇格するレプリカには、リーダー仮想エンドポイントが割り当てられている必要があります。そうでない場合、昇格時にエラーが発生します。
アプリケーションをテストする
いくつかの操作を実行するには、アプリケーションを再起動してから、それらの操作を試みます。 アプリケーションは、仮想エンドポイント接続文字列や DNS エントリを変更せずにシームレスに機能する必要があります。 今回はアプリケーションを実行したままにします。
元のサーバーとリージョンへのフェールバック
同じ操作を繰り返して、元のサーバーをプライマリに昇格させます。
Azure portal で、レプリカを選択します。
サーバー サイドバーで、[設定] の [レプリケーション] を選択します
[サーバー] で、レプリカの [昇格] アイコンを選択します。
ダイアログで、アクションが [プライマリ サーバーへの昇格] になっていることを確認します。
[データの同期] で、[計画済み - 昇格前にデータを同期] が選択されていることを確認します。
[昇格] を選択すると、プロセスが開始されます。 完了すると、ロールは逆になります。レプリカがプライマリになり、プライマリがレプリカのロールを引き受けます。
今回は、az postgres flexible-server replica promote
コマンドの <replica-server-name>
を変更して、現在レプリカとして機能している古いプライマリ サーバーを参照し、要求をもう一度実行します。
az postgres flexible-server replica promote \
--resource-group <resource-group> \
--name <replica-server-name> \
--promote-mode switchover \
--promote-option planned
<resource-group>
と <replica-server-name>
を、特定のリソース グループと現在のレプリカ サーバー名に置き換えます。
今回は、API 要求の {replicaserverName}
を変更して、現在レプリカとして機能している古いプライマリ サーバーを参照し、要求をもう一度実行します。
PATCH https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DBForPostgreSql/flexibleServers/{replicaserverName}?api-version=2023-06-01-preview
{
"Properties": {
"Replica": {
"PromoteMode": "switchover",
"PromoteOption": "planned"
}
}
}
この JSON
では、昇格は、planned
昇格オプションを使用して switchover
モードで行われるよう設定されています。 昇格には、planned
または forced
の 2 つのオプションがありますが、この演習では planned
を選択しました。
アプリケーションをテストする
ここでも、使用しているアプリケーションのいずれかに切り替えます。 プライマリとレプリカの状態が Updating
に変わるのを待ってから、いくつかの操作の実行を試みます。 レプリカの昇格中に、アプリケーションでエンドポイントへの一時的な接続の問題が発生する可能性があります。
セカンダリ読み取りレプリカを追加する
別のリージョンにセカンダリ読み取りレプリカを作成して、リーダー仮想エンドポイントを変更し、また最初のレプリカから独立したサーバーを作成します。
Azure portal で、プライマリ Azure Database for PostgreSQL フレキシブル サーバー インスタンスを選択します。
サーバー サイドバーで、[設定] の [レプリケーション] を選択します。
[レプリカの作成] を選択します。
3 番目のリージョンの情報 (例: westus
と corp-pg-westus-001
) を [基本] フォームに入力します
[確認と作成] を選択してレプリカの作成を確認するか、ファイアウォール規則を追加、削除、または変更する場合は [次へ: ネットワーク] を選択します。
ファイアウォールの設定をテストします。 プライマリ設定が自動的にコピーされていることに注意してください。
残りの既定値はそのままにします。そして、ページの下部にある [確認と作成] ボタンを選択するか、あるいは、セキュリティを構成する、またはタグを追加するには次のフォームに進みます。
最後の確認ウィンドウの情報を確認します。 準備ができたら、 [作成] を選択します。 新しいデプロイが作成されます。
配置中、プライマリが Updating
状態にあることが分かります。
セカンダリ読み取りレプリカを作成するには、az postgres flexible-server replica create
コマンドを使用します。
az postgres flexible-server replica create \
--replica-name <replica-name> \
--resource-group <resource-group> \
--source-server <source-server-name> \
--location <location>
プライマリ サーバーやその他のレプリカと区別するために、<replica-name>
に特徴的な名前を選択します。
<resource-group>
、<source-server-name>
、<location>
を特定の値に置き換えます。
セカンダリ読み取りレプリカを作成するには、サーバー作成 API を使用します。
PUT https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DBForPostgreSql/flexibleServers/{replicaserverName}?api-version=2022-12-01
プライマリ サーバーやその他のレプリカと区別するために、{replicaserverName}
に特徴的な名前を選択します。
{
"location": "westus3",
"properties": {
"createMode": "Replica",
"SourceServerResourceId": "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DBForPostgreSql/flexibleServers/{sourceserverName}"
}
}
場所は westus3
に設定されていますが、この設定は地理的および運用上のニーズに基づいて調整できます。
仮想エンドポイントの変更
Azure portal で、プライマリ Azure Database for PostgreSQL フレキシブル サーバー インスタンスを選択します。
サーバー サイドバーで、[設定] の [レプリケーション] を選択します。
省略記号を選択し、[編集] を選択します。
ダイアログで、新しいセカンダリ レプリカを選択します。
[保存] を選択します。 リーダー エンドポイントがセカンダリ レプリカを指すようになり、昇格操作はこのレプリカに関連付けられまました。
az postgres flexible-server virtual-endpoint update
コマンドを使用して、新しく作成されたセカンダリ レプリカを指すリーダー エンドポイントを変更できるようになりました。 必ず、<replica-name>
は、新しく作成された読み取りレプリカの名前に置き換えてください。
az postgres flexible-server virtual-endpoint update \
--resource-group <resource-group> \
--server-name <server-name> \
--name <virtual-endpoint-name> \
--endpoint-type ReadWrite \
--members <replica-name>
<resource-group>
、<server-name>
、<virtual-endpoint-name>
、および <replica-name>
を特定の値に置き換えます。
PATCH
要求を使用して、新しく作成されたセカンダリ レプリカを指すリーダー エンドポイントを変更できるようになりました。 必ず、{replicaserverName}
は、新しく作成された読み取りレプリカの名前に置き換えてください。
PATCH https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DBForPostgreSql/flexibleServers/{sourceserverName}/virtualendpoints/{virtualendpointName}?api-version=2023-06-01-preview
{
"Properties": {
"EndpointType": "ReadWrite",
"Members": ["{replicaserverName}"]
}
}
レプリカへの切り替えではなく、スタンドアロン サーバーになるようにレプリカのレプリケーションを中断することもできます。
Azure portal で、Azure Database for PostgreSQL フレキシブル サーバーのプライマリ サーバーを選択します。
サーバー サイドバーのサーバー メニューの [設定] で、[レプリケーション] を選択します。
[サーバー] で、独立したサーバーに昇格させるレプリカの [昇格] アイコンを選択します。
ダイアログで、アクションが [独立したサーバーに昇格し、レプリケーションから削除する] であることを確認します。これはプライマリ サーバーには影響しません 。
[データの同期] で、[計画済み - 昇格前にデータを同期] が選択されていることを確認します。
[昇格] を選択すると、プロセスが開始されます。 完了すると、サーバーはプライマリのレプリカではなくなります。
Azure PostgreSQL フレキシブル サーバーでレプリカを昇格するときの既定の動作は、独立したサーバーへの昇格です。 standalone
モードが既定で想定されているため、昇格は az postgres flexible-server replica promote
コマンドを --promote-mode
オプションを指定せずに使用することで実現できます。
az postgres flexible-server replica promote \
--resource-group <resource-group> \
--name <replica-server-name>
このコマンドでは、<resource-group>
と <replica-server-name>
を、特定のリソース グループ名と、作成した最初のレプリカ サーバー (仮想エンドポイントの一部ではなくなったもの) の名前に置き換えます。
PATCH
要求を使用して、レプリカをスタンドアロン サーバーに昇格させることができます。 最初の JSON
本文を使用して指定の Azure Management REST API URL に PATCH
要求を送信します。ここで、PromoteMode
は standalone
に設定され、PromoteOption
は planned
に設定されます。 ReplicationRole
を None
に設定する 2 番目の JSON
本文の形式は非推奨ですが、旧バージョンとの互換性のためにここでも説明します。
PATCH https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DBForPostgreSql/flexibleServers/{replicaserverName}?api-version=2023-06-01-preview
{
"Properties": {
"Replica": {
"PromoteMode": "standalone",
"PromoteOption": "planned"
}
}
}
{
"Properties": {
"ReplicationRole": "None"
}
}
Note
レプリカは、一度独立したサーバーに昇格させた後は、レプリケーション セットに追加し直すことはできません。
仮想エンドポイントを削除する
Azure portal でプライマリ サーバーを選びます。
サーバー サイドバーで、[設定] の [レプリケーション] を選択します。
ページの上部にある Virtual endpoints
セクションを見つけます。 エンドポイント名の横にある 3 つのドット (メニュー オプション) に移動し、展開して、Delete
を選択します。
削除の確認ダイアログが表示されます。 「このアクションを行うと仮想エンドポイント virtualendpointName
が削除されます」という警告が表示されます。 "Any clients connected using these domains may lose access." (これらのドメインを使用して接続されているすべてのクライアントは、アクセスを失う可能性があります。)影響を確認し、[削除] をクリックして確定します。
Azure PostgreSQL フレキシブル サーバーから仮想エンドポイントを削除するには、az postgres flexible-server virtual-endpoint delete
コマンドを使用します。 このアクションにより、指定された仮想エンドポイントが完全に削除されます。
az postgres flexible-server virtual-endpoint delete \
--resource-group <resource-group> \
--server-name <server-name> \
--name <virtual-endpoint-name>
このコマンドでは、<resource-group>
、<server-name>
、および <virtual-endpoint-name>
を、特定のリソース グループ、サーバー名、および削除する仮想エンドポイントの名前に置き換えます。
Azure の REST API を使用して仮想エンドポイントを削除するには、HTTP DELETE
要求を発行します。 要求 URL は次のように構成されます。
DELETE https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DBForPostgreSql/flexibleServers/{serverName}/virtualendpoints/{virtualendpointName}?api-version=2023-06-01-preview
レプリカの削除
スタンドアロン Azure Database for PostgreSQL フレキシブル サーバーインスタンスの削除と同様の方法で読み取りレプリカを削除できます。
Azure Portal で、読み取りレプリカの [概要] ページを開きます。 [削除] を選択します。
次の手順に従って、 [レプリケーション] ウィンドウから読み取りレプリカを削除することもできます。
Azure portal で、プライマリ Azure Database for PostgreSQL フレキシブル サーバー インスタンスを選択します。
サーバー メニューで、[設定] の [レプリケーション] を選択します。
削除する読み取りレプリカを選択し、省略記号を選択します。 [削除] を選択します。
[削除] 操作を確認します。
プライマリまたはレプリカ サーバーを削除するには、az postgres flexible-server delete
コマンドを使用します。 サーバーに読み取りレプリカがある場合は、プライマリ サーバーを削除する前に、最初に読み取りレプリカを削除する必要があります。
az postgres flexible-server delete \
--resource-group <resource-group> \
--name <server-name>
<resource-group>
と <server-name>
を、リソース グループ名、および削除するレプリカ サーバーの名前に置き換えます。
プライマリまたはレプリカ サーバーを削除するには、サーバー削除 API を使用します。 サーバーに読み取りレプリカがある場合は、プライマリ サーバーを削除する前に、最初に読み取りレプリカを削除する必要があります。
DELETE https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DBForPostgreSql/flexibleServers/{replicaserverName}?api-version=2022-12-01
プライマリ サーバーを削除する
プライマリ サーバーは、読み取りレプリカをすべて削除した後にのみ削除できます。 レプリカを削除するには、「レプリカの削除 」セクションの指示に従い、以下の手順に進みます。
Azure Portal からサーバーを削除するには、次の手順に従います。
Azure portal で、プライマリ Azure Database for PostgreSQL フレキシブル サーバー インスタンスを選択します。
サーバーの [概要] ページを開き、[削除] を選択します。
削除するプライマリ サーバーの名前を入力します。 [削除] を選択して、プライマリ サーバーの削除を確認します。
プライマリまたはレプリカ サーバーを削除するには、az postgres flexible-server delete
コマンドを使用します。 サーバーに読み取りレプリカがある場合は、プライマリ サーバーを削除する前に、最初に読み取りレプリカを削除する必要があります。
az postgres flexible-server delete \
--resource-group <resource-group> \
--name <server-name>
<resource-group>
と <server-name>
を、リソース グループ名、および削除するプライマリ サーバーの名前に置き換えます。
プライマリまたはレプリカ サーバーを削除するには、サーバー削除 API を使用します。 サーバーに読み取りレプリカがある場合は、プライマリ サーバーを削除する前に、最初に読み取りレプリカを削除する必要があります。
DELETE https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.DBForPostgreSql/flexibleServers/{sourceserverName}?api-version=2022-12-01
レプリカの監視
読み取りレプリカを監視するには 2 つのメトリックを使用できます。
物理レプリケーションの最大ラグ
プライマリでのみ使用できます。
[物理レプリケーションの最大ラグ] メトリックには、プライマリ サーバーと最も遅れているレプリカの間のバイト ラグが表示されます。
Azure portal でプライマリ サーバーを選びます。
[メトリック] を選びます。 [メトリック] ウィンドウで、[Max Physical Replication Lag] (物理レプリケーションの最大ラグ) を選びます。
[集計] で [Max] (最大) を選択します。
[Read Replica Lag] (読み取りレプリカのラグ) メトリック
[Read Replica Lag] (読み取りレプリカのラグ) メトリックには、レプリカで最後に再生されたトランザクションからの経過時間が表示されます。 プライマリでトランザクションが発生していない場合、メトリックにはこのタイム ラグが反映されます。 たとえば、プライマリ サーバーでトランザクションが発生しておらず、最後のトランザクションが 5 秒前に再生された場合、[読み取りレプリカのラグ] には 5 秒のラグが表示されます。
Azure portal で読み取りレプリカを選びます。
[メトリック] を選びます。 [メトリック] ウィンドウで、[Read Replica Lag] (読み取りレプリカのラグ) を選びます。
[集計] で [Max] (最大) を選択します。
関連するコンテンツ