チュートリアル:PowerShell を使用して 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 Database for MySQL は、Microsoft クラウドにおける、MySQL Community Edition のデータベース エンジンをベースとしたリレーショナル データベース サービスです。 このチュートリアルでは、PowerShell とその他のユーティリティを使用して、次のことを行う方法を説明します。

  • Azure Database for MySQL の作成
  • サーバーのファイアウォールの構成
  • mysql コマンドライン ツールを使用したデータベースの作成
  • サンプル データを読み込む
  • クエリ データ
  • データの更新
  • データの復元

前提条件

Azure サブスクリプションをお持ちでない場合は、開始する前に無料アカウントを作成してください。

ローカルで PowerShell を使用する場合は、Az PowerShell モジュールをインストールしたうえで、Connect-AzAccount コマンドレットを使用して自分の Azure アカウントに接続する必要があります。 Az PowerShell モジュールのインストールの詳細については、「Azure PowerShell のインストール」を参照してください。

重要

Az.MySql PowerShell モジュールがプレビュー段階にある間は、次のコマンドを使用して、Az PowerShell モジュールとは別にこれをインストールする必要があります: Install-Module -Name Az.MySql -AllowPrerelease。 Az.MySql PowerShell モジュールは、一般提供された後、将来の Az PowerShell モジュール リリースの一部となり、Azure Cloud Shell 内からネイティブに使用できるようになります。

Azure Database for MySQL サービスを初めて使用する場合は、Microsoft.DBforMySQL リソースプロバイダーを登録する必要があります。

Register-AzResourceProvider -ProviderNamespace Microsoft.DBforMySQL

Azure Cloud Shell

Azure では、ブラウザーを介して使用できる対話型のシェル環境、Azure Cloud Shell がホストされています。 Cloud Shell で Bash または PowerShell を使用して、Azure サービスを操作できます。 ローカル環境に何もインストールしなくても、Cloud Shell にプレインストールされているコマンドを使用して、この記事のコードを実行できます。

Azure Cloud Shell を開始するには、以下のようにします。

オプション 例とリンク
コードまたはコマンド ブロックの右上隅にある [使ってみる] を選択します。 [使ってみる] を選択しても、コードまたはコマンドは Cloud Shell に自動的にはコピーされません。 Azure Cloud Shell の [使ってみる] の例を示すスクリーンショット。
https://shell.azure.com に移動するか、[Cloud Shell を起動する] ボタンを選択して、ブラウザーで Cloud Shell を開きます。 Azure Cloud Shell を起動するボタン。
Azure portal の右上にあるメニュー バーの [Cloud Shell] ボタンを選択します。 Azure portal の [Cloud Shell] ボタンを示すスクリーンショット

Azure Cloud Shell を使用するには、以下のようにします。

  1. Cloud Shell を開始します。

  2. コード ブロック (またはコマンド ブロック) の [コピー] ボタンを選択し、コードまたはコマンドをコピーします。

  3. Windows と Linux では Ctrl+Shift+V キーを選択し、macOS では Cmd+Shift+V キーを選択して、コードまたはコマンドを Cloud Shell セッションに貼り付けます。

  4. Enter キーを選択して、コードまたはコマンドを実行します。

複数の Azure サブスクリプションをお持ちの場合は、リソースが課金の対象となる適切なサブスクリプションを選択してください。 Set-AzContext コマンドレットを使用して、特定のサブスクリプション ID を選択します。

Set-AzContext -SubscriptionId 00000000-0000-0000-0000-000000000000

リソース グループを作成する

New-AzResourceGroup コマンドレットを使用して、Azure リソース グループを作成します。 リソース グループとは、複数の Azure リソースをまとめてデプロイ、管理する際の論理コンテナーです。

次の例では、myresourcegroup という名前のリソース グループを米国西部リージョンに作成します。

New-AzResourceGroup -Name myresourcegroup -Location westus

Azure Database for MySQL サーバーの作成

New-AzMySqlServer コマンドレットを使用して、Azure Database for MySQL サーバーを作成します。 1 つのサーバーで複数のデータベースを管理できます。 通常は、プロジェクトまたはユーザーごとに個別のデータベースを使用します。

