Migración de la carga de trabajo de MySQL local o máquina virtual (VM) a Azure Database for MySQL 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. Para encontrar la versión, ejecute az --version
. 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.
Importante
Si se intenta acceder a las tablas dañadas importadas desde un servidor de origen, se puede bloquear un servidor flexible. Como resultado, antes de realizar una copia de seguridad mediante la utilidad Percona XtraBackup, se recomienda encarecidamente realizar una operación "mysqlcheck /Optimize Table" en el servidor de origen.
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 estos pasos para cargar un archivo.
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 las fluctuaciones de red pueden afectar significativamente a la velocidad de copia. Por lo tanto, los datos proporcionados aquí deben tomarse como referencia únicamente.