Migrer une charge de travail MySQL locale ou de machine virtuelle vers Azure Database pour MySQL – Serveur flexible en utilisant l’interface CLI Azure Database pour MySQL Import
Azure Database pour MySQL Import pour les migrations externes vous permet de migrer votre charge de travail MySQL locale ou de machine virtuelle de manière fluide vers Azure Database pour MySQL – Serveur flexible. L’interface CLI utilise un fichier de sauvegarde physique fourni par l’utilisateur et restaure les fichiers de données physiques du serveur source sur le serveur cible en offrant un chemin de migration simple et rapide. Après l'importation, vous pouvez profiter des avantages d'un serveur flexible, notamment un meilleur prix et de meilleures performances, un contrôle granulaire de la configuration de la base de données et des fenêtres de maintenance personnalisées.
En fonction des entrées utilisateur, elle prend en charge le provisionnement de votre serveur flexible cible, puis la restauration sur l’instance de serveur flexible cible de la sauvegarde physique (fournie par l’utilisateur) du serveur source stockée dans le compte de stockage Blob Azure.
Ce tutoriel explique comment utiliser la commande CLI Azure Database pour MySQL Import pour migrer votre charge de travail MySQL locale ou de machine virtuelle vers Azure Database pour MySQL – Serveur flexible.
Lancement d’Azure Cloud Shell
Azure Cloud Shell est un interpréteur de commandes interactif et gratuit que vous pouvez utiliser pour exécuter les étapes de cet article. Il contient des outils Azure courants préinstallés et configurés pour être utilisés avec votre compte.
Pour ouvrir Cloud Shell, sélectionnez Essayer en haut à droite d’un bloc de code. Vous pouvez également ouvrir Cloud Shell dans un onglet distinct du navigateur en accédant à https://shell.azure.com/bash. Sélectionnez Copier pour copier les blocs de code, collez-les dans Cloud Shell et sélectionnez Entrée pour les exécuter.
Si vous préférez installer et utiliser l’interface de ligne de commande localement, ce tutoriel requiert la version 2.54.0 ou ultérieure d’Azure CLI. Exécutez az --version
pour trouver la version. Si vous devez installer ou mettre à niveau, voir Installer Azure CLI.
Paramétrage
Vous devez vous connecter à votre compte à l’aide de la commande az login. Notez la propriété id, qui fait référence à l’ID d’abonnement de votre compte Azure.
az login
Sélectionnez l’abonnement spécifique sous votre compte où déployer le serveur flexible cible en utilisant la commande az account set. Notez la valeur id figurant dans la sortie de la commande az login comme valeur de l’argument abonnement de la commande. Pour obtenir l’ensemble de vos abonnements, utilisez az account list.
az account set --subscription <subscription id>
Prérequis
- Le serveur source doit avoir les paramètres suivants :
- Lower_case_table_names = 1
- Innodb_file_per_table = ON
- Le nom de l’espace de table système doit être ibdata1.
- La taille de l’espace de table système doit être supérieure ou égale à 12 Mo. (MySQL par défaut)
- Innodb_page_size = 16348 (MySQL par défaut)
- Seul le moteur INNODB est pris en charge.
- Effectuez une sauvegarde physique de votre charge de travail MySQL à l’aide de Percona XtraBackup.
Voici les étapes à suivre pour utiliser Percona XtraBackup pour effectuer une sauvegarde complète :
- Installez Percona XtraBackup sur la charge de travail locale ou de machine virtuelle. Pour le moteur MySQL version v5.7, installez Percona XtraBackup version 2.4, consultez Installer Percona XtraBackup 2.4. Pour le moteur MySQL version v8.0, installez Percona XtraBackup version 8.0, consultez Installer Percona XtraBackup 8.0.
- Pour obtenir des instructions afin d’effectuer une sauvegarde complète avec Percona XtraBackup 2.4, consultez Sauvegarde complète. Pour obtenir des instructions sur la manière d’effectuer une sauvegarde complète avec Percona XtraBackup 8.0, consultez [Full backup] (https://docs.percona.com/percona-xtrabackup/8.0/create-full-backup.html). Lors de la sauvegarde complète, exécutez les commandes ci-dessous dans l’ordre :
- - xtrabackup --backup --host={host} --user={user} --password={password} --target-dir={backup__dir_path}
- - xtrabackup --prepare --{backup_dir_path} (Fournissez le même chemin de sauvegarde ici que dans la commande ci-dessus)
- Considérations relatives à la prise en compte de Percona XtraBackup :
- Veillez à exécuter la sauvegarde et à préparer l’étape.
- Vérifiez qu’il n’y a pas d’erreurs dans la sauvegarde et préparez l’étape.
- Conservez les journaux de sauvegarde et de préparation des étapes pour le support Azure, nécessaire en cas d’échecs.
- Créez un conteneur de blobs Azure et obtenez le jeton de signature d’accès partagé (SAS) (portail Azure ou Azure CLI) pour le conteneur. Veillez à accorder les autorisations Ajouter, Créer et Écrire à partir de la liste déroulante Autorisations. Copiez et collez les valeurs Jeton SAP de blob et URL en lieu sûr. Elles ne s’affichent qu’une fois et ne peuvent pas être récupérées après la fermeture de la fenêtre.
- Chargez le fichier de sauvegarde complet sur {backup_dir_path} dans votre stockage Blob Azure. Suivez ces étapes pour charger un fichier.
- Pour effectuer une migration en ligne, capturez et stockez la position de journal binaire du fichier de sauvegarde effectué avec Percona XtraBackup en exécutant la commande cat xtrabackup_info et en copiant la sortie de bin_log pos.
- Le compte de stockage Azure doit être accessible publiquement à l’aide du jeton SAP. Le compte de stockage Azure avec configuration de réseau virtuel n’est pas pris en charge.
Limites
- La configuration du serveur source n’est pas migrée. Vous devez configurer le serveur flexible cible de manière appropriée.
- La migration pour les sauvegardes chiffrées n’est pas prise en charge.
- Les utilisateurs et les privilèges ne sont pas migrés dans le cadre de Azure Database pour MySQL Import. Vous devez capturer une image mémoire manuelle des utilisateurs et privilèges avant de lancer Azure Database pour MySQL Import pour migrer les connexions après l’opération d’importation en les restaurant sur le serveur flexible cible.
- user1@localhost ne peuvent pas être migrés, car nous ne prenons pas en charge la création d’utilisateurs localhost dans le serveur flexible.
- Les serveurs flexibles activés pour la Haute disponibilité (HA) sont renvoyés comme des serveurs sans HA afin d’augmenter la vitesse de l’opération de migration après la migration d’importation. Activez HA pour votre serveur flexible cible après la migration.
Recommandations pour une expérience de migration optimale
- Déployez le compte de stockage Blob Azure et le serveur flexible cible dans la même région pour obtenir de meilleures performances d’importation.
- Configuration de référence SKU recommandée pour le serveur flexible cible Azure Database pour MySQL –
- La définition d’une référence SKU Burstable pour le serveur cible n’est pas recommandée si vous voulez optimiser la durée de migration quand vous exécutez l’opération Azure Database pour MySQL Import. Nous vous recommandons de faire une mise à l’échelle vers Usage général / Critique pour l’entreprise pour la durée de l’opération d’importation, et de faire un scale-down vers la référence SKU Burstable après l’importation.
Déclencher une opération Azure Database pour MySQL Import pour migrer un serveur flexible Azure Database pour MySQL
Déclenchez une opération d’importation Azure Database pour MySQL à l’aide de la commande az mysql flexible-server import create
. La commande suivante crée un serveur flexible cible et effectue une importation de niveau instance à partir du fichier de sauvegarde vers la destination cible en utilisant le contexte local de votre Azure CLI :
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"
Voici les détails des arguments ci-dessus :
Paramètre | Exemple de valeur | Description |
---|---|---|
data-source-type | azure_blob | Type de source de données qui sert de destination source pour déclencher l’importation Azure Database pour MySQL. Valeurs acceptées : [azure_blob]. Description des valeurs acceptées- azure_blob : stockage Blob Azure. |
data-source | {resourceID} | ID de ressource du conteneur de blobs Azure. |
data-source-backup-dir | mysql_percona_backup | Répertoire du conteneur de stockage Blob Azure dans lequel le fichier de sauvegarde a été chargé. Cette valeur est obligatoire uniquement quand le fichier de sauvegarde n’est pas stocké dans le dossier racine du conteneur de blobs Azure. |
data-source-sas-token | {sas-token} | Jeton de signature d’accès partagé (SAS) généré afin d’accorder l’accès pour l’importation à partir du conteneur de blobs Azure. |
resource-group | test-rg | Nom du groupe de ressources Azure du serveur flexible cible Azure Database pour MySQL. |
mode | Hors connexion | Le mode d’importation Azure Database pour MySQL. Valeurs acceptées : [Hors connexion] ; Valeur par défaut : Hors connexion. |
location | westus | Emplacement Azure du serveur flexible source Azure Database pour MySQL. |
name | test-flexible-server | Entrez un nom unique pour votre serveur flexible cible Azure Database pour MySQL. Le nom de serveur ne peut contenir que des lettres minuscules, des chiffres et le caractère de trait d’union (-). Il doit inclure entre 3 et 63 caractères. Remarque : Ce serveur est déployé dans le même abonnement, le même groupe de ressources et la même région que la source. |
admin-user | adminuser | Nom d’utilisateur de la connexion administrateur à votre serveur flexible cible Azure Database pour MySQL. Il ne peut pas être azure_superuser (superutilisateur_azure), admin, administrator (administrateur), root (racine), guest (invité) ni public. |
admin-password | mot de passe | Mot de passe de l’utilisateur administrateur de votre serveur flexible cible Azure Database pour MySQL. Il doit contenir entre 8 et 128 caractères. Votre mot de passe doit contenir des caractères des trois des catégories suivantes : lettres majuscules anglaises, lettres minuscules anglaises, chiffres et caractères non alphanumériques. |
sku-name | GP_Gen5_2 | Entrez le nom du niveau tarifaire et la configuration de calcul de votre serveur flexible cible Azure Database pour MySQL. Suit la convention {niveau tarifaire} {génération de calcul} {vCores} dans le raccourci. Pour plus d’informations, consultez les niveaux tarifaires. |
Niveau | Expansible | Niveau de calcul du serveur flexible cible Azure Database pour MySQL. Valeurs acceptées : Burstable, GeneralPurpose, MemoryOptimized ; Valeur par défaut : Burstable. |
public-access | 0.0.0.0 | Détermine l’accès public au serveur flexible cible Azure Database pour MySQL. Entrez une adresse IP ou une plage d’adresses IP à inclure dans la liste des adresses IP autorisées. Les adresses IP de la plage doivent être séparées par des tirets et ne doivent pas contenir d’espaces. Spécifier 0.0.0.0 permet un accès public à votre serveur à partir de toutes les ressources déployées dans Azure. Le définir sur « Aucun » définit le serveur en mode d’accès public, mais ne crée pas de règle de pare-feu. |
Réseau virtuel | myVnet | Nom ou ID d’un réseau virtuel nouveau ou existant. Si vous voulez utiliser un réseau virtuel d’un groupe de ressources ou d’un abonnement différent, fournissez un ID de ressource. Le nom doit avoir entre 2 et 64 caractères. Le nom doit commencer par une lettre ou un chiffre, et se terminer par une lettre, un chiffre ou un trait de soulignement, et peut contenir seulement des lettres, des chiffres, des traits de soulignement, des points ou des traits d’union. |
subnet | mySubnet | Nom ou ID de ressource d’un sous-réseau nouveau ou existant. Si vous voulez utiliser un sous-réseau d’un groupe de ressources ou d’un abonnement différent, fournissez un ID de ressource à la place du nom. Le sous-réseau est délégué à flexibleServers. Après la délégation, ce sous-réseau ne peut être utilisé pour aucun autre type de ressource Azure. |
private-dns-zone | myserver.private.contoso.com | Nom ou ID d’une zone DNS privée nouvelle ou existante. Vous pouvez utiliser la zone DNS privée du même groupe de ressources, d’un groupe de ressources différent ou d’un abonnement différent. Si vous voulez utiliser une zone d’un groupe de ressources ou d’un abonnement différent, fournissez un ID de ressource. L’interface CLI crée une zone DNS privée dans le même groupe de ressources que le réseau virtuel si aucun n’est fourni par les utilisateurs. |
key | identificateur de clé de testKey | ID de ressource de la clé de coffre de clés primaire pour le chiffrement des données. |
identity | testIdentity | Nom ou ID de ressource de l’identité affectée par l’utilisateur pour le chiffrement des données. |
storage-size | 32 | Capacité de stockage du serveur flexible cible Azure Database pour MySQL. La capacité minimale est de 20 Gio et la maximale de 16 Tio. |
tags | key=value | Indiquez le nom du groupe de ressources Azure. |
version | 5.7 | Version principale du serveur flexible cible Azure Database pour MySQL. |
haute disponibilité | ZoneRedundant | Activez (ZoneRedundant ou SameZone) ou désactivez la fonctionnalité de haute disponibilité du serveur flexible cible Azure Database pour MySQL. Valeurs acceptées : Désactivée, SameZone, ZoneRedundant; Valeur par défaut : Désactivée. |
zone | 1 | Zone de disponibilité dans laquelle approvisionner la ressource. |
standby-zone | 3 | Informations de la zone de disponibilité du serveur de secours lorsqu’une haute disponibilité est activée. |
storage-auto-grow | activé | Activez ou désactivez la croissance automatique du stockage du serveur flexible Azure Database pour MySQL. La valeur par défaut est : Activé. Valeurs acceptées : Désactivé, Activé ; Valeur par défaut : Activé. |
iops | 500 | Nombre d’IOPS à allouer au serveur flexible cible Azure Database pour MySQL. Vous bénéficiez d’un certain nombre d’IOPS gratuites selon le calcul et le stockage approvisionnés. La valeur par défaut des IOPS est : IOPS libres. Pour en savoir plus sur les IOPS basées sur le calcul et le stockage, consultez IOPS dans une serveur flexible Azure Database pour MySQL. |
Migrer vers un serveur flexible avec un temps d’arrêt minimal
Pour effectuer une migration en ligne après l’installation seed initiale à partir du fichier de sauvegarde en utilisant l’importation Azure Database pour MySQL, vous pouvez configurer la réplication entrante des données entre la source et la cible en suivant les étapes ici. Vous pouvez utiliser la position du journal binaire capturée pendant la création du fichier de sauvegarde avec Percona XtraBackup pour configurer une réplication basée sur la position du journal binaire.
Combien de temps l’importation Azure Database pour MySQL prend-elle pour migrer mon instance MySQL ?
Performances de référence basées sur la taille de stockage.
Taille de stockage du fichier de sauvegarde | Durée d’importation |
---|---|
1 Gio | 0 min 23 s |
10 Gio | 4 min 24 s |
100 Gio | 10 min 29 s |
500 Go | 13 min 15 s |
1 To | 22 min 56 s |
10 To | 2 h 5 min 30 s |
Quand la taille de stockage augmente, le temps nécessaire à la copie des données augmente également, presque dans une relation linéaire. Toutefois, il est important de noter que la vitesse de copie peut être considérablement affectée par les fluctuations du réseau. Par conséquent, les données fournies ici doivent être prises comme référence uniquement.