次の例では、米国西部リージョンの myresourcegroup リソース グループに mydemoserver という名前の MySQL サーバーを作成しています。サーバー管理者ログインは myadmin です。 これは、2 つの仮想コアを備え geo 冗長バックアップが有効になっている、汎用価格レベルの Gen 5 サーバーです。 例の最初の行に使用されているパスワードは MySQL server 管理者アカウントのパスワードであるため、これを記録しておきます。

ヒント

サーバー名は DNS 名に対応しており、Azure 内でグローバルに一意であることが必要です。

$Password = Read-Host -Prompt 'Please enter your password' -AsSecureString
New-AzMySqlServer -Name mydemoserver -ResourceGroupName myresourcegroup -Sku GP_Gen5_2 -GeoRedundantBackup Enabled -Location westus -AdministratorUsername myadmin -AdministratorLoginPassword $Password

Sku パラメーターの値は、次の例のように、<価格レベル_コンピューティング世代_仮想コア数> という規則に従います。

  • -Sku B_Gen5_1 は、"Basic、Gen 5、および 1 個の仮想コア" にマップされます。 このオプションは、利用できる最小の SKU です。
  • -Sku GP_Gen5_32 は、"汎用、Gen 5、および 32 個の仮想コア" にマップされます。
  • -Sku MO_Gen5_2 は、"メモリ最適化、Gen 5、および 2 個の仮想コア" にマップされます。

リージョンおよびレベルごとの有効な Sku 値については、「Azure Database for MySQL の価格レベル」を参照してください。

低負荷なコンピューティングと I/O がワークロードに適している場合は、Basic 価格レベルの使用を検討してください。

重要

Basic 価格レベルで作成されたサーバーは、後で汎用またはメモリ最適化にスケーリングできず、geo レプリケーションすることもできません。

ファイアウォール規則を構成する

New-AzMySqlFirewallRule コマンドレットを使用して、Azure Database for MySQL サーバーレベルのファイアウォール規則を作成します。 サーバーレベルのファイアウォール規則により、mysql コマンドライン ツールや MySQL Workbench などの外部アプリケーションが、Azure Database for MySQL サービス ファイアウォールを経由してサーバーに接続できるようになります。

次の例では、特定の IP アドレス 192.168.0.1 からの接続を許可する、AllowMyIP と呼ばれるファイアウォール規則を作成しています。 実際の接続元の場所に対応する IP アドレスまたは IP アドレスの範囲に置き換えてください。

New-AzMySqlFirewallRule -Name AllowMyIP -ResourceGroupName myresourcegroup -ServerName mydemoserver -StartIPAddress 192.168.0.1 -EndIPAddress 192.168.0.1

Note

Azure Database for MySQL との接続では、ポート 3306 が通信に使用されます。 企業ネットワーク内から接続を試みる場合、ポート 3306 での送信トラフィックが許可されていない場合があります。 このシナリオでは、IT 部門によってポート 3306 が開かれている場合にのみ、サーバーに接続できます。

接続情報の取得

サーバーに接続するには、ホスト情報とアクセス資格情報を提供する必要があります。 接続情報を確認するには、次の例を使用します。 FullyQualifiedDomainNameAdministratorLogin の値を書き留めておきます。

Get-AzMySqlServer -Name mydemoserver -ResourceGroupName myresourcegroup |
  Select-Object -Property FullyQualifiedDomainName, AdministratorLogin
FullyQualifiedDomainName                    AdministratorLogin
------------------------                    ------------------
mydemoserver.mysql.database.azure.com       myadmin

mysql コマンドライン ツールを使用してサーバーに接続する

mysql コマンドライン ツールを使用してサーバーに接続します。 コマンドライン ツールをダウンロードしてインストールするには、「MySQL コミュニティ ダウンロード」を参照してください。 また、この記事のコード サンプルにある [使ってみる] ボタンを選択することにより、Azure Cloud Shell の mysql コマンドライン ツールのプレインストール バージョンにアクセスすることもできます。 Azure Cloud Shell にアクセスするその他の方法として、Azure portal の右上のツール バーにある [>_] ボタンを選択するか、shell.azure.com にアクセスします。

