Tutorial: Fornecimento de uma base de dados Azure para servidor MySQL usando o modelo do Gestor de Recursos AzureTutorial: Provision an Azure Database for MySQL server using Azure Resource Manager template

A Base de Dados Azure para a API MySQL REST permite aos engenheiros da DevOps automatizar e integrar o fornecimento, configuração e operações de servidores e bases de dados geridos do MySQL em Azure.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. A API permite a criação, enumeração, gestão e eliminação de servidores e bases de dados MySQL na Base de Dados Azure para o serviço MySQL.The API allows the creation, enumeration, management, and deletion of MySQL servers and databases on the Azure Database for MySQL service.

O Azure Resource Manager aproveita a API rest subjacente para declarar e programar os recursos Azure necessários para implantações em escala, alinhando-se com a infraestrutura como um conceito de código.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. O modelo parametriza o nome de recurso Azure, SKU, rede, configuração de firewall e configurações, permitindo que seja criado uma vez e usado várias vezes.The template parameterizes the Azure resource name, SKU, network, firewall configuration, and settings, allowing it to be created one time and used multiple times. Os modelos Azure Resource Manager podem ser facilmente criados usando o portal Azure ou o Código do Estúdio Visual.Azure Resource Manager templates can be easily created using Azure portal or Visual Studio Code. Permitem a embalagem de aplicações, normalização e automatização de implantação, que podem ser integradas no gasoduto DevOps CI/CD.They enable application packaging, standardization, and deployment automation, which can be integrated in the DevOps CI/CD pipeline. Por exemplo, se estiver a procurar implementar rapidamente uma Web App com base de dados Azure para o backend MySQL, pode executar a implementação de ponta a ponta utilizando este modelo QuickStart a partir da galeria 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.

Neste tutorial, você usa o modelo Azure Resource Manager e outros utilitários para aprender a:In this tutorial, you use Azure Resource Manager template and other utilities to learn how to:

  • Criar uma base de dados Azure para servidor MySQL com ponto final de serviço VNet usando o modelo do Gestor de Recursos AzureCreate an Azure Database for MySQL server with VNet Service Endpoint using Azure Resource Manager template
  • Use a ferramenta de linha de comando mysql para criar uma base de dadosUse mysql command-line tool to create a database
  • Carregar os dados de exemploLoad sample data
  • Consultar dadosQuery data
  • Atualizar dadosUpdate data

Pré-requisitosPrerequisites

Se não tiver uma subscrição do Azure, crie uma conta do Azure gratuita antes de começar.If you don't have an Azure subscription, create a free Azure account before you begin.

Criar uma base de dados Azure para servidor MySQL com ponto final de serviço VNet usando o modelo do Gestor de Recursos AzureCreate an Azure Database for MySQL server with VNet Service Endpoint using Azure Resource Manager template

Para obter a referência do modelo JSON para uma base de dados Azure para o servidor MySQL, vá à referência do modelo de servidores microsoft.DBforMySQL.To get the JSON template reference for an Azure Database for MySQL server, go to Microsoft.DBforMySQL servers template reference. Abaixo está o modelo JSON da amostra que pode ser usado para criar um novo servidor que executa a Base de Dados Azure para o MySQL com o VNet Service Endpoint.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'))]"
      ]
    }
  ]
}

