자습서: Azure Resource Manager 템플릿을 사용하여 Azure Database for MySQL 서버 프로비전Tutorial: Provision an Azure Database for MySQL server using Azure Resource Manager template

Azure Database for MySQL REST API를 사용하면 DevOps 엔지니어가 Azure에서 관리형 MySQL 서버 및 데이터베이스의 프로비저닝, 구성 및 작업을 자동화하고 통합할 수 있습니다.The Azure Database for MySQL REST API enables DevOps engineers to automate and integrate provisioning, configuration, and operations of managed MySQL servers and databases in Azure. API를 통해 Azure Database for MySQL 서비스에서 MySQL 서버 및 데이터베이스를 생성, 열거, 관리 및 삭제할 수 있습니다.The API allows the creation, enumeration, management, and deletion of MySQL servers and databases on the Azure Database for MySQL service.

Azure Resource Manager는 기본 REST API를 활용하여 규모에 맞게 배포하는 데 필요한 Azure 리소스를 코드 개념으로 인프라에 맞춰 선언하고 프로그래밍합니다.Azure Resource Manager leverages the underlying REST API to declare and program the Azure resources required for deployments at scale, aligning with infrastructure as a code concept. 템플릿은 Azure 리소스 이름, SKU, 네트워크, 방화벽 구성 및 설정을 매개변수화하면서 템플릿을 한 번 만들어 여러 번 사용할 수 있게 합니다.The template parameterizes the Azure resource name, SKU, network, firewall configuration, and settings, allowing it to be created one time and used multiple times. Azure Portal 또는 Visual Studio Code를 사용하면 Azure Resource Manager 템플릿을 쉽게 만들 수 있습니다.Azure Resource Manager templates can be easily created using Azure portal or Visual Studio Code. 이 템플릿을 통해 애플리케이션 패키징, 표준화 및 배포 자동화를 사용할 수 있으며, DevOps CI/CD 파이프라인에 통합할 수 있습니다.They enable application packaging, standardization, and deployment automation, which can be integrated in the DevOps CI/CD pipeline. 예를 들어 Azure Database for MySQL 백 엔드를 통해 웹앱을 신속하게 배포하려면 GitHub 갤러리에서 빠른 시작 템플릿을 사용하여 엔드투엔드 배포를 수행할 수 있습니다.For instance, if you are looking to quickly deploy a Web App with Azure Database for MySQL backend, you can perform the end-to-end deployment using this QuickStart template from the GitHub gallery.

이 자습서에서는 Azure Resource Manager 템플릿 및 다른 유틸리티를 사용하여 다음을 수행하는 방법에 대해 알아봅니다.In this tutorial, you use Azure Resource Manager template and other utilities to learn how to:

  • Azure Resource Manager 템플릿을 사용하여 VNet 서비스 엔드포인트에서 Azure Database for MySQL 서버 만들기Create an Azure Database for MySQL server with VNet Service Endpoint using Azure Resource Manager template
  • mysql 명령줄 도구를 사용하여 데이터베이스 만들기Use mysql command-line tool to create a database
  • 샘플 데이터 로드Load sample data
  • 쿼리 데이터Query data
  • 데이터 업데이트Update data

필수 구성 요소Prerequisites

Azure 구독이 아직 없는 경우 시작하기 전에 Azure 체험 계정을 만듭니다.If you don't have an Azure subscription, create a free Azure account before you begin.

Azure Resource Manager 템플릿을 사용하여 VNet 서비스 엔드포인트에서 Azure Database for MySQL 서버 만들기Create an Azure Database for MySQL server with VNet Service Endpoint using Azure Resource Manager template

Azure Database for MySQL 서버에 대한 JSON 템플릿 참조를 가져오려면 Microsoft.DBforMySQL 서버 템플릿 참조로 이동합니다.To get the JSON template reference for an Azure Database for MySQL server, go to Microsoft.DBforMySQL servers template reference. VNet 서비스 엔드포인트에서 Azure Database for MySQL을 실행하는 새 서버를 만드는 데 사용할 수 있는 샘플 JSON 템플릿은 다음과 같습니다.Below is the sample JSON template that can be used to create a new server running Azure Database for MySQL with VNet Service Endpoint.

