チュートリアル:Azure CLI を使用して Azure Database for MySQL を設計するTutorial: Design an Azure Database for MySQL using Azure CLI

Azure Database for MySQL は、Microsoft クラウドにおける、MySQL Community Edition のデータベース エンジンをベースとしたリレーショナル データベース サービスです。Azure Database for MySQL is a relational database service in the Microsoft cloud based on MySQL Community Edition database engine. このチュートリアルでは、Azure CLI (コマンド ライン インターフェイス) とその他のユーティリティを使用して、次のことを行う方法を説明します。In this tutorial, you use Azure CLI (command-line interface) and other utilities to learn how to:

  • Azure Database for MySQL の作成Create an Azure Database for MySQL
  • サーバーのファイアウォールの構成Configure the server firewall
  • mysql コマンドライン ツールを使用したデータベースの作成Use mysql command-line tool to create a database
  • サンプル データの読み込みLoad sample data
  • データのクエリを実行するQuery data
  • データの更新Update data
  • データの復元Restore data

Azure サブスクリプションをお持ちでない場合は、開始する前に無料の Azure アカウントを作成してください。If you don't have an Azure subscription, create a free Azure account before you begin.

このチュートリアルのコード ブロックを実行するには、ブラウザーで Azure Cloud Shell を使用するか、お使いのコンピューターに Azure CLI をインストールします。You may use the Azure Cloud Shell in the browser, or Install Azure CLI on your own computer to run the code blocks in this tutorial.

Azure Cloud Shell を使用するUse Azure Cloud Shell

Azure では、ブラウザーを介して使用できる対話型のシェル環境、Azure Cloud Shell がホストされています。Azure hosts Azure Cloud Shell, an interactive shell environment that you can use through your browser. Cloud Shell で Bash または PowerShell を使用して、Azure サービスを操作できます。You can use either Bash or PowerShell with Cloud Shell to work with Azure services. ローカル環境に何もインストールしなくても、Cloud Shell にプレインストールされているコマンドを使用して、この記事のコードを実行できます。You can use the Cloud Shell preinstalled commands to run the code in this article without having to install anything on your local environment.

Azure Cloud Shell を開始するには:To start Azure Cloud Shell:

オプションOption 例とリンクExample/Link
コード ブロックの右上隅にある [使ってみる] を選択します。Select Try It in the upper-right corner of a code block. [使ってみる] を選択しても、コードは Cloud Shell に自動的にコピーされません。Selecting Try It doesn't automatically copy the code to Cloud Shell. Azure Cloud Shell の [使ってみる] の例
https://shell.azure.com に移動するか、 [Cloud Shell を起動する] ボタンを選択して、ブラウザーで Cloud Shell を開きます。Go to https://shell.azure.com, or select the Launch Cloud Shell button to open Cloud Shell in your browser. 新しいウィンドウで Cloud Shell を起動するLaunch Cloud Shell in a new window
Azure portal の右上にあるメニュー バーの [Cloud Shell] ボタンを選択します。Select the Cloud Shell button on the top-right menu bar in the Azure portal. Azure Portal の [Cloud Shell] ボタン

Azure Cloud Shell でこの記事のコードを実行するには:To run the code in this article in Azure Cloud Shell:

  1. Cloud Shell を開始します。Start Cloud Shell.

  2. [コピー] ボタンを選択して、コード ブロックをコードにコピーします。Select the Copy button on a code block to copy the code.

  3. Windows と Linux では Ctrl+Shift+V キーを選択し、macOS では Cmd+Shift+V キーを選択して、コードを Cloud Shell セッションに貼り付けます。Paste the code into the Cloud Shell session by selecting Ctrl+Shift+V on Windows and Linux or by selecting Cmd+Shift+V on macOS.

  4. Enter キーを選択して、コードを実行します。Select Enter to run the code.

CLI をローカルにインストールして使用する場合、この記事では、Azure CLI バージョン 2.0 以降を実行していることが要件です。If you choose to install and use the CLI locally, this article requires that you are running the Azure CLI version 2.0 or later. バージョンを確認するには、az --version を実行します。Run az --version to find the version. インストールまたはアップグレードする必要がある場合は、Azure CLI のインストールに関するページを参照してください。If you need to install or upgrade, see Install Azure CLI.

