Condividi tramite


Eseguire la migrazione del carico di lavoro MySQL locale o macchina virtuale a Database di Azure per MySQL con l'interfaccia della riga di comando di importazione Database di Azure per MySQL

L'importazione di Database MySQL di Azure per le migrazioni esterne consente di eseguire facilmente la migrazione del carico di lavoro del database MySQL locale o della macchina virtuale (VM) al server flessibile di Database MySQL di Azure. Usa un file di backup fisico fornito dall'utente e ripristina i file di dati fisici del server di origine nel server di destinazione, offrendo un percorso di migrazione semplice e rapido. Dopo l'importazione, è possibile sfruttare i vantaggi di un server flessibile, che include prezzi e prestazioni migliori, un controllo granulare sulla configurazione del database e finestre di manutenzione personalizzate.

In base agli input utente, assume la responsabilità di effettuare il provisioning del server flessibile di destinazione e quindi di ripristinare il backup fisico fornito dall'utente del server di origine archiviato nell'account di archiviazione BLOB di Azure nell'istanza del server flessibile di destinazione.

Questa esercitazione spiega come usare il comando dell'interfaccia della riga di comando di importazione di Database MySQL di Azure per eseguire la migrazione del carico di lavoro del database MySQL locale o dalla macchina virtuale (VM) al server flessibile di Database MySQL di Azure.

Avviare Azure Cloud Shell

Azure Cloud Shell è una shell interattiva gratuita che può essere usata per eseguire la procedura di questo articolo. Include strumenti comuni di Azure preinstallati e configurati per l'uso con l'account.

Per aprire Cloud Shell, selezionare Prova nell'angolo superiore destro di un blocco di codice. È anche possibile aprire Cloud Shell in una scheda separata del browser visitando https://shell.azure.com/bash. Selezionare Copia per copiare i blocchi di codice, incollarli in Cloud Shell e premere INVIO per eseguirli.

Se si preferisce installare e usare l'interfaccia della riga di comando in locale, per questa esercitazione è richiesta l'interfaccia della riga di comando di Azure versione 2.54.0 o successiva. Per trovare la versione, eseguire az --version. Se è necessario eseguire l'installazione o l'aggiornamento, vedere Installare l'interfaccia della riga di comando di Azure.

Attrezzaggio

È necessario accedere all'account usando il comando az sign-in. Prendere nota dell’ID proprietà che fa riferimento all'ID sottoscrizione dell'account Azure.

az login

Selezionare la sottoscrizione specifica nell'account in cui si vuole distribuire il server flessibile di destinazione tramite il comando az account set. Prendere nota del valore dell’ID dell'output di az login da usare come valore per l'argomento subscription nel comando. Per ottenere tutte le sottoscrizioni, usare az account list.

az account set --subscription <subscription id>