{
  "apiVersion": "2017-12-01",
  "type": "Microsoft.DBforMySQL/servers",
  "name": "string",
  "location": "string",
  "tags": "string",
  "properties": {
    "version": "string",
    "sslEnforcement": "string",
    "administratorLogin": "string",
    "administratorLoginPassword": "string",
    "storageProfile": {
      "storageMB": "string",
      "backupRetentionDays": "string",
      "geoRedundantBackup": "string"
    }
  },
  "sku": {
    "name": "string",
    "tier": "string",
    "capacity": "string",
    "family": "string"
  },
  "resources": [
    {
      "name": "AllowSubnet",
      "type": "virtualNetworkRules",
      "apiVersion": "2017-12-01",
      "properties": {
        "virtualNetworkSubnetId": "[resourceId('Microsoft.Network/virtualNetworks/subnets', parameters('virtualNetworkName'), parameters('subnetName'))]",
        "ignoreMissingVnetServiceEndpoint": true
      },
      "dependsOn": [
        "[concat('Microsoft.DBforMySQL/servers/', parameters('serverName'))]"
      ]
    }
  ]
}

이 요청에서 사용자 지정해야 하는 값은 다음과 같습니다.In this request, the values that need to be customized are:

  • name - 도메인 이름 없이 MySQL 서버의 이름을 지정합니다.name - Specify the name of your MySQL Server (without domain name).
  • location - MySQL 서버에 대한 올바른 Azure 데이터 센터 지역을 지정합니다.location - Specify a valid Azure data center region for your MySQL Server. 예: westus2.For example, westus2.
  • properties/version - 배포할 MySQL 서버 버전을 지정합니다.properties/version - Specify the MySQL server version to deploy. 예: 5.6 또는 5.7.For example, 5.6 or 5.7.
  • properties/administratorLogin -서버에 대한 MySQL 관리자 로그인을 지정합니다.properties/administratorLogin - Specify the MySQL admin login for the server. 관리자 로그인 이름은 azure_superuser, admin, administrator, root, guest 또는 public일 수 없습니다.The admin sign-in name cannot be azure_superuser, admin, administrator, root, guest, or public.
  • properties/administratorLoginPassword - 위에서 지정한 MySQL 관리 사용자의 암호를 지정합니다.properties/administratorLoginPassword - Specify the password for the MySQL admin user specified above.
  • properties/sslEnforcement - sslEnforcement를 활성화/비활성화하려면 사용/사용 안 함을 지정합니다.properties/sslEnforcement - Specify Enabled/Disabled to enable/disable sslEnforcement.
  • storageProfile/storageMB - 서버에 필요한 프로비전된 최대 스토리지 크기(메가바이트)를 지정합니다.storageProfile/storageMB - Specify the max provisioned storage size required for the server in megabytes. 예: 5120.For example, 5120.
  • storageProfile/backupRetentionDays - 원하는 백업 보존 기간(일)을 지정합니다.storageProfile/backupRetentionDays - Specify the desired backup retention period in days. 예: 7.For example, 7.
  • storageProfile/geoRedundantBackup - Geo-DR 요구 사항에 따라 사용/사용 안 함을 지정합니다.storageProfile/geoRedundantBackup - Specify Enabled/Disabled depending on Geo-DR requirements.
  • sku/tier - 배포에 대한 기본, GeneralPurpose 또는 MemoryOptimized 계층을 지정합니다.sku/tier - Specify Basic, GeneralPurpose, or MemoryOptimized tier for deployment.
  • sku/capacity - vCore 용량을 지정합니다.sku/capacity - Specify the vCore capacity. 가능한 값은 2, 4, 8, 16, 32 또는 64입니다.Possible values include 2, 4, 8, 16, 32 or 64.
  • sku/family - Gen5를 지정하여 서버 배포에 대한 하드웨어 세대를 선택합니다.sku/family - Specify Gen5 to choose hardware generation for server deployment.
  • sku/name - TierPrefix_family_capacity를 지정합니다.sku/name - Specify TierPrefix_family_capacity. 예: B_Gen5_1, GP_Gen5_16, MO_Gen5_32.For example B_Gen5_1, GP_Gen5_16, MO_Gen5_32. 지역당 및 계층당 유효한 값을 이해하려면 가격 책정 계층 설명서를 참조하세요.See the pricing tiers documentation to understand the valid values per region and per tier.
  • resources/properties/virtualNetworkSubnetId - Azure MySQL 서버를 배치해야 할 VNet에서 서브넷의 Azure 식별자를 지정합니다.resources/properties/virtualNetworkSubnetId - Specify the Azure identifier of the subnet in VNet where Azure MySQL server should be placed.
  • tags(optional) - 선택적 태그가 청구 등에 대한 리소스를 분류하는 데 사용할 키 값 쌍이 되도록 지정합니다.tags(optional) - Specify optional tags are key value pairs that you would use to categorize the resources for billing etc.

