Tutorial: Aprovisionamiento de un servidor de Azure Database for MySQL mediante las plantillas de Azure Resource ManagerTutorial: Provision an Azure Database for MySQL server using Azure Resource Manager template

La API de REST de Azure Database for MySQL permite a los ingenieros de DevOps automatizar e integrar el aprovisionamiento, la configuración y las operaciones de las bases de datos y los servidores MySQL administrados en 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. Además, con dicha API se pueden crear, enumerar, administrar y eliminar bases de datos y servidores MySQL en el servicio Azure Database for 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 aprovecha la API REST subyacente para declarar y programar los recursos de Azure necesarios para implementaciones a escala y alinearlos con la infraestructura en cuanto concepto 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. La plantilla parametriza la configuración, el firewall, la red, la SKU y el nombre del recurso de Azure, lo que permite que se creen una vez y se utilicen varias.The template parameterizes the Azure resource name, SKU, network, firewall configuration, and settings, allowing it to be created one time and used multiple times. Las plantillas de Azure Resource Manager se pueden crear fácilmente mediante Azure Portal o Visual Studio Code.Azure Resource Manager templates can be easily created using Azure portal or Visual Studio Code. Estas permiten automatizar la implementación, la estandarización y el empaquetado de aplicaciones, que se pueden integrar en la canalización de CI/CD de DevOps.They enable application packaging, standardization, and deployment automation, which can be integrated in the DevOps CI/CD pipeline. Por ejemplo, si desea implementar rápidamente una aplicación web con el servidor back-end de Azure Database for MySQL, puede realizar la implementación integral mediante esta plantilla de inicio rápido de la galería de 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.

En este tutorial, usará una plantilla de Azure Resource Manager y otras utilidades para aprender a hacer lo siguiente:In this tutorial, you use Azure Resource Manager template and other utilities to learn how to:

  • Creación de un servidor de Azure Database for MySQL con el punto de conexión de servicio de red virtual mediante la plantilla de Azure Resource ManagerCreate an Azure Database for MySQL server with VNet Service Endpoint using Azure Resource Manager template
  • Uso de la herramienta de línea de comandos mysql para crear una base de datosUse mysql command-line tool to create a database
  • Carga de datos de muestraLoad sample data
  • Consultar datosQuery data
  • Actualización de datosUpdate data

Requisitos previosPrerequisites

Si no tiene una suscripción a Azure, cree una cuenta gratuita de Azure antes de empezar.If you don't have an Azure subscription, create a free Azure account before you begin.

Creación de un servidor de Azure Database for MySQL con el punto de conexión de servicio de red virtual mediante la plantilla de Azure Resource ManagerCreate an Azure Database for MySQL server with VNet Service Endpoint using Azure Resource Manager template

Para obtener la referencia de la plantilla JSON de un servidor de Azure Database for MySQL, vaya a la referencia de la plantilla de servidores Microsoft.DBforMySQL.To get the JSON template reference for an Azure Database for MySQL server, go to Microsoft.DBforMySQL servers template reference. A continuación, se encuentra la plantilla JSON de ejemplo que puede usarse para crear un servidor que ejecuta Azure Database for MySQL con el punto de conexión de servicio de red virtual.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'))]"
      ]
    }
  ]
}

