Azure Database for MySQL フレキシブルサーバーで自動起動停止
Azure Database for MySQLはAzureで提供されるマネージドデータベースサービスになります。
そのAzure Database for MySQL には単一サーバーとフレキシブルサーバー(Flexible Server)があります。
フレキシブルサーバーは単一サーバーに比べて自由度が高い設定をする事が出来ます。
- フレキシブルサーバーの説明:Azure Database for MySQL – フレキシブル サーバー
- 単一サーバーとフレキシブルサーバーの違い:Azure で適切な MySQL サーバー オプションを選択する
詳細はマイクロソフト公式サイト記載の通りなのですが、フレキシブルサーバーの特徴の1つに停止している間は課金が発生しないというのがあります。使っていない間停止させておくことでコスト削減する事が出来ます。
今回はAutomationアカウントのRunbookを使ったAzure Database for MySQL フレキシブルサーバーの起動停止を試してみました。今回はMySQLを例にやっていますがPostgreSQLでも同様の事が可能です。
Automationアカウントで事前準備
今回対象とするAzure Database for MySQL フレキシブルサーバー
今回は以下のAzure Database for MySQL フレキシブルサーバーを対象とします。
-
- サーバー名:test-mysql-db-001
- リソースグループ名:Test-MySQL-RG
Azure Database for MySQL フレキシブルサーバーの作成手順についてはこちらを参照願います。
Automationアカウントで設定が必要な事
前提条件としてAutomationアカウントで以下の設定が必要になります。
-
- Managed IDで該当のMySQL Serverの停止権限が必要
- AutomationアカウントでAz.MySqlのモジュールが必要
マネージドIDの設定
AutomationアカウントのマネージドID設定についてはこちらを参照願います。
適時必要な権限を付与します。(今回はリソースグループに共同作成者の権限付与しています。)
Az.MySqlモジュールの追加
AutomationアカウントでAz.MySqlのモジュールを追加します。
Az.MySqlモジュールのインポート | |
Automationアカウントにあるモジュールのリソースメニューを選択します。モジュールの追加を選択します。 |
![]() |
ギャラリーを参照を選択します。 | ![]() |
ギャラリーでAz.MySqlモジュールを選択します。 | ![]() |
Az.MySqlモジュールの詳細が表示されるので追加します。 | ![]() |
ランタイムバージョンを選択後インポートします。 | ![]() |
これでモジュールの追加は完了です。
モジュール追加完了してから数分待たないと反映されないようです。モジュール追加直後に実行するとコマンドが見つからないというエラーメッセージが表示されます。
【エラーメッセージ】
System.Management.Automation.CommandNotFoundException: The term 'Stop-AzMySqlFlexibleServer’ is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
Azure Database for MySQL フレキシブルサーバーを起動停止するRunbook
起動用のRunbook
RunbookはPowerShellで作成します。
開始する場合Start-AzMySqlFlexibleServerを使います。
Runbook名はMySQL-Startとしています。
Runbookのサンプル | ||
パラメータでリソースグループ名、リソース名(MySQLのサーバー名)を指定しています。 マネージドIDを使って認証を行っています。 念のためサブスクリプションを固定しています。 最後にStart-AzMySqlFlexibleServerで起動しています。 |
|
停止用のRunbook
停止する場合Stop-AzMySqlFlexibleServerを使います。
Runbook名はMySQL-Stopとしています。
Runbookのサンプル | ||
起動用と同様になります。 パラメータでリソースグループ名、リソース名(MySQLのサーバー名)を指定しています。 マネージドIDを使って認証を行っています。 念のためサブスクリプションを固定しています。 最後にStop-AzMySqlFlexibleServerで停止しています。
|
|
Azure Database for MySQL フレキシブルサーバーを起動停止スケジュール設定
Runbookのスケジュール設定
AutomationアカウントでRunbookのスケジュール設定をします。
スケジュール設定で必要な設定は時刻設定とパラメータの指定になります。
同様に停止の設定を行う事でスケジュールに合わせた自動起動停止が可能になります。
※Azure Database for MySQL フレキシブルサーバーの起動停止には3分から5分程度時間が掛かる事もあったので余裕を持ったスケジュール設定が必要になります。
スケジュール実行後の確認
実行後のジョブを確認してみます。
ジョブ確認 | |
指定した時間にRunbookが実行された事が分かります。 | ![]() |
Azure Database for PostgreSQL のフレキシブル サーバーでも同じ
Azure Database for PostgreSQL のフレキシブル サーバーの場合でも同じ設定で自動起動停止が可能です。コマンドやモジュールを置き換えるだけで同じ事が出来ます。
最後に
非常に簡単な設定で起動停止させる事が出来ました。
データベースなので動かし続けている事の方が多いかもしれませんが、検証設備等では使ってない時間帯がある事も多いかと思います。起動停止させる事で無駄なコストを抑える事が可能なので設定しても良いかもと思います。