Eseguire la migrazione di database di grandi dimensioni a Database di Azure per MySQL con mydumper/myloader
Database di Azure per MySQL è un servizio gestito che consente di eseguire, gestire e dimensionare database MySQL a disponibilità elevata nel cloud. Per eseguire la migrazione di database MySQL di dimensioni superiori a 1 TB a Database di Azure per MySQL, prendere in considerazione l'uso di strumenti della community come mydumper/myloader, che offrono i vantaggi seguenti:
- Parallelismo, per ridurre il tempo di migrazione.
- Prestazioni migliori, evitando routine di conversione costose dei set di caratteri.
- Un formato di output, con file separati per tabelle, metadati e così via, che semplifica la visualizzazione/analisi dei dati. Coerenza, mantenendo lo snapshot in tutti i thread.
- Posizioni accurate dei log primari e di replica.
- Facilità di gestione, poiché supportano espressioni regolari compatibili con Perl (PCRE) per specificare inclusioni ed esclusioni di database e tabelle.
- Lo schema e i dati vanno insieme. Non è necessario gestirlo separatamente come altri strumenti di migrazione logica.
Questa guida introduttiva illustra come installare, eseguire il backup e ripristinare un database MySQL usando mydumper/myloader.
Prerequisiti
Prima di iniziare la migrazione del database MySQL, è necessario:
Creare un database di Azure per il server MySQL con il portale di Azure.
Creare una macchina virtuale di Azure che esegue Linux usando il portale di Azure (preferibilmente Ubuntu).
Nota
Prima di installare gli strumenti, considerare i punti seguenti:
- Se l'origine è locale e ha una connessione a larghezza di banda elevata ad Azure (usando ExpressRoute), prendere in considerazione l'installazione dello strumento in una macchina virtuale di Azure.
- Se si verifica un problema nella larghezza di banda tra l'origine e la destinazione, prendere in considerazione l'installazione di mydumper vicino all'origine e al myloader vicino al server di destinazione. È possibile usare gli strumenti di Azcopy per spostare i dati da soluzioni locali o cloud ad Azure.
- Se l'origine è locale e ha una connessione a larghezza di banda elevata ad Azure (usando ExpressRoute), prendere in considerazione l'installazione dello strumento in una macchina virtuale di Azure.
Installare il client mysql, seguire questa procedura:
- Aggiornare l'indice del pacchetto nella macchina virtuale di Azure che esegue Linux eseguendo il comando seguente:
sudo apt update
- Installare il pacchetto client mysql eseguendo il comando seguente:
sudo apt install mysql-client
Installare mydumper/myloader
Per installare mydumper/myloader, seguire questa procedura.
A seconda della distribuzione del sistema operativo, scaricare il pacchetto appropriato per mydumper/myloader, eseguendo il comando seguente:
wget https://github.com/maxbube/mydumper/releases/download/v0.10.1/mydumper_0.10.1-2.$(lsb_release -cs)_amd64.deb
Nota
$(lsb_release -cs) consente di identificare la distribuzione.
Per installare il pacchetto .deb per mydumper, eseguire il comando seguente:
sudo dpkg -i mydumper_0.10.1-2.$(lsb_release -cs)_amd64.deb
Suggerimento
Il comando usato per installare il pacchetto sarà diverso in base alla distribuzione di Linux disponibile perché i programmi di installazione sono diversi. Mydumper/myloader è disponibile per le distribuzioni seguenti Fedora, RedHat, Ubuntu, Debian, openSUSE e MacOSX. Per altre informazioni, vedere Come installare mydumper
Creare un backup con mydumper
Per creare un backup con mydumper, eseguire il comando seguente:
mydumper --host=<servername> --user=<username> --password=<Password> --outputdir=./backup --rows=100000 --compress --build-empty-files --threads=16 --compress-protocol --trx-consistency-only --ssl --regex '^(<Db_name>\.)' -L mydumper-logs.txt
Questo comando usa le variabili seguenti:
-host: host a cui connettersi
-user: nome utente con i privilegi necessari
-password: password utente
-rows: provare a suddividere le tabelle in blocchi di queste molte righe
-outputdir: directory in cui eseguire il dump dei file di output
-regex: espressione regolare per corrispondenza database.
-trx-consistency-only: solo coerenza transazionale
-threads: numero di thread da usare, valore predefinito 4. È consigliabile usare un valore uguale a 2x del vCore del computer.
Nota
Per altre informazioni su altre opzioni, è possibile usare con mydumper, eseguire il comando seguente: mydumper --help. Per altri dettagli, vedere la documentazione di mydumper\myloader
Per eseguire il dump di più database in parallelo, è possibile modificare la variabile regex come illustrato nell'esempio: regex '^(DbName1.|DbName2.)
Ripristinare il database con myloader
Per ripristinare il database di cui è stato eseguito il backup con mydumper, eseguire il comando seguente:
myloader --host=<servername> --user=<username> --password=<Password> --directory=./backup --queries-per-transaction=500 --threads=16 --compress-protocol --ssl --verbose=3 -e 2>myloader-logs.txt
Questo comando usa le variabili seguenti:
- -host: host a cui connettersi
- -user: nome utente con i privilegi necessari
- -password: password utente
- -directory: percorso in cui è archiviato il backup.
- -queries-per-transaction: consigliare l'impostazione su valore non superiore a 500
- -threads: numero di thread da usare, valore predefinito 4. Consigliato usare un valore uguale a 2x del vCore del computer
Suggerimento
Per altre informazioni su altre opzioni che è possibile usare con myloader, eseguire il comando seguente: myloader --help
Dopo il ripristino del database, è sempre consigliabile convalidare la coerenza dei dati tra l'origine e i database di destinazione.
Nota
Inviare eventuali problemi o commenti relativi agli strumenti mydumper/myloader qui.