複数のサブスクリプションをお持ちの場合は、リソースが存在するか、課金の対象となっている適切なサブスクリプションを選択してください。If you have multiple subscriptions, choose the appropriate subscription in which the resource exists or is billed for. az account set コマンドを使用して、アカウントの特定のサブスクリプション ID を選択します。Select a specific subscription ID under your account using az account set command.

az account set --subscription 00000000-0000-0000-0000-000000000000

リソース グループの作成Create a resource group

az group create コマンドで Azure リソース グループを作成します。Create an Azure resource group with az group create command. リソース グループとは、複数の Azure リソースをまとめてデプロイ、管理する際の論理コンテナーです。A resource group is a logical container into which Azure resources are deployed and managed as a group.

次の例では、myresourcegroup という名前のリソース グループを westus の場所に作成します。The following example creates a resource group named myresourcegroup in the westus location.

az group create --name myresourcegroup --location westus

Azure Database for MySQL サーバーの作成Create an Azure Database for MySQL server

az mysql server create コマンドを使用して、Azure Database for MySQL サーバーを作成します。Create an Azure Database for MySQL server with the az mysql server create command. 1 つのサーバーで複数のデータベースを管理できます。A server can manage multiple databases. 通常は、プロジェクトまたはユーザーごとに個別のデータベースを使用します。Typically, a separate database is used for each project or for each user.

次の例は、westus にあるリソース グループ myresourcegroup に、mydemoserver という名前の Azure Database for MySQL サーバーを作成します。The following example creates an Azure Database for MySQL server located in westus in the resource group myresourcegroup with name mydemoserver. サーバーの管理者ユーザーの名前は myadmin です。The server has an administrator user named myadmin. これは、2 個の仮想コアを備えた General Purpose Gen 5 サーバーです。It is a General Purpose, Gen 5 server with 2 vCores. <server_admin_password> は独自の値に置き換えます。Substitute the <server_admin_password> with your own value.

az mysql server create --resource-group myresourcegroup --name mydemoserver --location westus --admin-user myadmin --admin-password <server_admin_password> --sku-name GP_Gen5_2 --version 5.7

sku-name パラメーターの値は、次の例のように、{価格レベル}_{コンピューティング世代}_{仮想コア数} という規約に従います。The sku-name parameter value follows the convention {pricing tier}_{compute generation}_{vCores} as in the examples below:

  • --sku-name B_Gen5_2 は、"Basic、Gen 5、および 2 個の仮想コア" にマップされます。--sku-name B_Gen5_2 maps to Basic, Gen 5, and 2 vCores.
  • --sku-name GP_Gen5_32 は、"汎用、Gen 5、および 32 個の仮想コア" にマップされます。--sku-name GP_Gen5_32 maps to General Purpose, Gen 5, and 32 vCores.
  • --sku-name MO_Gen5_2 は、"メモリ最適化、Gen 5、および 2 個の仮想コア" にマップされます。--sku-name MO_Gen5_2 maps to Memory Optimized, Gen 5, and 2 vCores.

リージョンごとおよびレベルごとに有効な値を理解するには、価格レベルのドキュメントを参照してください。Please see the pricing tiers documentation to understand the valid values per region and per tier.

重要

ここで指定するサーバー管理者のログイン名とパスワードは、このクイックスタートの後半でサーバーとそのデータベースにログインするために必要です。The server admin login and password that you specify here are required to log in to the server and its databases later in this quickstart. 後で使用するために、この情報を覚えておくか、記録しておきます。Remember or record this information for later use.

ファイアウォール規則の構成Configure firewall rule

az mysql server firewall-rule create コマンドで、Azure Database for MySQL サーバーレベルのファイアウォール規則を作成します。Create an Azure Database for MySQL server-level firewall rule with the az mysql server firewall-rule create command. サーバーレベルのファイアウォール規則により、mysql コマンド ライン ツールや MySQL Workbench などの外部アプリケーションが、Azure MySQL service ファイアウォールを経由してサーバーに接続できるようになります。A server-level firewall rule allows an external application, such as mysql command-line tool or MySQL Workbench to connect to your server through the Azure MySQL service firewall.