조직의 Azure Database for MySQL 배포를 자동화하기 위해 Azure Resource Manager 템플릿을 빌드하려는 경우 먼저 Azure Quickstart GitHub Gallery의 Azure Resource Manager 템플릿 샘플에서 시작하고 그 위에 빌드하는 것이 좋습니다.If you are looking to build an Azure Resource Manager template to automate Azure Database for MySQL deployments for your organization, the recommendation would be to start from the sample Azure Resource Manager template in Azure Quickstart GitHub Gallery first and build on top of it.

Azure Resource Manager 템플릿에 익숙치 않은데 시도하려는 경우 이러한 단계를 따라 시작할 수 있습니다.If you are new to Azure Resource Manager templates and would like to try it, you can start by following these steps:

  • Azure 빠른 시작 갤러리에서 Azure Resource Manager 템플릿 샘플을 복제 또는 다운로드합니다.Clone or download the Sample Azure Resource Manager template from Azure Quickstart gallery.
  • 사용자 기본 설정에 따라 매개 변수 값을 업데이트하려면 azuredeploy.parameters.json을 수정한 다음, 파일을 저장합니다.Modify the azuredeploy.parameters.json to update the parameter values based on your preference and save the file.
  • Azure CLI를 통해 다음 명령을 사용하여 Azure MySQL 서버 만들기Use Azure CLI to create the Azure MySQL server using the following commands

브라우저에서 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. 로컬 환경에 아무 것도 설치할 필요 없이 Azure 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 menu bar at the upper right 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.

az login
az group create -n ExampleResourceGroup  -l "West US2"
az deployment group create -g $ ExampleResourceGroup   --template-file $ {templateloc} --parameters $ {parametersloc}

연결 정보 가져오기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": "westus2",
  "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.database.windows.net -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);

이제 앞에서 만든 테이블에 두 개의 샘플 데이터 행이 있습니다.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;

리소스 정리Clean up resources

더 이상 필요하지 않은 경우 리소스 그룹을 삭제합니다. 그러면 리소스 그룹의 리소스도 삭제됩니다.When it's no longer needed, delete the resource group, which deletes the resources in the resource group.

  1. Azure Portal에서 리소스 그룹 을 검색하여 선택합니다.In the Azure portal, search for and select Resource groups.

  2. 리소스 그룹 목록에서 리소스 그룹의 이름을 선택합니다.In the resource group list, choose the name of your resource group.

  3. 리소스 그룹의 개요 페이지에서 리소스 그룹 삭제 를 선택합니다.In the Overview page of your resource group, select Delete resource group.

  4. 확인 대화 상자에서 리소스 그룹의 이름을 입력한 다음, 삭제 를 선택합니다.In the confirmation dialog box, type the name of your resource group, and then select Delete.

다음 단계Next steps

이 자습서에서는 다음에 대해 알아보았습니다.In this tutorial you learned to:

  • Azure Resource Manager 템플릿을 사용하여 VNet 서비스 엔드포인트에서 Azure Database for MySQL 서버 만들기Create an Azure Database for MySQL server with VNet Service Endpoint using Azure Resource Manager template
  • mysql 명령줄 도구를 사용하여 데이터베이스 만들기Use the mysql command-line tool to create a database
  • 샘플 데이터 로드Load sample data
  • 쿼리 데이터Query data
  • 데이터 업데이트Update data