Neste pedido, os valores que precisam de ser personalizados são:In this request, the values that need to be customized are:

  • name - Especificar o nome do seu Servidor MySQL (sem nome de domínio).name - Specify the name of your MySQL Server (without domain name).
  • location - Especifique uma região válida do centro de dados Azure para o seu Servidor MySQL.location - Specify a valid Azure data center region for your MySQL Server. Por exemplo, westus2.For example, westus2.
  • properties/version - Especificar a versão do servidor MySQL para implementar.properties/version - Specify the MySQL server version to deploy. Por exemplo, 5.6 ou 5.7.For example, 5.6 or 5.7.
  • properties/administratorLogin - Especificar o login de administração MySQL para o servidor.properties/administratorLogin - Specify the MySQL admin login for the server. O nome de início de sessão de administrador não pode ser azure_superuser, admin, administrator, root, guest ou public.The admin sign-in name cannot be azure_superuser, admin, administrator, root, guest, or public.
  • properties/administratorLoginPassword - Especifique a palavra-passe para o utilizador de administração MySQL acima especificado.properties/administratorLoginPassword - Specify the password for the MySQL admin user specified above.
  • properties/sslEnforcement - Especificar Ativado/Desativado para ativar/desativar o sslEnforcement.properties/sslEnforcement - Specify Enabled/Disabled to enable/disable sslEnforcement.
  • storageProfile/storageMB - Especifique o tamanho máximo de armazenamento previsto para o servidor em megabytes.storageProfile/storageMB - Specify the max provisioned storage size required for the server in megabytes. Por exemplo, 5120.For example, 5120.
  • storageProfile/backupRetentionDays - Especificar o período de retenção de backup desejado em dias.storageProfile/backupRetentionDays - Specify the desired backup retention period in days. Por exemplo, 7.For example, 7.
  • storageProfile/geoRedundantBackup - Especificar Ativado/Desativado em função dos requisitos de Geo-DR.storageProfile/geoRedundantBackup - Specify Enabled/Disabled depending on Geo-DR requirements.
  • sku/tier - Especificar o nível Básico, GeneralPurpose ou MemoryOptimed para implantação.sku/tier - Specify Basic, GeneralPurpose, or MemoryOptimized tier for deployment.
  • sku/capacity - Especificar a capacidade vCore.sku/capacity - Specify the vCore capacity. Os valores possíveis incluem 2, 4, 8, 16, 32 ou 64.Possible values include 2, 4, 8, 16, 32 or 64.
  • sku/family - Especifique a Gen5 para escolher a geração de hardware para a implementação do servidor.sku/family - Specify Gen5 to choose hardware generation for server deployment.
  • sku/name - Especificar TierPrefix_family_capacity.sku/name - Specify TierPrefix_family_capacity. Por exemplo, B_Gen5_1, GP_Gen5_16, MO_Gen5_32.For example B_Gen5_1, GP_Gen5_16, MO_Gen5_32. Consulte a documentação dos níveis de preços para entender os valores válidos por região e por nível.See the pricing tiers documentation to understand the valid values per region and per tier.
  • resources/properties/virtualNetworkSubnetId - Especificar o identificador Azure da sub-rede em VNet onde deve ser colocado o servidor Azure MySQL.resources/properties/virtualNetworkSubnetId - Specify the Azure identifier of the subnet in VNet where Azure MySQL server should be placed.
  • tags(optional) - Especificar etiquetas opcionais são pares de valor chave que usaria para categorizar os recursos para faturação, etc.tags(optional) - Specify optional tags are key value pairs that you would use to categorize the resources for billing etc.

Se procura construir um modelo de Gestor de Recursos Azure para automatizar a Base de Dados Azure para implementações do MySQL para a sua organização, a recomendação seria começar a partir do modelo de gestor de recursos Azure em Azure Quickstart GitHub Gallery primeiro e construir em cima dela.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.

Se você é novo nos modelos do Azure Resource Manager e gostaria de experimentá-lo, você pode começar seguindo estes passos:If you are new to Azure Resource Manager templates and would like to try it, you can start by following these steps:

  • Clone ou descarregue o modelo sample Azure Resource Manager da galeria Azure Quickstart.Clone or download the Sample Azure Resource Manager template from Azure Quickstart gallery.
  • Modifique o azuredeploy.parameters.jspara atualizar os valores dos parâmetros com base na sua preferência e guarde o ficheiro.Modify the azuredeploy.parameters.json to update the parameter values based on your preference and save the file.
  • Utilize o CLI Azure para criar o servidor Azure MySQL utilizando os seguintes comandosUse Azure CLI to create the Azure MySQL server using the following commands

Pode utilizar o Azure Cloud Shell no browser ou instalar a CLI do Azure no computador para executar os blocos de código deste tutorial.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.

Utilizar o Azure Cloud ShellUse Azure Cloud Shell

O Azure aloja o Azure Cloud Shell, um ambiente de shell interativo que pode utilizar através do seu browser.Azure hosts Azure Cloud Shell, an interactive shell environment that you can use through your browser. Pode utilizar o Bash ou o PowerShell com o Cloud Shell para trabalhar com os serviços do Azure.You can use either Bash or PowerShell with Cloud Shell to work with Azure services. Pode utilizar os comandos pré-instalados do Cloud Shell para executar o código neste artigo sem ter de instalar nada no ambiente local.You can use the Cloud Shell preinstalled commands to run the code in this article without having to install anything on your local environment.

Para iniciar o Azure Cloud Shell:To start Azure Cloud Shell:

OpçãoOption Exemplo/LigaçãoExample/Link
Selecione Experimentar no canto superior direito de um bloco de código.Select Try It in the upper-right corner of a code block. A seleção de Experimente não copia automaticamente o código para o Cloud Shell.Selecting Try It doesn't automatically copy the code to Cloud Shell. Exemplo da opção Experimente para o Azure Cloud Shell
Aceda a https://shell.azure.com ou selecione o botão Iniciar Cloud Shell para abrir o Cloud Shell no browser.Go to https://shell.azure.com, or select the Launch Cloud Shell button to open Cloud Shell in your browser. Iniciar Cloud Shell numa nova janelaLaunch Cloud Shell in a new window
Selecione o botão Cloud Shell na barra de menus, na parte direita do portal do Azure.Select the Cloud Shell button on the menu bar at the upper right in the Azure portal. Botão Cloud Shell no portal do Azure