次の例では、特定の IP アドレス 192.168.0.1 からの接続を許可する、AllowMyIP と呼ばれるファイアウォール規則を作成しています。The following example creates a firewall rule called AllowMyIP that allows connections from a specific IP address, 192.168.0.1. 実際の接続元となる場所に対応する IP アドレスまたは IP アドレスの範囲に置き換えてください。Substitute in the IP address or range of IP addresses that correspond to where you'll be connecting from.

az mysql server firewall-rule create --resource-group myresourcegroup --server mydemoserver --name AllowMyIP --start-ip-address 192.168.0.1 --end-ip-address 192.168.0.1

接続情報の取得Get the connection information

サーバーに接続するには、ホスト情報とアクセス資格情報を提供する必要があります。To connect to your server, you need to provide host information and access credentials.

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

結果は JSON 形式です。The result is in JSON format. fullyQualifiedDomainNameadministratorLogin の値を書き留めておきます。Make a note of the fullyQualifiedDomainName and administratorLogin.

{
  "administratorLogin": "myadmin",
  "administratorLoginPassword": null,
  "fullyQualifiedDomainName": "mydemoserver.mysql.database.azure.com",
  "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myresourcegroup/providers/Microsoft.DBforMySQL/servers/mydemoserver",
  "location": "westus",
  "name": "mydemoserver",
  "resourceGroup": "myresourcegroup",
 "sku": {
    "capacity": 2,
    "family": "Gen5",
    "name": "GP_Gen5_2",
    "size": null,
    "tier": "GeneralPurpose"
  },
  "sslEnforcement": "Enabled",
  "storageProfile": {
    "backupRetentionDays": 7,
    "geoRedundantBackup": "Disabled",
    "storageMb": 5120
  },
  "tags": null,
  "type": "Microsoft.DBforMySQL/servers",
  "userVisibleState": "Ready",
  "version": "5.7"
}

mysql を使用してサーバーに接続するConnect to the server using mysql

mysql コマンドライン ツールを使用して、Azure Database for MySQL サーバーへの接続を確立します。Use the mysql command-line tool to establish a connection to your Azure Database for MySQL server. この例では、コマンドは次のようになります。In this example, the command is:

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

空のデータベースの作成Create a blank database

サーバーに接続したら、空のデータベースを作成します。Once you’re connected to the server, create a blank database.

mysql> CREATE DATABASE mysampledb;

プロンプトで次のコマンドを実行し、新しく作成したデータベースに接続を切り替えます。At the prompt, run the following command to switch the connection to this newly created database:

mysql> USE mysampledb;

データベースのテーブルを作成するCreate tables in the database

Azure Database for MySQL データベースに接続する方法を説明したので、次はいくつかの基本的なタスクを実行します。Now that you know how to connect to the Azure Database for MySQL database, complete some basic tasks.

最初に、テーブルを作成してデータを読み込みます。First, create a table and load it with some data. インベントリ情報を格納するテーブルを作成しましょう。Let's create a table that stores inventory information.

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

テーブルにデータを読み込むLoad data into the tables

テーブルを作成したので、次はデータを挿入します。Now that you have a table, insert some data into it. 開いているコマンド プロンプト ウィンドウで、次のクエリを実行してデータ行を挿入します。At the open command prompt window, run the following query to insert some rows of data.

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

これで、先ほど作成したテーブルにサンプル データが 2 行挿入されました。Now you have two rows of sample data into the table you created earlier.

クエリを実行し、テーブル内のデータを更新するQuery and update the data in the tables

次のクエリを実行して、データベース テーブルから情報を取得します。Execute the following query to retrieve information from the database table.

SELECT * FROM inventory;

さらに、テーブル内のデータを更新することもできます。You can also update the data in the tables.

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

データを取得するとき、それに応じてデータ行が更新されます。The row gets updated accordingly when you retrieve data.

