Azure CLI と REST API を使用して Azure Database for MySQL の読み取りレプリカを作成および管理する方法

適用対象: Azure Database for MySQL - シングル サーバー

重要

Azure Database for MySQL の単一サーバーは提供終了パスにあります。 Azure Database for MySQL フレキシブル サーバーにアップグレードすることを強くお勧めします。 Azure Database for MySQL フレキシブル サーバーへの移行の詳細については、「Azure Database for MySQL 単一サーバーの動作」を参照してください

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

Azure CLI

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

前提条件

重要

読み取りレプリカ機能は、汎用とメモリ最適化のどちらかの価格レベルにおける Azure Database for MySQL サーバーにのみ使用可能です。 ソース サーバーがこれらの価格レベルのいずれであるかを確認します。

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

重要

使用されているストレージ (v1 または v2) によっては、ソース サーバーに既存のレプリカ サーバーが存在しない場合、レプリケーションに備えるためにソース サーバーの再起動が必要となる場合があります。 サーバーの再起動を検討して、ピーク時間外にその操作を行ってください。 詳細については、「ソース サーバーの再起動」を参照してください。

プライマリ サーバーで GTID が有効になっている場合 (gtid_mode = ON)、新しく作成されたレプリカでも GTID が有効になり、GTID ベースのレプリケーションが使用されます。 詳細については、「グローバル トランザクション識別子 (GTID)」を参照してください。

読み取りレプリカ サーバーは、次のコマンドを使用して作成できます。

az mysql server replica create --name mydemoreplicaserver --source-server mydemoserver --resource-group myresourcegroup

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

設定 値の例 説明
resource-group  myresourcegroup  レプリカ サーバーを作成するリソース グループ。 
name mydemoreplicaserver 作成する新しいレプリカ サーバーの名前。
source-server mydemoserver レプリケート元の既存のソース サーバーの名前または ID。

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

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

Note

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

Note

  • az mysql server replica create コマンドの --sku-name 引数を使用すると、Azure CLI を使用してレプリカを作成する間に、SKU ({pricing_tier}_{compute generation}_{vCores}) を指定できます。
  • プライマリ サーバーと読み取りレプリカは、同じ価格レベル (汎用またはメモリ最適化) である必要があります。
  • レプリカ サーバーの構成は、作成された後でも変更できます。 レプリカをマスターと確実に維持できるようにするために、レプリカ サーバーの構成をソースと同じかそれ以上の値にしておくことをお勧めします。

ソース サーバーのレプリカを一覧表示する

特定のソース サーバーのレプリカをすべて表示するには、次のコマンドを実行します。

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

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

設定 値の例 説明
resource-group  myresourcegroup  レプリカ サーバーを作成するリソース グループ。 
server-name mydemoserver ソース サーバーの名前または ID。

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

重要

サーバーへのレプリケーションの停止は、元に戻すことができません。 ソースとレプリカの間のレプリケーションを停止すると、元に戻すことはできません。 レプリカ サーバーはスタンドアロン サーバーになり、読み取りと書き込みをサポートするようになります。 このサーバーをもう一度レプリカにすることはできません。

読み取りレプリカ サーバーへのレプリケーションは、次のコマンドを使用して停止できます。

az mysql server replica stop --name mydemoreplicaserver --resource-group myresourcegroup

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

設定 値の例 説明
resource-group  myresourcegroup  レプリカ サーバーが存在するリソース グループ。 
name mydemoreplicaserver レプリケーションを停止するレプリカ サーバーの名前。

レプリカ サーバーを削除します

読み取りレプリカ サーバーの削除は、 az mysql server delete コマンドを使用して行うことができます。

az mysql server delete --resource-group myresourcegroup --name mydemoreplicaserver

ソース サーバーの削除

重要

ソース サーバーを削除すると、すべてのレプリカ サーバーへのレプリケーションを停止し、ソース サーバー自体を削除します。 これでレプリカ サーバーは、読み取りと書き込みの両方をサポートするスタンドアロン サーバーになります。

ソース サーバーを削除するには、 az mysql server delete コマンドを実行します。

az mysql server delete --resource-group myresourcegroup --name mydemoserver

REST API

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

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

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

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

注意

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

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

重要

ソース サーバーの設定が新しい値に更新される前に、レプリカの設定をそれと同等以上の値に更新します。 このアクションは、レプリカがマスターに対するあらゆる変更に追従できるようにするのに役立ちます。

レプリカの一覧表示

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

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

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

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

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

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

ソースまたはレプリカ サーバーの削除

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

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

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

既知の問題

汎用およびメモリ最適化レベルのサーバーで使用されるストレージには、General Purpose ストレージ v1 (最大 4 TB をサポート) と General Purpose ストレージ v2 (最大 16 TB のストレージ をサポート) の 2 つの世代があります。 ソース サーバーとレプリカ サーバーでストレージの種類が同じである必要があります。 General Purpose ストレージ v2 は一部のリージョンでは使用できないため、読み取りレプリカ作成のために CLI または REST API で場所を使用するときは必ず、正しいレプリカ リージョンを選択してください。 ソース サーバーのストレージの種類を特定する方法については、「自分のサーバーがどの種類のストレージで実行されているかを特定する方法はありますか?」を参照してください。

ソース サーバーの読み取りレプリカを作成できないリージョンを選択した場合、次の図に示すようにデプロイが実行を継続し、 "リソース プロビジョニング操作が、許可されているタイムアウト期間内に完了しませんでした。" というエラーでタイムアウトになる問題が発生します。

Read replica cli error.

次のステップ