Para executar o código neste artigo no Azure Cloud Shell:To run the code in this article in Azure Cloud Shell:

  1. Inicie o Cloud Shell.Start Cloud Shell.

  2. Selecione o botão Copiar num bloco de código para copiar o código.Select the Copy button on a code block to copy the code.

  3. Cole o código na sessão do Cloud Shell ao selecionar Ctrl+Shift+V no Windows e Linux ou Cmd+Shift+V no macOS.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. Selecione Introduzir para executar o código.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}

Obter as informações da ligaçãoGet the connection information

Para ligar ao seu servidor, terá de fornecer credenciais de acesso e informações de anfitrião.To connect to your server, you need to provide host information and access credentials.

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

O resultado está no formato JSON.The result is in JSON format. Aponte o fullyQualifiedDomainName e o administratorLogin.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"
}

Ligar ao servidor com o mysqlConnect to the server using mysql

Utilize a ferramenta de linha de comandos do mysql para ligar à Base de Dados do Azure para o servidor MySQL.Use the mysql command-line tool to establish a connection to your Azure Database for MySQL server. Neste exemplo, o comando é:In this example, the command is:

mysql -h mydemoserver.database.windows.net -u myadmin@mydemoserver -p

Criar uma base de dados vaziaCreate a blank database

Assim que estiver ligado ao servidor, crie uma base de dados vazia.Once you’re connected to the server, create a blank database.

mysql> CREATE DATABASE mysampledb;

Na linha de comandos, execute o comando seguinte para mudar a ligação para a base de dados recentemente criada:At the prompt, run the following command to switch the connection to this newly created database:

mysql> USE mysampledb;

Criar tabelas na base de dadosCreate tables in the database

Agora que sabe como ligar à Base de Dados do Azure para MySQL, conclua algumas tarefas básicas.Now that you know how to connect to the Azure Database for MySQL database, complete some basic tasks.

Em primeiro lugar, crie uma tabela e carregue-a com alguns dados.First, create a table and load it with some data. Vamos criar uma tabela que armazena informações de inventário.Let's create a table that stores inventory information.

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

Carregar dados para as tabelasLoad data into the tables

Agora que tem uma tabela, insira alguns dados na mesma.Now that you have a table, insert some data into it. Na janela da linha de comandos aberta, execute a seguinte consulta para inserir algumas linhas de dados.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);

Tem agora duas linhas de dados de exemplo nas tabelas que criou anteriormente.Now you have two rows of sample data into the table you created earlier.

Consultar e atualizar os dados nas tabelasQuery and update the data in the tables

Execute a seguinte consulta para obter informações da tabela de base de dados.Execute the following query to retrieve information from the database table.

SELECT * FROM inventory;

Também pode atualizar os dados nas tabelas.You can also update the data in the tables.

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

A linha é atualizada em conformidade ao obter dados.The row gets updated accordingly when you retrieve data.

SELECT * FROM inventory;

Limpar os recursosClean up resources

Quando já não for necessário, elimine o grupo de recursos, que elimina os recursos do grupo de recursos.When it's no longer needed, delete the resource group, which deletes the resources in the resource group.

  1. No portal Azure,procure e selecione grupos de Recursos.In the Azure portal, search for and select Resource groups.

  2. Na lista de grupos de recursos, escolha o nome do seu grupo de recursos.In the resource group list, choose the name of your resource group.

  3. Na página geral do seu grupo de recursos, selecione Delete resource group.In the Overview page of your resource group, select Delete resource group.

  4. Na caixa de diálogo de confirmação, digite o nome do seu grupo de recursos e, em seguida, selecione Delete.In the confirmation dialog box, type the name of your resource group, and then select Delete.

Passos seguintesNext steps

Neste tutorial, aprendeu a:In this tutorial you learned to:

  • Criar uma base de dados Azure para servidor MySQL com ponto final de serviço VNet usando o modelo do Gestor de Recursos AzureCreate an Azure Database for MySQL server with VNet Service Endpoint using Azure Resource Manager template
  • Utilizar a ferramenta de linha de comandos mysql para criar uma base de dadosUse the mysql command-line tool to create a database
  • Carregar os dados de exemploLoad sample data
  • Consultar dadosQuery data
  • Atualizar dadosUpdate data