SELECT * FROM inventory;

データベースを以前の状態に復元するRestore a database to a previous point in time

テーブルを誤って削除した場合を想定してください。Imagine you have accidentally deleted this table. データの復元は容易なことではありません。This is something you cannot easily recover from. Azure Database for MySQL では、過去最長 35 日間における任意の時点に戻り、新しいデータベースに過去のデータを復元することができます。Azure Database for MySQL allows you to go back to any point in time in the last up to 35 days and restore this point in time to a new server. この新しいサーバーを使用して、削除されたデータを復元することができます。You can use this new server to recover your deleted data. 次の手順を実行して、テーブルを追加する前の状態にサンプル データベースを復元します。The following steps restore the sample server to a point before the table was added.

復元するには、次の情報が必要です。For the restore, you need the following information:

  • 復元ポイント: サーバーが変更される前の日時を選択します。Restore point: Select a point-in-time that occurs before the server was changed. ソース データベースの最も古いバックアップと同じか、それよりも前の値にする必要があります。Must be greater than or equal to the source database's Oldest backup value.
  • 対象サーバー: 復元先の新しいサーバー名を指定します。Target server: Provide a new server name you want to restore to
  • ソース サーバー: 復元するサーバーの名前を指定します。Source server: Provide the name of the server you want to restore from
  • 場所:リージョンを選択することはできません。既定では、ソース サーバーと同じ場所になります。Location: You cannot select the region, by default it is same as the source server
az mysql server restore --resource-group myresourcegroup --name mydemoserver-restored --restore-point-in-time "2017-05-4 03:10" --source-server-name mydemoserver

az mysql server restore コマンドには、次のパラメーターが必要です。The az mysql server restore command needs the following parameters:

SettingSetting 推奨値Suggested value 説明Description  
resource-groupresource-group  myresourcegroupmyresourcegroup  ソース サーバーが存在するリソース グループ。The resource group in which the source server exists. 
名前name mydemoserver-restoredmydemoserver-restored 復元コマンドで作成される新しいサーバーの名前。The name of the new server that is created by the restore command.
restore-point-in-timerestore-point-in-time 2017-04-13T13:59:00Z2017-04-13T13:59:00Z 復元する特定の時点を選びます。Select a point-in-time to restore to. この日付と時刻は、ソース サーバーのバックアップ保有期間内でなければなりません。This date and time must be within the source server's backup retention period. ISO8601 の日時形式を使います。Use ISO8601 date and time format. たとえば、ローカルなタイムゾーン (例: 2017-04-13T05:59:00-08:00) または UTC Zulu 形式 (例: 2017-04-13T13:59:00Z) を使うことができます。For example, you may use your own local timezone, such as 2017-04-13T05:59:00-08:00, or use UTC Zulu format 2017-04-13T13:59:00Z.
source-serversource-server mydemoservermydemoserver 復元元のソース サーバーの名前または ID。The name or ID of the source server to restore from.

特定の時点にサーバーを復元すると、新しいサーバーが作成され、指定した時点の元のサーバーとしてコピーされます。Restoring a server to a point-in-time creates a new server, copied as the original server as of the point in time you specify. 復元されたサーバーの場所と価格レベルの値は、元のサーバーと同じです。The location and pricing tier values for the restored server are the same as the source server.

コマンドは同期的であり、サーバーが復元された後に戻ります。The command is synchronous, and will return after the server is restored. 復元が終了した後、作成された新しいサーバーを調べます。Once the restore finishes, locate the new server that was created. データが期待どおりに復元されたことを確認します。Verify the data was restored as expected.

次の手順Next steps

このチュートリアルで学習した内容は次のとおりです。In this tutorial you learned to:

  • Azure Database for MySQL サーバーの作成Create an Azure Database for MySQL server
  • サーバーのファイアウォールの構成Configure the server firewall
  • mysql コマンドライン ツールを使用したデータベースの作成Use mysql command-line tool to create a database
  • サンプル データの読み込みLoad sample data
  • データのクエリを実行するQuery data
  • データの更新Update data
  • データの復元Restore data