Prerequisiti

  • Il server di origine deve avere i parametri seguenti:

    • Lower_case_table_names = 1
    • Innodb_file_per_table = ON
    • Il nome dello spazio di tabella di sistema deve essere ibdata1.
    • Le dimensioni dello spazio di tabella di sistema devono essere maggiori o uguali a 12 MB (impostazione predefinita di MySQL).
    • Innodb_page_size = 16348 (MySQL Default)
    • È supportato solo il motore INNODB.
  • Eseguire un backup fisico del carico di lavoro di MySQL tramite Percona XtraBackup. Di seguito sono riportati i passaggi per l'uso di Percona XtraBackup per eseguire un backup completo:

    • Installare Percona XtraBackup nel carico di lavoro locale o della macchina virtuale. Per la versione 5.7 del motore MySQL, installare Percona XtraBackup versione 2.4; vedere Installazione di Percona XtraBackup 2.4. Per la versione 8.0 del motore MySQL, installare Percona XtraBackup versione 8.0; vedere Installazione di Percona XtraBackup 8.0.

    • Per istruzioni su come eseguire un backup completo con Percona XtraBackup 2.4, vedere Backup completo. Per istruzioni su come eseguire un backup completo con Percona XtraBackup 8.0, vedere [Backup completo] (https://docs.percona.com/percona-xtrabackup/8.0/create-full-backup.html). Durante l'esecuzione del backup completo, eseguire i comandi seguenti nell'ordine seguente:

      • ** xtrabackup --backup --host={host} --user={user} --password={password} --target-dir={backup__dir_path}**
      • ** xtrabackup --prepare --{backup_dir_path}** (specificare lo stesso percorso di backup qui come nel comando precedente)
    • Considerazioni di cui tenere conto durante l'uso di Percona XtraBackup:

      • Assicurarsi di eseguire sia il passaggio di backup che quello di preparazione.
      • Assicurarsi che non si verifichino errori durante i passaggi di backup e preparazione.
      • Conservare i log dei passaggi di backup e preparazione per il supporto tecnico di Azure, che è necessario in caso di errori.

      Importante

      Il tentativo di accedere a tabelle danneggiate importate da un server di origine può causare l'arresto anomalo di un server flessibile. Di conseguenza, prima di eseguire un backup usando l'utilità Percona XtraBackup, è consigliabile eseguire un'operazione "mysqlcheck/Optimize Table" nel server di origine.

  • Creare un contenitore BLOB di Azure e ottenere il token di firma di accesso condiviso (SAS) (portale di Azure o l'interfaccia della riga di comando di Azure) per il contenitore. Assicurarsi di concedere le autorizzazioni Aggiungi, Crea e Scrivi nell'elenco a discesa Autorizzazioni. Copiare e incollare i valori dell'URL e del token di firma di accesso condiviso del BLOB in una posizione sicura. Verranno visualizzate una sola volta e non potranno essere recuperate dopo la chiusura della finestra.

  • Caricare il file di backup completo in {backup_dir_path} nell'archivio BLOB di Azure. Seguire questa procedura per caricare un file.

  • Per eseguire una migrazione online, acquisire e archiviare la posizione bin-log del file di backup eseguito tramite Percona XtraBackup eseguendo il comando cat xtrabackup_info e copiando l'output della posizione di bin_log.

  • L'account di archiviazione di Azure deve essere accessibile pubblicamente tramite il token di firma di accesso condiviso. L'account di archiviazione di Azure con una configurazione di rete virtuale non è supportato.

Limiti

  • La configurazione del server di origine non viene inclusa nella migrazione. È necessario configurare il server flessibile di destinazione in modo appropriato.
  • La migrazione dei backup crittografati non è supportata.
  • Gli utenti e i privilegi non vengono migrati nell’ambito dell'importazione di Database MySQL di Azure. È necessario eseguire un dump manuale di utenti e privilegi prima di avviare l'importazione di Database MySQL di Azure per eseguire la migrazione degli account di accesso dopo l'operazione di importazione ripristinandoli nel server flessibile di destinazione.
    • user1@localhost non può essere incluso nella migrazione perché la creazione di utenti localhost nel server flessibile non è supportata.
  • I server flessibili abilitati per la disponibilità elevata vengono restituiti come server con disponibilità elevata disabilitati per aumentare la velocità dell'operazione di migrazione dopo la migrazione dell'importazione. Abilitare la disponibilità elevata per il server flessibile di destinazione dopo la migrazione.

Suggerimenti per un'esperienza di migrazione ottimale

  • È consigliabile mantenere l'account di archiviazione BLOB di Azure e il server flessibile di destinazione da distribuire nella stessa area per migliorare le prestazioni dell’importazione.
  • Configurazione SKU consigliata per il server flessibile di Database MySQL di Azure di destinazione:
    • L'impostazione di uno SKU con possibilità di burst per la destinazione non è consigliata per ottimizzare il tempo di migrazione quando si esegue l’importazione di Database MySQL di Azure. È consigliabile passare a Utilizzo generico/Business Critical per la durata dell'operazione di importazione, che è quindi possibile ridurre fino allo SKU con possibilità di burst per l’operazione successiva all’importazione.

Attivare un'operazione di importazione di Database MySQL di Azure per eseguire la migrazione dal server flessibile di Database MySQL di Azure

Attivare un'operazione di importazione di Database MySQL di Azure con il comando az mysql flexible-server import create. Il comando seguente crea un server flessibile di destinazione ed esegue l'importazione a livello di istanza dal file di backup alla destinazione usando il contesto locale dell'interfaccia della riga di comando di 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"

Ecco i dettagli per gli argomenti indicati in precedenza:

Impostazione Valore di esempio Descrizione
data-source-type azure_blob Tipo di origine dati che funge da destinazione dell’origine per l'attivazione dell'importazione di Database MySQL di Azure. Valori accettati: [azure_blob]. Descrizione dei valori accettati azure_blob: Archivio BLOB di Azure.
data-source {resourceID} ID risorsa del contenitore BLOB di Azure.
data-source-backup-dir mysql_percona_backup Directory del contenitore di archiviazione BLOB di Azure in cui è stato caricato il file di backup. Questo valore è obbligatorio solo quando il file di backup non viene archiviato nella cartella radice del contenitore BLOB di Azure.
data-source-sas-token {sas-token} Token di firma di accesso condiviso generato per concedere l'accesso all'importazione dal contenitore di archiviazione BLOB di Azure.
resource-group test-rg Nome del gruppo di risorse di Azure del server flessibile di Database MySQL di Azure di destinazione.
mode Offline Modalità di importazione di Database MySQL di Azure. Valori accettati: [Offline]; Valore predefinito: Offline.
location westus Percorso di Azure per il server flessibile di Database MySQL di Azure di origine.
name test-flexible-server Immettere un nome univoco per il server flessibile di destinazione di Database MySQL di Azure. Il nome del server può contenere solo lettere minuscole, numeri e il segno meno (-) e deve avere una lunghezza compresa tra 3 e 63 caratteri. Nota: questo server viene distribuito nella stessa sottoscrizione, nello stesso gruppo di risorse e nella stessa area dell'origine.
admin-user adminuser Nome utente per l'accesso dell'amministratore per il server flessibile di Database MySQL di Azure di destinazione. Non può essere azure_superuser, admin, administrator, root, guest o public.
admin-password *parola d’ordine- Password dell'utente amministratore per il server flessibile di Database MySQL di Azure di destinazione. Deve contenere tra 8 e 128 caratteri. La password deve contenere caratteri di tre delle categorie seguenti: lettere maiuscole dell'alfabeto inglese, lettere minuscole dell'alfabeto inglese, numeri e caratteri non alfanumerici.
sku-name GP_Gen5_2 Immettere il nome del piano tariffario e della configurazione di calcolo per il server flessibile di Database MySQL di Azure di destinazione. Segue la convenzione {piano tariffario}{generazione di calcolo}{Vcore} in sintassi abbreviata. Per altre informazioni, vedere i piani tariffari.
livello Con possibilità di burst Livello di calcolo del server flessibile di Database MySQL di Azure di destinazione. Valori accettati: Burstable, GeneralPurpose, MemoryOptimized; Valore predefinito: Burstable.
public-access 0.0.0.0 Determina l'accesso pubblico per il server flessibile di Database MySQL di Azure di destinazione. Immettere un singolo o intervallo di indirizzi IP da includere nell'elenco degli indirizzi IP consentiti. Gli intervalli di indirizzi IP devono essere separati da trattini e non contenere spazi. Se si specifica 0.0.0.0.0, l'accesso pubblico al server viene concesso da qualsiasi risorsa distribuita in Azure. Se si imposta su "Nessuno", il server viene impostato in modalità di accesso pubblico, ma non crea una regola del firewall.
Rete virtuale myVnet Nome o ID di una rete virtuale nuova o esistente. Per usare una rete virtuale da un gruppo di risorse o una sottoscrizione diversi, specificare un ID risorsa. Il nome deve essere composto da un numero di caratteri compreso tra 2 e 64. Il nome deve iniziare con una lettera o un numero, deve terminare con una lettera, un numero o un carattere di sottolineatura e può contenere solo lettere, numeri, caratteri di sottolineatura, punti o trattini.
Subnet mySubnet Nome o ID risorsa di una subnet nuova o esistente. Per usare una subnet da un gruppo di risorse o una sottoscrizione diversi, specificare l'ID risorsa anziché il nome. La subnet viene delegata a flexibleServers. Dopo la delega, la subnet non può essere usata per altri tipi di risorse di Azure.
private-dns-zone myserver.private.contoso.com Nome o ID della zona DNS privata nuova o esistente. È possibile usare la zona DNS privata dallo stesso gruppo di risorse, da un gruppo di risorse diverso o da una sottoscrizione diversa. Per usare una zona da un gruppo di risorse o una sottoscrizione diversi, specificare l'ID risorsa. L'interfaccia della riga di comando crea una nuova zona DNS privata all'interno dello stesso gruppo di risorse della rete virtuale, se non è stata fornita dagli utenti.
key identificatore chiave di testKey ID risorsa della chiave primaria dell'insieme di credenziali delle chiavi per la crittografia dei dati.
identity testIdentity Nome o ID risorsa dell'identità assegnata dall'utente per la crittografia dei dati.
storage-size 32 Capacità di archiviazione del server flessibile di Database MySQL di Azure di destinazione. La capacità minima è 20 GiB, quella massima 16 TiB.
tag key=value Specificare il nome del gruppo di risorse di Azure.
versione 5.7 Versione principale server del server flessibile di Database MySQL di Azure di destinazione.
disponibilità elevata ZoneRedundant Abilitare (ZoneRedundant o SameZone) o disabilitare la funzionalità di disponibilità elevata per il server flessibile di Database MySQL di Azure di destinazione. Valori accettati: Disabled, SameZone, ZoneRedundant; Valore predefinito: Disabled.
zona 1 Zona di disponibilità in cui effettuare il provisioning della risorsa.
standby-zone 3 Informazioni sulla zona di disponibilità del server di standby quando è abilitata la disponibilità elevata.
storage-auto-grow Attivata Abilitare o disabilitare l'aumento automatico dello spazio di archiviazione per il server flessibile di Database MySQL di Azure di destinazione. Il valore predefinito è Enabled. Valori accettati: Disabled, Enabled; Valore predefinito: Abilitato.
iops 500 Numero di operazioni di I/O al secondo da allocare al server flessibile di Database MySQL di Azure di destinazione. Si ottiene una determinata quantità di operazioni di I/O al secondo gratuite in base alle risorse di calcolo e allo spazio di archiviazione di cui è stato effettuato il provisioning. Il valore predefinito per le operazioni di I/O al secondo è Free IOPS. Per altre informazioni sulle operazioni di I/O al secondo in base al calcolo e allo spazio di archiviazione, vedere Operazioni di I/O al secondo nel server flessibile di Database MySQL di Azure.

Eseguire la migrazione a un server flessibile con tempi di inattività minimi

Per eseguire una migrazione online dopo aver completato il seeding iniziale dal file di backup tramite l'importazione di Database MySQL di Azure, è possibile configurare la replica dei dati tra l'origine e la destinazione seguendo questa procedura. È possibile usare la posizione bin-log acquisita durante la creazione del file di backup usando Percona XtraBackup per configurare la replica basata sulla posizione log bin.

Quanto tempo impiega l'importazione di Database MySQL di Azure per eseguire la migrazione dell'istanza di MySQL?

Prestazioni con benchmark in base alle dimensioni dello spazio di archiviazione.

Dimensioni di archiviazione del file di backup Durata dell’importazione
1 GiB 0 min 23 sec
10 GiB 4 min e 24 sec
100 GiB 10 min 29 sec
500 GiB 13 min 15 sec
1 TB 22 min e 56 sec
10 TB 2 ore 5 min 30 sec

Con l'aumentare delle dimensioni dell’archivio, aumenta anche il tempo necessario per copiare i dati, quasi in una relazione lineare. Tuttavia, è importante notare che le fluttuazioni di rete possono influire significativamente sulla velocità di copia. Pertanto, i dati vengono forniti qui solo a titolo di riferimento.

Passaggio successivo