Condividi tramite


Eseguire la migrazione di MySQL in locale a Database di Azure per MySQL: Migrazione dei dati con MySQL Workbench

La migrazione dei dati è fondamentale per spostare i database MySQL da ambienti locali a Database di Azure per MySQL. Questo articolo è incentrato sull'uso di MySQL Workbench, uno strumento potente che semplifica la migrazione. Usando MySQL Workbench, è possibile trasferire i dati in modo efficiente riducendo al minimo i tempi di inattività e garantendo l'integrità dei dati. Questa guida illustra il processo dettagliato di configurazione ed esecuzione di una migrazione dei dati tramite MySQL Workbench, evidenziando procedure consigliate e potenziali insidie da evitare. Indipendentemente dal fatto che si sia un amministratore di database con esperienza o non si ha familiarità con le migrazioni di database, questo articolo fornisce informazioni dettagliate e tecniche necessarie per ottenere una migrazione senza problemi ad Azure.

Prerequisiti

Eseguire la migrazione di MySQL in locale a Database di Azure per MySQL: Migrazione dei dati

Attrezzaggio

Seguire tutti i passaggi della guida all'installazione per creare un ambiente per supportare i passaggi seguenti.

Configurare i parametri del server (origine)

A seconda del tipo di migrazione scelto (offline o online), si vuole valutare se si intende modificare i parametri del server per supportare un rapido uscita dei dati. Se si esegue online, potrebbe non essere necessario eseguire alcuna operazione ai parametri del server perché è probabile che si esegua una binlog replica e che i dati vengano sincronizzati autonomamente. Tuttavia, se si esegue una migrazione offline, dopo aver arrestato il traffico dell'applicazione, è possibile cambiare i parametri del server dal supporto del carico di lavoro al supporto dell'esportazione.

Configurare i parametri del server (destinazione)

Esaminare i parametri del server prima di avviare il processo di importazione in Database di Azure per MySQL. I parametri del server possono essere recuperati e impostati usando il portale di Azure o chiamando i cmdlet di Azure PowerShell per MySQL per apportare le modifiche.

Eseguire lo script di PowerShell seguente per ottenere tutti i parametri:

\[Net.ServicePointManager\]::SecurityProtocol = \[Net.SecurityProtocolType\]::Tls
12

Install-Module -Name Az.MySql
Connect-AzAccount
$rgName = "{RESOURCE\_GROUP\_NAME}";
$serverName = "{SERVER\_NAME}";
Get-AzMySqlConfiguration -ResourceGroupName $rgName -ServerName $serverName
mysql --host {servername}.mysql.database.azure.com --database mysql --user
{u sername}@{servername} -p --ssl-ca=c:\\temp\\BaltimoreCyberTrustRoot.crt.cer
-A -e "SHOW GLOBAL VARIABLES;" \> c:\\temp\\settings\_azure.txt

Nel nuovo file "settings_azure.txt" è possibile visualizzare i parametri del server Database di Azure per MySQL predefiniti, come illustrato nell'appendice.

Per supportare la migrazione, impostare i parametri dell'istanza di MySQL di destinazione per consentire un ingresso più veloce. Prima di avviare la migrazione dei dati, è necessario impostare i parametri del server seguenti:

  • max\_allowed\_packet : impostare il parametro su 1073741824 (ovvero 1 GB) o la dimensione massima di una riga nel database per evitare eventuali problemi di overflow dovuti a righe lunghe. Valutare la possibilità di modificare questo parametro se sono presenti righe BLOB di grandi dimensioni che devono essere estratte (o lette).

  • innodb\_buffer\_pool\_size : aumentare le prestazioni del server a 32 SKU con ottimizzazione per la memoria vCore dal piano tariffario del portale durante la migrazione per aumentare il innodb_buffer_pool_size. È possibile aumentare innodb_buffer_pool_size solo aumentando il calcolo per il database di Azure per il server MySQL. Fare riferimento ai parametri del server in Database di Azure per MySQL per il valore massimo per il livello. Il valore massimo in un sistema vCore ottimizzato per la memoria è 132070244352.

  • innodb\_io\_capacity & innodb\_io\_capacity\_max - Modificare il parametro in per 9000 migliorare l'utilizzo di I/O per ottimizzare la velocità di migrazione.

  • max\_connections - Se si usa uno strumento che genera più thread per aumentare la velocità effettiva, aumentare le connessioni per supportare tale strumento. Il valore predefinito è 151, max è 5000.

    Nota

    Prestare attenzione quando si esegue il ridimensionamento. Alcune operazioni non possono essere annullate, ad esempio il ridimensionamento dell'archiviazione.

Queste impostazioni possono essere aggiornate usando i cmdlet di Azure PowerShell seguenti:

Install-Module -Name Az.MySql
$rgName = " {RESOURCE\_GROUP\_NAME}";
$serverName = "{SERVER\_NAME}";

Select-AzSubscription -Subscription "{SUBSCRIPTION\_ID}"
Update-AzMySqlConfiguration -Name max\_allowed\_packet -ResourceGroupName
$rgna me -ServerName $serverName -Value 1073741824
Update-AzMySqlConfiguration -Name innodb\_buffer\_pool\_size -ResourceGroupName
$rgname -ServerName $serverName -Value 16106127360
Update-AzMySqlConfiguration -Name innodb\_io\_capacity -ResourceGroupName
$rgna me -ServerName $serverName -Value 9000
Update-AzMySqlConfiguration -Name innodb\_io\_capacity\_max -ResourceGroupName
$ rgname -ServerName $serverName -Value 9000

