インスタンスの停止と開始 - Azure SQL Managed Instance
適用対象:Azure SQL Managed Instance
この記事では、General Purpose サービス レベルで Azure SQL Managed Instance を使用しているときに、インスタンスの停止と開始によって請求コストを節約する方法について説明します。 インスタンスの停止と開始は、Azure portal、Azure PowerShell、Azure CLI または REST API を使って行うことができます。
Note
停止と開始の機能は請求を制御するため、トラブルシューティングの手順としてインスタンスを再開始するために使用しないでください。
概要
課金コストを節約するために、使用していないときに General Purpose マネージド インスタンスを停止することができます。 インスタンスを停止することは、仮想マシンの割り当てを解除するのに似ています。 インスタンスが停止状態になると、コンピューティングとライセンスのコストについては課金されなくなりますが、データとバックアップ ストレージについては引き続き課金されます。
マネージド インスタンスを停止すると、キャッシュされたすべてのデータがクリアされます。
この機能には、次の図に示すように、3 つの新しいマネージド インスタンスの状態が導入されています。
- 停止中
- 停止済み
- 開始中
停止操作の開始後、インスタンスが停止するまで通常は約 5 分かかります。 ただし、インスタンスを開始するには、開始操作が開始された時点から約 20 分かかります。 準備完了状態のマネージド インスタンスのみを停止できます。 インスタンスが停止すると、開始操作が手動で開始されるか、定義されたスケジュールでトリガーされるまで、インスタンスは停止状態のままになります。 停止状態のインスタンスのみを開始できます。
Managed Instance の作成、停止した Managed Instance の開始、マネージド インスタンスのサイズ変更 (サービス レベル、ストレージ、ハードウェアの世代、仮想コアの数の変更など) を行うと、Azure はコンピューティング リソースを基になる仮想クラスターに割り当てます。 顧客の需要をサポートするために追加のインフラストラクチャへの投資が継続的に行われていますが、特定のリージョンでの Azure サービスに対する前例のない需要の増加によって、リソースの割り当ての失敗が発生することがあります。 この結果、操作時間が長くなったり (管理操作時間に従って、新しい仮想クラスターのビルドアウトがある場合は約 4 時間)、インスタンスの開始に失敗したりするようになります。この場合は後でもう一度やり直す必要があります。
重要
SQL Managed Instance は、サービスとしてのプラットフォーム (PaaS) サービスとしてシステム コンポーネントのすべての部分のコンプライアンスを担っています。 インスタンスをオンラインにする必要があるシステム メンテナンスが緊急に必要な場合、Azure で開始操作を開始し、メンテナンス操作が完了するまでインスタンスをオンラインに維持できます。完了した時点で Azure によってインスタンスが停止されます。 コンピューティングとライセンスの料金は、インスタンスがオンライン状態にある間ずっと適用されます。
アクションの種類
インスタンスを停止および開始するには 2 つの方法があります。手動で必要に応じて行う方法、またはスケジュールを作成する方法です。
手動コマンド
手動コマンドを使うと、停止と開始のアクションを即座にトリガーできます。 手動コマンドは、決まったパターンがなく非アクティブな期間が長いインスタンスや、テスト目的に適しています。 または、Azure Automation スケジュールや、SQL Managed Instance の組み込みの停止と開始のスケジューラを使って設定できない、カスタマイズされた、より柔軟なスケジュールを作成するカスタム ソリューションがあります。
スケジュールされたコマンド
開始または停止アクションがトリガーされる 1 つ以上の複数の時点があるスケジュールを作成することもできます。 スケジュールされたコマンドが適しているのは、平日は毎日午前 8 時にインスタンスを起動し、午後 5 時に停止し、週末は午前 7 時にインスタンスを起動し、午前 11 時に停止するなど、規則的なパターンを持つインスタンスです。 コマンドをスケジュールすることで、カスタム ソリューションを作成したり、Azure Automation を使って停止と開始のスケジュールを作成したりする必要がなくなります。
スケジュールされた項目は、インスタンスが稼働しているタイミングではなく、開始と停止のイベントが開始される時点を表します。 スケジュールを作成するときは、操作の所要時間を考慮します。 たとえば、インスタンスを午前 8 時に起動して実行する場合は、午前 7:40 に開始操作を開始するスケジュール項目を定義します。
停止と開始のスケジュールについては、次の規則を考慮してください。
- スケジュールされた項目は停止と開始のペアとして定義され、停止と開始の両方の値が設定されている必要があります。 停止の値を設定して開始の値を指定しないことはできません。また、その逆も同じです。
- スケジュールされたペアを重複させることはできません。 スケジュールされた時刻の重複がある場合、API のエラーが返されます。
- 連続する 2 つのアクション (つまり、停止後の開始または開始後の停止) の間隔は、少なくとも 1 時間空ける必要があります。 たとえば、開始を午前 10 時にスケジュールした場合、停止アクションを午前 11 時より前にスケジュールすることはできません。
- 停止がトリガーされたときに競合する操作がある場合 (仮想コアのスケーリングが進行中など)、10 分後に再試行されるしくみになっています。 10 分後に競合する操作がまだアクティブな場合、停止操作はスキップされます。
請求
停止したインスタンスは仮想コアと SQL ライセンスに対して課金されません。データとバックアップ ストレージに対してのみ課金されます。 ただし、仮想コアとライセンスの課金は、"開始された" 時間ごとにかかります。 たとえば、12:01 の場合、1 時間以内にインスタンスを停止したとしても、1 時間分の課金が発生します。
Azure ハイブリッド特典
Azure ハイブリッド特典 (AHB) はリソース単位で適用されます。 Azure ハイブリッド特典を使ってインスタンスのライセンス コストを節約している場合、インスタンスが停止状態のときに別のリソースにその特典を適用するには、まずインスタンスの AHB を無効にしてから、インスタンスを停止する必要があります。 同様に、インスタンスを再起動した後は、AHB を再び有効にして、ライセンス特典を適用する必要があります。
予約インスタンスの価格
予約インスタンスの価格 (予約容量) は、消費された仮想コアと時間に適用されます。 予約価格の対象となるインスタンスが停止すると、予約価格は自動的に別のインスタンス (存在する場合) に振り替えられます。 停止と開始の機能を使って、予約インスタンス価格を "オーバープロビジョニング" することができます。
たとえば、16 個の仮想コアの予約容量があるマネージド インスタンスを購入したとします。 午後 1 時から午後 2 時まではそれぞれ 8 個の仮想コアを持つ 2 つのインスタンスを実行し、次に両方のインスタンスを停止し、午後 2 時から午後 3 時まではそれぞれ 8 個の仮想コアを持つ別の 2 つのインスタンスを実行することができます。 この方法の場合、各時間に 16 個の仮想コアの制限が使われ、合計 4 つのインスタンスに分散されます。
予約割引は "使うか失うか" ベースで提供されます。 つまり、指定した時間に一致するリソースがない場合、その時間の予約数量は失われます。 未使用の予約時間を繰り越すことはできません。
停止と開始機能の制限事項
次の制限が適用されます。
- 現在、インスタンスの停止と開始は、General Purpose サービス レベルのインスタンスに対してのみ実行できます。
- 次のようなインスタンスは停止することができません。
- 進行中の管理操作 (進行中の復元、仮想コアのスケーリングなど) がある
- フェールオーバー グループの一部である
- Managed Instance リンクを使用している
- ゾーン冗長を有効にする
- はインスタンス プールの一部です
- マネージド インスタンスが停止状態である間に構成プロパティを変更することはできません。 プロパティを変更するには、インスタンスを起動する必要があります。
- インスタンスが停止状態である間にバックアップを作成することはできません。 たとえば、毎年のバックアップを実施するという長期バックアップを構成しているとします。 定義された毎年のバックアップ期間中にインスタンスを停止すると、バックアップはスキップされます。 毎年のバックアップ期間中は、インスタンスの稼働状態を維持することをお勧めします。
- 停止または開始操作は、開始後に取り消すことはできません。
- SQL Managed Instance に対してスケジュールされた脆弱性評価スキャンがあり、インスタンスが停止している場合も、スキャン操作は開始され、スキャンの実行は失敗します。
- 停止状態のインスタンスに対してメンテナンス通知は発生しません。 この結果、次のようになります。
- 不完全な一連の通知 (たとえば、高度な通知が送信されず、進行中の通知が送信されます)。
- 通知コンテンツの影響を受けたリソースの一覧での SQL Managed Instance の欠如。
- SQL Managed Instance で使用できるエラー ログは保持されません。インスタンスの停止時に自動的に消去されます。
前提条件
インスタンスの停止と開始の機能を使用するには、インスタンスが General Purpose サービス レベルに属する必要があります。
前提条件を満たしていないインスタンスでは、Azure portal の SQL Managed Instance リソースの [概要] ページに停止および開始コントロールが無効になります。 コントロールの上にカーソルを置くと、インスタンスで機能を使用できない理由が説明されます。
コマンド ライン環境を準備する
Azure portal を使用している場合は、この手順をスキップします。
PowerShell または Azure CLI を使用してインスタンスを停止または開始する場合は、コマンド ライン ツールを構成し、パラメーターを定義して環境を準備する必要があります。
コマンド ライン ツールを構成する代わりに、この記事の手順を実行するために使用できる無料の対話型シェルである Azure Cloud Shell を使用することもできます。 一般的な Azure ツールが事前にインストールされており、アカウントで使用できるように構成されています。 Azure サブスクリプションをお持ちでない場合は、開始する前に Azure 無料アカウントを作成してください。
Cloud Shell を開くには、コード ブロックの右上隅にある [使ってみる] を選択します。 https://shell.azure.com に移動して、別のブラウザー タブで Cloud Shell を起動することもできます。
PowerShell でインスタンスを停止して開始するには、Azure PowerShell をインストールするか、Azure Cloud Shell を使用します。
Cloud Shell が開いたら、環境で PowerShell が選択されていることを確認します。 以降のセッションでは、PowerShell 環境で Azure CLI を使用します。 [コピー] を選択してコードのブロックをコピーし、Cloud Shell に貼り付けます。その後、Enter キーを押してそれを実行します。
PowerShell または Cloud Shell を起動したら、パラメーターを定義します。
$SubscriptionId = "<Subscription-ID>"
$SqlMIName = "<SQL-MI-name>"
$RgName = "<SQL-MI-resource-group>"
# Login-AzAccount
Select-AzSubscription -SubscriptionName $SubscriptionID
マネージド インスタンスを停止する
インスタンスは、次の方法で停止できます。
- Azure Portal
- PowerShell
- Azure CLI
- 任意のツールを使用して REST API 呼び出しを呼び出す
Azure portal を使ってマネージド インスタンスを停止するには、インスタンスの [概要] ページに移動し、[停止] ボタンを選びます。
インスタンスが既に停止している場合、[停止] ボタンは使用できません。
マネージド インスタンスを開始する
インスタンスは、次の方法で開始できます。
- Azure Portal
- PowerShell
- Azure CLI
- 任意のツールを使用して REST API 呼び出しを呼び出す
マネージド インスタンスを停止した後に、Azure portal を使って開始するには、インスタンスの [概要] ページに移動し、[開始] ボタンを選びます。
インスタンスが既に開始されている場合、[開始] ボタンは使用できません。
停止と開始のスケジュールを管理する
停止と開始のスケジュールは、次の方法で管理できます。
- Azure Portal
- PowerShell
- Azure CLI
- 任意のツールを使用して REST API 呼び出しを呼び出す
Azure portal を使って停止と開始のスケジュールを管理するには、インスタンスに移動し、リソース メニューにある [Start/Stop Schedule] (スケジュールの開始/停止) を選びます。
[Start/Stop Schedule] (スケジュールの開始/停止) ペインでは、次のことができます。
- 既存のスケジュールを表示する。
- [タイム ゾーン] ドロップダウン リストでスケジュールしたイベントのタイム ゾーンを指定する。
- [スケジュール項目の作成] を選んで、新しいスケジュールを作成する。
- 鉛筆アイコンを選んで、既存のスケジュールを変更する。
- ごみ箱アイコンを選んで、既存のスケジュールを削除する。
Note
現在、アクティビティ ログは、Azure Resource Manager (ARM) を介して開始された操作のみをキャプチャします。 スケジュールされた開始操作と停止操作は、アクティビティ ログでは追跡されません。 そのため、現時点では、スケジュールされた開始操作と停止操作の履歴を Azure portal のアクティビティ ログまたはそのようなログに基づく監視を使用して表示することはできません。
次のステップ
- 概要については、「Azure SQL Managed Instance とは」を参照してください。
- SQL Managed Instance の接続アーキテクチャについて確認します。
- SQL Managed Instance 用に既存の仮想ネットワークを変更する方法を確認します。
- 仮想ネットワークを作成し、インスタンスを作成し、データベース バックアップからデータベースを復元する方法を示すチュートリアルについては、Azure SQL Managed Instance (Azure portal) の作成に関する記事を参照してください。
- DNS の問題については、Azure SQL Managed Instance でのプライベート DNS 名の解決に関する記事を参照してください。