En esta solicitud, los valores que deben personalizarse son los siguientes:In this request, the values that need to be customized are:

  • name: especifique el nombre del servidor MySQL (sin el nombre de dominio).name - Specify the name of your MySQL Server (without domain name).
  • location: especifique una región del centro de datos de Azure válida para el servidor MySQL.location - Specify a valid Azure data center region for your MySQL Server. Por ejemplo, westus2.For example, westus2.
  • properties/version: especifique la versión del servidor MySQL para implementar.properties/version - Specify the MySQL server version to deploy. Por ejemplo, 5.6 o 5.7.For example, 5.6 or 5.7.
  • properties/administratorLogin: especifique los datos de inicio de sesión del administrador de MySQL para el servidor.properties/administratorLogin - Specify the MySQL admin login for the server. El nombre de inicio de sesión del administrador no puede ser azure_superuser, admin, administrator, root, guest o public.The admin sign-in name cannot be azure_superuser, admin, administrator, root, guest, or public.
  • properties/administratorLoginPassword: especifique la contraseña del usuario administrador de MySQL establecida anteriormente.properties/administratorLoginPassword - Specify the password for the MySQL admin user specified above.
  • properties/sslEnforcement: especifique Enabled (Habilitado) o Disabled (Deshabilitado) para habilitar o deshabilitar sslEnforcement.properties/sslEnforcement - Specify Enabled/Disabled to enable/disable sslEnforcement.
  • storageProfile/storageMB: especifique el tamaño máximo de almacenamiento aprovisionado necesario para el servidor en megabytes.storageProfile/storageMB - Specify the max provisioned storage size required for the server in megabytes. Por ejemplo, 5120.For example, 5120.
  • storageProfile/backupRetentionDays: especifique el período de retención de copia de seguridad en días.storageProfile/backupRetentionDays - Specify the desired backup retention period in days. Por ejemplo, 7.For example, 7.
  • storageProfile/geoRedundantBackup: especifique Enabled (Habilitado) o Disabled (Deshabilitado) según los requisitos de Geo-DR.storageProfile/geoRedundantBackup - Specify Enabled/Disabled depending on Geo-DR requirements.
  • sku/tier: especifique el nivel Basic (Básico), GeneralPurpose (De uso general) o MemoryOptimized (Optimizada para memoria) de la implementación.sku/tier - Specify Basic, GeneralPurpose, or MemoryOptimized tier for deployment.
  • sku/capacity: especifique la capacidad del núcleo virtual.sku/capacity - Specify the vCore capacity. Los valores posibles son 2, 4, 8, 16, 32 o 64.Possible values include 2, 4, 8, 16, 32 or 64.
  • sku/family: especifique Gen5 para elegir la generación de hardware de la implementación de servidores.sku/family - Specify Gen5 to choose hardware generation for server deployment.
  • sku/name: especifique TierPrefix_family_capacity.sku/name - Specify TierPrefix_family_capacity. Por ejemplo, B_Gen5_1, GP_Gen5_16 o MO_Gen5_32.For example B_Gen5_1, GP_Gen5_16, MO_Gen5_32. Para comprender cuáles son los valores válidos por región y nivel, consulte la documentación sobre planes de tarifa.See the pricing tiers documentation to understand the valid values per region and per tier.
  • resources/properties/virtualNetworkSubnetId: especifique el identificador de Azure de la subred en la red virtual donde se debe colocar el servidor MySQL de Azure.resources/properties/virtualNetworkSubnetId - Specify the Azure identifier of the subnet in VNet where Azure MySQL server should be placed.
  • tags(optional): especifique las etiquetas opcionales; los pares clave-valor que usaría para clasificar los recursos para fines de facturación, etc.tags(optional) - Specify optional tags are key value pairs that you would use to categorize the resources for billing etc.

Si desea crear una plantilla de Azure Resource Manager con el fin de automatizar las implementaciones de Azure Database for MySQL para su organización, la recomendación sería empezar desde el ejemplo Plantilla de Azure Resource Manager de la galería de GitHub de inicio rápido de Azure y crearlas a partir de esta.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.

Si no está familiarizado con las plantillas de Azure Resource Manager y le gustaría probarlas, puede empezar siguiendo estos pasos:If you are new to Azure Resource Manager templates and would like to try it, you can start by following these steps:

  • Clone o descargue la plantilla de Azure Resource Manager de ejemplo de la galería de inicio rápido de Azure.Clone or download the Sample Azure Resource Manager template from Azure Quickstart gallery.
  • Modifique azuredeploy.parameters.json para actualizar los valores de parámetro según sus preferencias y guarde el archivo.Modify the azuredeploy.parameters.json to update the parameter values based on your preference and save the file.
  • Use la CLI de Azure para crear el servidor MySQL de Azure mediante los siguientes comandos:Use Azure CLI to create the Azure MySQL server using the following commands

Puede usar Azure Cloud Shell en el explorador o instalar la CLI de Azure en su propio equipo para ejecutar los bloques de código de este 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.

Uso de Azure Cloud ShellUse Azure Cloud Shell

En Azure se hospeda Azure Cloud Shell, un entorno de shell interactivo que puede utilizar mediante el explorador.Azure hosts Azure Cloud Shell, an interactive shell environment that you can use through your browser. Puede usar Bash o PowerShell con Cloud Shell para trabajar con los servicios de Azure.You can use either Bash or PowerShell with Cloud Shell to work with Azure services. Puede usar los comandos preinstalados de Cloud Shell para ejecutar el código de este artículo sin tener que instalar nada en su entorno 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 Azure Cloud Shell:To start Azure Cloud Shell:

OpciónOption Ejemplo o vínculoExample/Link
Seleccione Pruébelo en la esquina superior derecha de un bloque de código.Select Try It in the upper-right corner of a code block. Solo con seleccionar Pruébelo no se copia automáticamente el código en Cloud Shell.Selecting Try It doesn't automatically copy the code to Cloud Shell. Ejemplo de Probarlo para Azure Cloud Shell
Vaya a https://shell.azure.com o seleccione el botón Iniciar Cloud Shell para abrir Cloud Shell en el explorador.Go to https://shell.azure.com, or select the Launch Cloud Shell button to open Cloud Shell in your browser. Iniciar Cloud Shell en una nueva ventanaLaunch Cloud Shell in a new window
Seleccione el botón Cloud Shell en la barra de menús de la esquina superior derecha de Azure Portal.Select the Cloud Shell button on the menu bar at the upper right in the Azure portal. Botón Cloud Shell en Azure Portal