\#required if You've functions

Update-AzMySqlConfiguration -Name log\_bin\_trust\_function\_creators
-ResourceGr oupName $rgname -ServerName $serverName -Value ON

Dati

Scelta degli strumenti

Con gli oggetti di database e gli utenti del sistema di origine migrati, la migrazione può iniziare. I database in esecuzione in MySQL versione 8.0 non possono usare Servizio Migrazione del database di Azure per eseguire la migrazione del carico di lavoro. Gli utenti della migrazione devono invece usare MySQL Workbench.

Passaggi di importazione ed esportazione manuali

  • Aprire MySQL Workbench e connettersi come utente radice del database locale.

  • In **Gestione**, selezionare **Esportazione dati**. Selezionare lo schema reg_app .

  • In Oggetti da esportare selezionare Dump stored procedure e funzioni, eventi di dump e trigger di dump.

  • In Opzioni di esportazione selezionare Esporta in file indipendente.

  • Selezionare anche la casella di controllo Includi schema . Fare riferimento all'immagine seguente per osservare la configurazione mysqldump corretta.

    Screenshot dell'inclusione dello schema di creazione.

      Test

  • Se una di queste opzioni non è disponibile, è probabile che vengano ostruite dal riquadro Output. È sufficiente modificare il layout dell'editor.

    Screenshot del layout dell'editor.

      Test

  • Selezionare la scheda Stato esportazione .

  • Selezionare Avvia esportazione. Si noti che MySQL Workbench effettua chiamate allo mysqldump strumento.

  • Aprire lo script di esportazione appena creato.

  • Trovare eventuali DEFINER istruzioni e passare a un utente valido o rimuoverle completamente.

Nota

A tale scopo, passare il --skip-definer comando mysqldump. Questa non è un'opzione in MySQL Workbench; pertanto, le righe devono essere rimosse manualmente nei comandi di esportazione. Anche se vengono evidenziati quattro elementi da rimuovere qui, possono verificarsi altri elementi che potrebbero non riuscire durante la migrazione da una versione di MySQL a un'altra (ad esempio nuove parole riservate).

  • Trovare SET GLOBAL le istruzioni e passare a un utente valido o rimuoverle completamente.

  • Assicurarsi che sql\_mode non sia impostato su NO\_AUTO\_CREATE\_USER.

  • Rimuovere la hello\_world funzione.

  • In MySQL Workbench creare una nuova connessione al Database di Azure per MySQL.

    • Per Nome host immettere il DNS completo del server (ad esempio: servername.mysql.database.azure.com).

    • Immettere il nome utente (ad esempio: sqlroot@servername).

    • Selezionare la scheda SSL .

    • Per il file della CA SSL passare al file di chiave BaltimoreCyberTrustRoot.crt.cer .

    • Selezionare Test connessione, assicurarsi che la connessione venga completata.

    • Seleziona OK.

      Screenshot della finestra di dialogo Connessione MySQL.

      Viene visualizzata la finestra di dialogo Connessione MySQL.

  • Selezionare File-Apri> script SQL.

  • Passare al file di dump, selezionare Apri.

  • Seleziona Execute.

Aggiornare le applicazioni per supportare SSL

  • Passare all'API Java Server in Visual Studio Code.

  • Aprire il file launch.json .

  • Aggiornare il DB_CONNECTION_URL in jdbc:mysql://serverDNSname:3306/reg\_app?useUnicode=true\&useJDBCCompliantT imezoneShift=true\&useLegacyDatetimeCode=false\&serverTimezone=UTC\&verifySe rverCertificate=true\&useSSL=true\&requireSSL=true\&noAccessToProcedureBodie s=true. Prendere nota dei parametri SSL aggiuntivi.

  • Aggiornare DB_USER_NAME a conferenceuser@servername.

  • Avviare la configurazione di debug e assicurarsi che l'applicazione funzioni in locale con il nuovo database.

Ripristinare i parametri del server

È possibile modificare i parametri seguenti nell'istanza di destinazione Database di Azure per MySQL. Questi parametri possono essere impostati tramite il portale di Azure o usando i cmdlet di Azure PowerShell per MySQL.

$rgName = "YourRGName";
$serverName = "servername";
Update-AzMySqlConfiguration -Name max\_allowed\_packet -ResourceGroupName
$rgna me -ServerName $serverName -Value 536870912
Update-AzMySqlConfiguration -Name innodb\_buffer\_pool\_size -ResourceGroupName
$rgname -ServerName $serverName -Value 16106127360
Update-AzMySqlConfiguration -Name innodb\_io\_capacity -ResourceGroupName $rgna
me -ServerName $serverName -Value 200
Update-AzMySqlConfiguration -Name innodb\_io\_capacity\_max -ResourceGroupName
$ rgname -ServerName $serverName -Value 2000

Modificare stringa di connessione per l'API Java

  • Usare i comandi seguenti per modificare il stringa di connessione per l'API Java servizio app
$rgName = "YourRGName";
$app_name = "servername";
az webapp config appsettings set -g $rgName -n $app_name
--settings DB_CONNECTION_URL={DB_CONNECTION_URL}

Nota

Tenere presente che è possibile usare il portale per impostare il stringa di connessione.

  • Riavviare l'API servizio app
az webapp restart -g $rgName -n $app\_name

È stata completata correttamente una migrazione locale per Database di Azure per MySQL.

Passaggio successivo