mysql -h mydemoserver.mysql.database.azure.com -u myadmin@mydemoserver -p

データベースを作成する

サーバーに接続したら、空のデータベースを作成します。

mysql> CREATE DATABASE mysampledb;

プロンプトで次のコマンドを実行し、新しく作成したデータベースに接続を切り替えます。

mysql> USE mysampledb;

データベースのテーブルを作成する

Azure Database for MySQL データベースに接続する方法を説明したので、次はいくつかの基本的なタスクを実行します。

最初に、テーブルを作成してデータを読み込みます。 インベントリ情報を格納するテーブルを作成しましょう。

CREATE TABLE inventory (
  id serial PRIMARY KEY,
  name VARCHAR(50),
  quantity INTEGER
);

テーブルにデータを読み込む

テーブルを作成したので、次はデータを挿入します。 開いているコマンド プロンプト ウィンドウで、次のクエリを実行してデータ行を挿入します。

INSERT INTO inventory (id, name, quantity) VALUES (1, 'banana', 150);
INSERT INTO inventory (id, name, quantity) VALUES (2, 'orange', 154);

これで、先ほど作成したテーブルにサンプル データが 2 行挿入されました。

クエリを実行し、テーブル内のデータを更新する

次のクエリを実行して、データベース テーブルから情報を取得します。

SELECT * FROM inventory;

さらに、テーブル内のデータを更新することもできます。

UPDATE inventory SET quantity = 200 WHERE name = 'banana';

データを取得するとき、それに応じてデータ行が更新されます。

SELECT * FROM inventory;

データベースを以前の状態に復元する

サーバーを以前の状態に復元できます。 復元されたデータは新しいサーバーにコピーされ、既存のサーバーは変更されません。 たとえば、テーブルが誤って削除された場合、削除の発生時点に復元できます。 その後、不足しているテーブルとデータを、サーバーの復元されたコピーから取得できます。

サーバーを復元するには、Restore-AzMySqlServer PowerShell コマンドレットを使用します。

復元コマンドを実行する

サーバーを復元するには、PowerShell から次の例を実行します。

$restorePointInTime = (Get-Date).AddMinutes(-10)
Get-AzMySqlServer -Name mydemoserver -ResourceGroupName myresourcegroup |
  Restore-AzMySqlServer -Name mydemoserver-restored -ResourceGroupName myresourcegroup -RestorePointInTime $restorePointInTime -UsePointInTimeRestore

サーバーを過去の特定の時点に復元すると、新しいサーバーが作成されます。 特定の時点における元のサーバーとそのデータベースが新しいサーバーにコピーされます。

復元されたサーバーの場所と価格レベルの値は、元のサーバーと同じです。

復元プロセスが完了したら、新しいサーバーを検索して、想定どおりにデータが復元できたかどうかを確認します。 新しいサーバーには、復元が開始された時点の既存のサーバーで有効であったサーバー管理者のログイン名とパスワードが設定されています。 このパスワードは、新しいサーバーの [概要] ページで変更できます。

復元中に作成される新しいサーバーには、元のサーバーに存在した VNet サービス エンドポイントはありません。 新しいサーバー用に、これらの規則を個別に設定する必要があります。 元のサーバーのファイアウォール規則は復元されます。

リソースをクリーンアップする

このチュートリアルで作成したリソースが別のクイックスタートまたはチュートリアルで必要でない場合は、次の例を実行して削除できます。

注意事項

次の例では、指定されたリソース グループとそれに含まれるすべてのリソースを削除します。 指定したリソース グループにこのチュートリアルの範囲外のリソースが含まれている場合、それらも削除されます。

Remove-AzResourceGroup -Name myresourcegroup

リソース グループを削除せずに、このチュートリアルで作成したサーバーのみを削除するには、Remove-AzMySqlServer コマンドレットを使用します。

Remove-AzMySqlServer -Name mydemoserver -ResourceGroupName myresourcegroup

次のステップ