Para ejecutar el código de este artículo en Azure Cloud Shell:To run the code in this article in Azure Cloud Shell:

  1. Inicie Cloud Shell.Start Cloud Shell.

  2. Seleccione el botón Copiar de un bloque de código para copiar el código.Select the Copy button on a code block to copy the code.

  3. Pegue el código en la sesión de Cloud Shell. Para ello, seleccione Ctrl+Mayús+V en Windows y Linux, o bien seleccione Cmd+Mayús+V en 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. Seleccione Entrar para ejecutar el 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}

Obtención de la información de conexiónGet the connection information

Para conectarse al servidor, debe proporcionar las credenciales de acceso y la información del host.To connect to your server, you need to provide host information and access credentials.

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

El resultado está en formato JSON.The result is in JSON format. Tome nota de los valores de fullyQualifiedDomainName y 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"
}

Conexión al servidor con MySQLConnect to the server using mysql

Use la herramienta de línea de comandos mysql para establecer una conexión con el servidor de Azure Database for MySQL.Use the mysql command-line tool to establish a connection to your Azure Database for MySQL server. En este ejemplo, el comando es:In this example, the command is:

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

Crear una base de datos en blancoCreate a blank database

Una vez conectado al servidor, cree una base de datos vacía.Once you’re connected to the server, create a blank database.

mysql> CREATE DATABASE mysampledb;

En el símbolo del sistema, ejecute el comando siguiente para cambiar la conexión a esta base de datos recién creada:At the prompt, run the following command to switch the connection to this newly created database:

mysql> USE mysampledb;

Creación de tablas en la base de datosCreate tables in the database

Ahora que sabe cómo conectarse a la base de datos de Azure Database for MySQL, complete algunas tareas básicas.Now that you know how to connect to the Azure Database for MySQL database, complete some basic tasks.

En primer lugar, cree una tabla y cárguela con algunos datos.First, create a table and load it with some data. Vamos a crear una tabla que almacena la información del inventario.Let's create a table that stores inventory information.

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

Carga de datos en las tablasLoad data into the tables

Ahora que tiene una tabla, inserte algunos datos en ella.Now that you have a table, insert some data into it. En la ventana de símbolo del sistema abierta, ejecute la consulta siguiente para insertar algunas filas de datos.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);

Ahora tiene dos filas de datos de ejemplo en la tabla que creó anteriormente.Now you have two rows of sample data into the table you created earlier.

Consulta y actualización de los datos en las tablasQuery and update the data in the tables

Ejecute la consulta siguiente para recuperar información de la tabla de base de datos.Execute the following query to retrieve information from the database table.

SELECT * FROM inventory;

También puede actualizar los datos en las tablas.You can also update the data in the tables.

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

La fila se actualiza en consecuencia cuando se recuperan los datos.The row gets updated accordingly when you retrieve data.

SELECT * FROM inventory;

Limpieza de recursosClean up resources

Cuando ya no lo necesite, elimine el grupo de recursos, con lo que se eliminan los recursos que contiene.When it's no longer needed, delete the resource group, which deletes the resources in the resource group.

  1. En Azure Portal, busque la opción Grupos de recursos y selecciónela.In the Azure portal, search for and select Resource groups.

  2. En la lista de los grupos de recursos, elija el nombre del grupo de recursos.In the resource group list, choose the name of your resource group.

  3. En la página de información general del grupo de recursos, seleccione Eliminar grupo de recursos.In the Overview page of your resource group, select Delete resource group.

  4. En el cuadro de diálogo de confirmación, escriba el nombre del grupo de recursos y seleccione Eliminar.In the confirmation dialog box, type the name of your resource group, and then select Delete.

Pasos siguientesNext steps

En este tutorial aprendió lo siguiente:In this tutorial you learned to:

  • Creación de un servidor de Azure Database for MySQL con el punto de conexión de servicio de red virtual mediante la plantilla de Azure Resource ManagerCreate an Azure Database for MySQL server with VNet Service Endpoint using Azure Resource Manager template
  • Uso de la herramienta de línea de comandos mysql para crear una base de datosUse the mysql command-line tool to create a database
  • Carga de datos de muestraLoad sample data
  • Consultar datosQuery data
  • Actualización de datosUpdate data