Migrera din MySQL-databas till Azure Database for MySQL – flexibel server med dump och återställning
Den här artikeln beskriver två vanliga sätt att säkerhetskopiera och återställa databaser i Azure Database for MySQL – flexibel server.
- Dumpa och återställa från kommandoraden (med mysqldump).
- Dumpa och återställa med PHPMyAdmin.
Du kan också läsa guiden för databasmigrering för detaljerad information och användningsfall om att migrera databaser till Azure Database for MySQL – flexibel server. Den här guiden ger vägledning som leder till lyckad planering och körning av en MySQL-migrering till Azure.
Innan du börjar
Om du vill gå igenom den här instruktionsguiden måste du ha:
- En Azure Database for MySQL – flexibel serverinstans – Azure Portal
- kommandoradsverktyget mysqldump installerat på en dator.
- MySQL Workbench eller ett annat MySQL-verktyg från tredje part för att göra dump- och återställningskommandon.
Dricks
Om du vill migrera stora databaser med databasstorlekar som är fler än 1 TB kan du överväga att använda communityverktyg som mydumper/myloader som stöder parallell export och import. Lär dig hur du migrerar stora MySQL-databaser.
Vanliga användningsfall för dumpning och återställning
De vanligaste användningsfallen är:
Flytta från annan hanterad tjänstleverantör – De flesta hanterade tjänstleverantörer kanske inte ger åtkomst till den fysiska lagringsfilen av säkerhetsskäl, så logisk säkerhetskopiering och återställning är det enda alternativet att migrera.
Migrera från lokal miljö eller virtuell dator – Azure Database for MySQL – flexibel server stöder inte återställning av fysiska säkerhetskopior, vilket gör logisk säkerhetskopiering och återställning som enda metod.
När du flyttar lagringen av säkerhetskopior från lokalt redundant till geo-redundant lagring – Azure Database for MySQL – flexibel server gör det möjligt att konfigurera lokalt redundant eller geo-redundant lagring för säkerhetskopiering tillåts endast under serverskapandet. När servern har etablerats kan du inte ändra redundansalternativet för lagringsenheten för säkerhetskopior. För att flytta din lagring av säkerhetskopior från lokalt redundant lagring till geo-redundant lagring är dump och återställning alternativet ENDAST.
Migrering från alternativa lagringsmotorer till InnoDB – Azure Database for MySQL – flexibel server stöder endast InnoDB Storage-motorn och stöder därför inte alternativa lagringsmotorer. Om dina tabeller har konfigurerats med andra lagringsmotorer konverterar du dem till InnoDB-motorformatet före migreringen till Azure Database for MySQL – flexibel server.
Om du till exempel har en WordPress eller WebApp med hjälp av MyISAM-tabellerna konverterar du först dessa tabeller genom att migrera till InnoDB-format innan du återställer till Azure Database for MySQL – flexibel server. Använd -satsen
ENGINE=InnoDB
för att ange den motor som används när du skapar en ny tabell och överför sedan data till den kompatibla tabellen före återställningen.INSERT INTO innodb_table SELECT * FROM myisam_table ORDER BY primary_key_columns
Viktigt!
- För att undvika eventuella kompatibilitetsproblem bör du se till att samma version av MySQL används i käll- och målsystemen när databaser dumpas. Om din befintliga MySQL-server till exempel är version 5.7 bör du migrera till en Azure Database for MySQL– flexibel serverinstans som konfigurerats för att köra version 5.7. Kommandot
mysql_upgrade
fungerar inte i en Azure Database for MySQL – flexibel serverinstans och stöds inte. - Om du behöver uppgradera mellan MySQL-versioner dumpar eller exporterar du först databasen med lägre version till en högre version av MySQL i din egen miljö. Kör
mysql_upgrade
sedan innan du försöker migrera till en Azure Database for MySQL – flexibel serverinstans.
Prestandaöverväganden
För att optimera prestanda bör du ta hänsyn till dessa överväganden när du dumpar stora databaser:
- Använd alternativet
exclude-triggers
i mysqldump när du dumpar databaser. Undanta utlösare från dumpfiler för att undvika att utlösarkommandona utlöses under dataåterställningen. - Använd alternativet
single-transaction
för att ange transaktionsisoleringsläget till REPEATABLE READ och skickar en START TRANSACTION SQL-instruktion till servern innan data dumpas. Om du dumpar många tabeller i en enda transaktion kan du använda lite extra lagringsutrymme under återställningen. Alternativetsingle-transaction
och alternativetlock-tables
är ömsesidigt uteslutande eftersom LOCK TABLES gör att väntande transaktioner checkas in implicit. Om du vill dumpa stora tabeller kombinerar dusingle-transaction
alternativet med alternativetquick
. - Använd syntaxen
extended-insert
för flera rader som innehåller flera VÄRDE-listor. Detta resulterar i en mindre dumpfil och påskyndar infogningar när filen laddas om. - Använd alternativet
order-by-primary
i mysqldump när du dumpar databaser, så att data skrivs i primärnyckelordning. - Använd alternativet
disable-keys
i mysqldump när du dumpar data för att inaktivera begränsningar för sekundärnyckel före inläsning. Om du inaktiverar sekundärnyckelkontroller får du prestandavinster. Aktivera begränsningarna och verifiera data efter inläsningen för att säkerställa referensintegritet. - Använd partitionerade tabeller när det är lämpligt.
- Läs in data parallellt. Undvik för mycket parallellitet som gör att du når en resursgräns och övervaka resurser med hjälp av de mått som är tillgängliga i Azure Portal.
defer-table-indexes
Använd alternativet i mysqldump när du dumpar databaser, så att indexskapande sker när tabelldata har lästs in.- Kopiera säkerhetskopieringsfilerna till en Azure-blob/lagring och utför återställningen därifrån, vilket bör gå mycket snabbare än att utföra återställningen över Internet.
Skapa en databas på Azure Database for MySQL–målinstansen för flexibel server
Skapa en tom databas på azure database for MySQL–målinstansen för flexibel server där du vill migrera data. Använd ett verktyg som MySQL Workbench eller mysql.exe för att skapa databasen. Databasen kan ha samma namn som databasen som innehåller de dumpade data eller så kan du skapa en databas med ett annat namn.
För att ansluta letar du upp anslutningsinformationen i Översikt över din Azure Database for MySQL – flexibel serverinstans.
Lägg till anslutningsinformationen i MySQL Workbench.
Förbereda Azure Database for MySQL–målinstansen för flexibel server för snabb datainläsning
För att förbereda Azure Database for MySQL–målinstansen för flexibel server för snabbare datainläsning måste följande serverparametrar och konfiguration ändras.
- max_allowed_packet – inställd på 1073741824 (dvs. 1 GB) för att förhindra eventuella spillproblem på grund av långa rader.
- slow_query_log – ställ in på AV för att stänga av loggen för långsamma frågor. Detta eliminerar de omkostnader som orsakas av långsam frågeloggning under datainläsningar.
- query_store_capture_mode – ställ in på NONE för att inaktivera Query Store. Detta eliminerar de kostnader som orsakas av samplingsaktiviteter från Query Store.
- innodb_buffer_pool_size – Skala upp servern till 32 VCore Minnesoptimerad SKU från prisnivån i portalen under migreringen för att öka innodb_buffer_pool_size. Innodb_buffer_pool_size kan bara ökas genom att skala upp beräkning för Azure Database for MySQL – flexibel serverinstans.
- innodb_io_capacity & innodb_io_capacity_max – Ändra till 9000 från serverparametrarna i Azure Portal för att förbättra I/O-användningen för att optimera för migreringshastighet.
- innodb_write_io_threads & innodb_write_io_threads – Ändra till 4 från serverparametrarna i Azure Portal för att förbättra migreringens hastighet.
- Skala upp lagringsnivån – IOPS för Azure Database for MySQL – flexibel server ökar gradvis med en ökning av lagringsnivån. För snabbare belastningar kanske du vill öka lagringsnivån för att öka de etablerade IOP:erna. Kom ihåg att lagringen bara kan skalas upp, inte ned.
När migreringen är klar kan du återställa serverparametrarna och konfigurationen på beräkningsnivå till dess tidigare värden.
Dumpa och återställa med mysqldump-verktyget
Skapa en säkerhetskopia från kommandoraden med mysqldump
Om du vill säkerhetskopiera en befintlig MySQL-databas på den lokala servern eller på en virtuell dator kör du följande kommando:
mysqldump --opt -u [uname] -p[pass] [dbname] > [backupfile.sql]
Parametrarna som ska anges är:
- [uname] Ditt databasanvändarnamn
- [pass] Lösenordet för databasen (observera att det inte finns något utrymme mellan -p och lösenordet)
- [dbname] Namnet på databasen
- [backupfile.sql] Filnamnet för databassäkerhetskopian
- [--opt] Mysqldump-alternativet
Om du till exempel vill säkerhetskopiera en databas med namnet "testdb" på MySQL-servern med användarnamnet "testuser" och utan lösenord till en fil testdb_backup.sql använder du följande kommando. Kommandot säkerhetskopierar testdb
databasen till en fil med namnet testdb_backup.sql
, som innehåller alla SQL-instruktioner som behövs för att återskapa databasen. Kontrollera att användarnamnet "testuser" har minst SELECT-behörigheten för dumpade tabeller, VISA VY för dumpade vyer, UTLÖSAre för dumpade utlösare och LÅS TABELLER om --single-transaction
alternativet inte används.
GRANT SELECT, LOCK TABLES, SHOW VIEW ON *.* TO 'testuser'@'hostname' IDENTIFIED BY 'password';
Kör nu mysqldump för att skapa säkerhetskopian av testdb
databasen
mysqldump -u root -p testdb > testdb_backup.sql
Om du vill välja specifika tabeller i databasen som ska säkerhetskopieras listar du tabellnamnen avgränsade med blanksteg. Om du till exempel bara vill säkerhetskopiera tabellerna table1 och table2 från "testdb" följer du det här exemplet:
mysqldump -u root -p testdb table1 table2 > testdb_tables_backup.sql
Om du vill säkerhetskopiera fler än en databas samtidigt använder du växeln --database
och listar databasnamnen avgränsade med blanksteg.
mysqldump -u root -p --databases testdb1 testdb3 testdb5 > testdb135_backup.sql
Återställa MySQL-databasen med hjälp av kommandoraden
När du har skapat måldatabasen kan du använda kommandot mysql för att återställa data till den specifika nyligen skapade databasen från dumpfilen.
mysql -h [hostname] -u [uname] -p[pass] [db_to_restore] < [backupfile.sql]
I det här exemplet återställer du data till den nyligen skapade databasen på azure database for MySQL– flexibel serverinstans.
Här är ett exempel på hur du använder denna mysql för enskild server :
mysql -h mydemoserver.mysql.database.azure.com -u myadmin@mydemoserver -p testdb < testdb_backup.sql
Här är ett exempel på hur du använder denna mysql för flexibel server :
mysql -h mydemoserver.mysql.database.azure.com -u myadmin -p testdb < testdb_backup.sql
Kommentar
Du kan också använda MySQL Workbench-klientverktyget för att återställa MySQL-databasen.
Dumpa och återställa med PHPMyAdmin
Följ dessa steg för att dumpa och återställa en databas med PHPMyadmin.
Kommentar
För en enskild server måste användarnamnet vara i det här formatet , "username@servername", men för flexibel server kan du bara använda "användarnamn" Om du använder "username@servername" för flexibel server misslyckas anslutningen.
Exportera med PHPMyadmin
Om du vill exportera kan du använda det gemensamma verktyget phpMyAdmin, som du kanske redan har installerat lokalt i din miljö. Så här exporterar du MySQL-databasen med PHPMyAdmin:
- Öppna phpMyAdmin.
- Välj din databas. Välj databasnamnet i listan till vänster.
- Välj länken Exportera . En ny sida visas för att visa databasdumpningen.
- I området Exportera väljer du länken Välj alla för att välja tabellerna i databasen.
- I området SQL-alternativ väljer du lämpliga alternativ.
- Välj alternativet Spara som fil och motsvarande komprimeringsalternativ och välj sedan knappen Gå. En dialogruta bör visas där du uppmanas att spara filen lokalt.
Importera med PHPMyAdmin
Import av databasen liknar export. Gör följande åtgärder:
- Öppna phpMyAdmin.
- På installationssidan phpMyAdmin väljer du Lägg till för att lägga till din Azure Database for MySQL – flexibel serverinstans. Ange anslutningsinformation och logga in information.
- Skapa en databas med lämpligt namn och välj den till vänster på skärmen. Om du vill skriva om den befintliga databasen markerar du databasnamnet, markerar alla kryssrutor bredvid tabellnamnen och väljer Släpp för att ta bort de befintliga tabellerna.
- Välj SQL-länken för att visa sidan där du kan skriva in SQL-kommandon eller ladda upp SQL-filen.
- Använd bläddra-knappen för att hitta databasfilen.
- Välj knappen Gå för att exportera säkerhetskopian, köra SQL-kommandona och återskapa databasen.
Kända problem
För kända problem, tips och tricks rekommenderar vi att du tittar på vår techcommunity-blogg.