Compartir a través de


Migración de la carga de trabajo de MySQL local o máquina virtual (VM) a Azure Database for MySQL: Servidor flexible mediante la CLI de importación de Azure Database for MySQL

La importación de Azure Database for MySQL para migraciones externas le permite migrar la carga de trabajo local o de máquina virtual (VM) de MySQL sin problemas a Azure Database for MySQL: servidor flexible. Usa un archivo de copia de seguridad físico proporcionado por el usuario y restaura los archivos de datos físicos del servidor de origen al servidor de destino que ofrece una ruta de migración sencilla y rápida. Después de la operación de importación, puede aprovechar las ventajas de un servidor flexible, que incluyen mejor precio y rendimiento, control pormenorizado sobre la configuración de la base de datos y ventanas de mantenimiento personalizadas.

En función de las entradas del usuario, asume la responsabilidad de aprovisionar el servidor flexible de destino y, a continuación, restaurar la copia de seguridad física proporcionada por el usuario del servidor de origen almacenada en la cuenta de Azure Blob Storage a la instancia de servidor flexible de destino.

En este tutorial se muestra cómo usar el comando de la CLI de importación de Azure Database for MySQL para migrar la carga de trabajo local o de máquina virtual (VM) de MySQL a Azure Database for MySQL: servidor flexible.

Inicio de Azure Cloud Shell

Azure Cloud Shell es un shell interactivo gratuito que puede usar para ejecutar los pasos de este artículo. Tiene las herramientas comunes de Azure preinstaladas y configuradas para usarlas en la cuenta.

Para abrir Cloud Shell, seleccione Pruébelo en la esquina superior derecha de un bloque de código. También puede abrir Cloud Shell en una pestaña independiente acudiendo a https://shell.azure.com/bash. Seleccione Copiar para copiar los bloques de código, péguelos en Cloud Shell y, después, seleccione Entrar para ejecutarlos.

Si prefiere instalar y usar la CLI en un entorno local, para este tutorial se requiere la versión 2.54.0 de la CLI de Azure o una versión posterior. Ejecute az --version para encontrar la versión. Si necesita instalarla o actualizarla, vea Instalación de la CLI de Azure.

Programa de instalación

Debe iniciar sesión en la cuenta con el comando az sign-in. Anote la propiedad id, que hace referencia al Id. de suscripción de su cuenta de Azure.

az login

Seleccione la suscripción específica en la cuenta en la que desea implementar el servidor flexible de destino mediante el comando az account set. Anote el valor de id de la salida de az login, ya que lo usará como valor del argumento subscription en el comando. Para obtener todas las suscripciones, use az account list.

az account set --subscription <subscription id>

Requisitos previos

  • El servidor de origen debe tener los parámetros siguientes:
    • Lower_case_table_names = 1
    • Innodb_file_per_table = ON
    • El nombre del espacio de tablas del sistema debe ser ibdata1.
    • El tamaño del espacio de tablas del sistema debe ser mayor o igual a 12 MB. (MySQL predeterminado)
    • Innodb_page_size = 16348 (MySQL predeterminado)
    • Solo se admite el motor INNODB.
  • Realice una copia de seguridad física de su carga de trabajo MySQL utilizando Percona XtraBackup. Estos son los pasos para usar Percona XtraBackup para realizar una copia de seguridad completa:
    • Instale Percona XtraBackup en la carga de trabajo local o de máquina virtual. Para la versión 5.7 del motor de MySQL, instale la versión 2.4 de Percona XtraBackup. Para ello, consulte Instalación de Percona XtraBackup 2.4. Para la versión 8.0 del motor de MySQL, instale la versión 8.0 de Percona XtraBackup. Para ello, consulte Instalación de Percona XtraBackup 8.0.
    • Para obtener instrucciones para realizar una copia de seguridad completa con Percona XtraBackup 2.4, consulte Copia de seguridad completa. Para obtener instrucciones para realizar una copia de seguridad completa con Percona XtraBackup 8.0, consulte [Copia de seguridad completa] (https://docs.percona.com/percona-xtrabackup/8.0/create-full-backup.html). Al realizar una copia de seguridad completa, ejecute los siguientes comandos en orden:
      • - xtrabackup --backup --host={host} --user={user} --password={password} --target-dir={backup__dir_path}
      • - xtrabackup --prepare --{backup_dir_path} (Proporcione aquí la misma ruta de copia de seguridad que en el comando anterior)
    • Consideraciones al tomar el Percona XtraBackup:
      • Asegúrese de ejecutar tanto la copia de seguridad como el paso de preparación.
      • Asegúrese de que no hay errores en la copia de seguridad y en el paso de preparación.
      • Guarde la copia de seguridad y prepare los registros de pasos para Soporte técnico de Azure, necesarios en caso de errores.
  • Cree un contenedor de Azure Blob y obtenga el token de firma de acceso compartido (SAS) (Azure Portal o la CLI de Azure) para el contenedor. Asegúrese de conceder los permisos para agregar, crear y escribir en la lista desplegable de Permisos. Copie y pegue estos valores en una ubicación segura. Solo se muestran una vez y no se pueden recuperar una vez cerrada la ventana.
  • Cargue el archivo de copia de seguridad completo en {backup_dir_path} en Azure Blob Storage. Siga los pasos aquí.
  • Para realizar una migración en línea, capture y almacene la posición bin-log del archivo de copia de seguridad realizado con Percona XtraBackup ejecutando el comando cat xtrabackup_info y copiando la salida bin_log pos.
  • La cuenta de almacenamiento de Azure debe ser accesible públicamente mediante el token de SAS. No se admite la cuenta de Almacenamiento de Azure con configuración de red virtual.

Limitaciones

  • No se migra la configuración del servidor de origen. Debe configurar el servidor flexible de destino adecuadamente.
  • No se admite la migración de copias de seguridad cifradas.
  • Los usuarios y privilegios no se migran como parte de la importación de Azure DB for MySQL. Debe tomar un volcado manual de usuarios y privilegios antes de iniciar la importación de Azure Database for MySQL para migrar inicios de sesión después de la operación de importación mediante la restauración en el servidor flexible de destino.
    • user1@localhost no se pueden migrar, ya que no se admite la creación de usuarios localhost en el servidor flexible.
  • Los servidores flexibles habilitados para alta disponibilidad se devuelven como servidores deshabilitados para alta disponibilidad para aumentar la velocidad de la operación de migración después de la migración de importación. Habilite la alta disponibilidad para el servidor flexible de destino después de la migración.

Recomendaciones para una experiencia de migración óptima

  • Considere la posibilidad de mantener la cuenta de Azure Blob Storage y el servidor flexible de destino que se va a implementar en la misma región para mejorar el rendimiento de la importación.
  • Configuración de SKU recomendada para el servidor flexible de Azure Database for MySQL de destino:
    • No se recomienda establecer una SKU ampliable para el destino para optimizar el tiempo de migración al ejecutar la operación de importación de Azure Database for MySQL. Se recomienda escalar verticalmente a Uso general o Crítico para la empresa para el curso de la operación de importación, después de la cual puede reducir verticalmente a una SKU ampliable.

Desencadenar una operación de importación de Azure DB for MySQL para migrar desde Azure Database for MySQL: servidor flexible

Desencadene una operación de importación de Azure DB for MySQL con el comando az mysql flexible-server import create. El siguiente comando crea un servidor flexible de destino y realiza la importación en el nivel de instancia del archivo de copia de seguridad al destino mediante el contexto local de la CLI de Azure:

az mysql flexible-server import create --data-source-type
                                --data-source
                                --data-source-sas-token
                                --resource-group
                                --name
                                --sku-name
                                --tier
                                --version
                                --location
                                [--data-source-backup-dir]
                                [--storage-size]
                                [--mode]
                                [--admin-password]
                                [--admin-user]
                                [--auto-scale-iops {Disabled, Enabled}]
                                [--backup-identity]
                                [--backup-key]
                                [--backup-retention]
                                [--database-name]
                                [--geo-redundant-backup {Disabled, Enabled}]
                                [--high-availability {Disabled, SameZone, ZoneRedundant}]
                                [--identity]
                                [--iops]
                                [--key]
                                [--private-dns-zone]
                                [--public-access]
                                [--resource-group]
                                [--standby-zone]
                                [--storage-auto-grow {Disabled, Enabled}]
                                [--subnet]
                                [--subnet-prefixes]
                                [--tags]
                                [--vnet]
                                [--zone]

The following example takes in the data source information for your source MySQL server's backup file and target Flexible Server information, creates a target Flexible Server named `test-flexible-server` in the `westus` location and performs an import from backup file to target.

azurecli-interactive
az mysql flexible-server import create --data-source-type "azure_blob" --data-source "https://onprembackup.blob.core.windows.net/onprembackup" --data-source-backup-dir "mysql_backup_percona" –-data-source-token "{sas-token}" --resource-group "test-rg"  --name "test-flexible-server" –-sku-name Standard_D2ds_v4  --tier GeneralPurpose –-version 5.7 -–location "westus"

Estos son los detalles de los argumentos anteriores:

Configuración Valor de ejemplo Descripción
data-source-type azure_blob Tipo de origen de datos que actúa como destino de origen para desencadenar la importación de Azure DB for MySQL. Valores aceptados: [azure_blob]. Descripción de los valores aceptados- azure_blob: Azure Blob Storage.
data-source {resourceID} Identificador de recurso del contenedor de Azure Blob.
data-source-backup-dir mysql_percona_backup Directorio del contenedor de Azure Blob Storage en el que se cargó el archivo de copia de seguridad. Este valor solo es necesario cuando el archivo de copia de seguridad no se almacena en la carpeta raíz del contenedor de Azure Blob.
data-source-sas-token {sas-token} El token de firma de acceso compartido (SAS) generado para conceder acceso a la importación desde el contenedor de Azure Blob Storage.
resource-group test-rg Nombre del grupo de recursos de Azure del servidor flexible de Azure Database for MySQL de destino.
mode Sin conexión Modo de importación de Azure Database for MySQL. Valores aceptados: [Offline]; Valor predeterminado: Offline.
ubicación westus Ubicación de Azure para el servidor flexible de Azure Database for MySQL de origen.
name test-flexible-server Escriba un nombre único para el servidor flexible de Azure Database for MySQL de destino. El nombre del servidor solo puede contener letras minúsculas, números y el carácter de guion (-). Debe contener entre 3 y 63 caracteres. Nota: Este servidor se implementa en la misma suscripción, grupo de recursos y región que el origen.
admin-user adminuser Nombre de usuario de inicio de sesión de administrador para el servidor flexible de Azure Database for MySQL de destino. No pueden ser azure_superuser, admin, administrator, root, guest o public.
admin-password password La contraseña del usuario administrador de su servidor flexible de Azure Database for MySQL de destino. Debe tener entre 8 y 128 caracteres. La contraseña debe contener caracteres de tres categorías: letras en mayúsculas del alfabeto inglés, letras en minúscula del alfabeto inglés, números y caracteres no alfanuméricos.
sku-name GP_Gen5_2 Escriba el nombre del plan de tarifa y la configuración de proceso del servidor flexible de Azure Database for MySQL de destino. Sigue la convención {plan de tarifa} {generación de procesos} {núcleos virtuales} en forma abreviada. Para más información, consulte los planes de tarifa.
Nivel: Flexible Nivel de proceso del servidor flexible de Azure Database for MySQL de destino. Valores aceptados: Bustable, GeneralPurpose, MemoryOptimized; Valor predeterminado: Burstable.
public-access 0.0.0.0 Determina el acceso público para el servidor flexible de Azure Database for MySQL de destino. Puede proporcionar una dirección IP o un intervalo de ellas para incluirlas en la lista de direcciones IP permitidas. El intervalo de direcciones IP debe estar separado por guiones y no contener espacios. La especificación de 0.0.0.0 habilita el acceso público desde cualquiera de los recursos implementados en Azure para acceder al servidor. Si se establece en "None", el servidor se establece en modo de acceso público, pero no crea una regla de firewall.
Red virtual myVnet Nombre o id. de una red virtual nueva o existente. Si desea usar una red virtual de un grupo de recursos o una suscripción diferentes, proporcione un id. de recurso. este debe tener entre 2 y 64 caracteres. El nombre debe comenzar con una letra o un número, acabar con una letra, un número o un guion bajo, y puede contener solo letras, números, guiones bajos, puntos o guiones.
subnet mySubnet Nombre o id. de recurso de una subred nueva o existente. Si desea usar una subred de un grupo de recursos o una suscripción diferentes, proporcione el id. de recurso en lugar del nombre. La subred se delega en flexibleServers. Después de la delegación, esta subred no se puede usar para ningún otro tipo de recursos de Azure.
private-dns-zone myserver.private.contoso.com Nombre o id. de la zona DNS privada nueva o existente. Puede usar la zona DNS privada del mismo grupo de recursos, un grupo de recursos diferente o una suscripción diferente. Si desea usar una zona de un grupo de recursos o una suscripción diferentes, proporcione el identificador de recurso. La CLI crea una nueva zona DNS privada dentro del mismo grupo de recursos que la red virtual si no la proporcionan los usuarios.
key identificador clave de testKey El id. de recurso de la clave principal de Keyvault para el cifrado de datos.
identity testIdentity Nombre o id. de recurso de la identidad asignada por el usuario para el cifrado de datos.
storage-size 32 La capacidad de almacenamiento del servidor flexible de Azure Database for MySQL de destino. El mínimo es 20 GiB y el máximo es 16 TiB.
etiquetas key=value Especifique el nombre del grupo de recursos de Azure.
version 5.7 Versión principal del servidor flexible de Azure Database for MySQL de destino.
alta disponibilidad ZoneRedundant Habilite (ZoneRedundant o SameZone) o deshabilite la característica de alta disponibilidad para el servidor flexible de Azure Database for MySQL de destino. Valores aceptados: Disabled, SameZone, ZoneRedundant; Valor predeterminado: Disabled.
zona 1 Zona de disponibilidad en la que se va a aprovisionar el recurso.
standby-zone 3 Información de la zona de disponibilidad del servidor en espera cuando está habilitada la alta disponibilidad.
storage-auto-grow habilitado Habilite o deshabilite el crecimiento automático del almacenamiento para el servidor flexible de Azure Database for MySQL de destino. El valor predeterminado es Enabled. Valores aceptados: Disabled, Enabled; Valor predeterminado: Enabled.
iops 500 Número de IOPS que se asignarán para el servidor flexible de Azure Database for MySQL de destino. Obtiene una determinada cantidad de IOPS gratis en función del proceso y el almacenamiento aprovisionados. El valor predeterminado de IOPS es IOPS gratis. Para más información sobre las IOPS basadas en el proceso y el almacenamiento, consulte IOPS en Servidor flexible de Azure Database for MySQL.

Migración al servidor flexible con un tiempo de inactividad mínimo

Para realizar una migración en línea después de completar la inicialización del archivo de copia de seguridad mediante la importación de Azure Database for MySQL, puede configurar la replicación de datos de entrada entre el origen y el destino siguiendo los pasos aquí. Puede usar la posición bin-log capturada al tomar el archivo de copia de seguridad mediante Percona XtraBackup para configurar la replicación basada en la posición de Bin-log.

¿Cuánto tarda la importación de Azure Database for MySQL en migrar mi instancia de MySQL?

Punto de referencia de rendimiento basado en el tamaño de almacenamiento.

Tamaño de almacenamiento del archivo de copia de seguridad Hora de importación
1 GiB 0 min 23 segundos
10 GiB 4 min 24 segundos
100 GiB 10 min 29 segundos
500 GiB 13 min 15 segundos
1 TB 22 min 56 segundos
10 TB 2 horas 5 min 30 segundos

A medida que aumenta el tamaño de almacenamiento, el tiempo necesario para la copia de datos también aumenta, casi en una relación lineal. Sin embargo, es importante tener en cuenta que la velocidad de copia puede verse afectada significativamente por las fluctuaciones de red. Por lo tanto, los datos proporcionados aquí deben tomarse como referencia únicamente.

Paso siguiente