Migrera din MySQL-databas till Azure Database for MySQL – flexibel server med dump och återställning

GÄLLER FÖR: Azure Database for MySQL – Azure Database for MySQL – enskild server – flexibel server

Viktigt!

Azure Database for MySQL – enskild server är på väg att dras tillbaka. Vi rekommenderar starkt att du uppgraderar till en flexibel Azure Database for MySQL-server. Mer information om hur du migrerar till en flexibel Azure Database for MySQL-server finns i Vad händer med Azure Database for MySQL – enskild server?

I den här artikeln beskrivs 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 en flexibel Azure Database for MySQL-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:

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 en flexibel Azure Database for MySQL-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 flexibel Azure Database for MySQL-serverinstans som konfigurerats för att köra version 5.7. Kommandot mysql_upgrade fungerar inte i en flexibel Azure Database for MySQL-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 flexibel Azure Database for MySQL-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. Alternativet single-transaction och alternativet lock-tables är ömsesidigt uteslutande eftersom LOCK TABLES gör att väntande transaktioner checkas in implicit. Om du vill dumpa stora tabeller kombinerar du single-transaction alternativet med alternativet quick .
  • 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-portalen.
  • 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.

Om du vill ansluta letar du upp anslutningsinformationen i Översikt över din flexibla Azure Database for MySQL-serverinstans.

Find the connection information in the Azure portal

Lägg till anslutningsinformationen i MySQL Workbench.

MySQL Workbench Connection String

Förbereda målinstansen för Azure Database for MySQL – 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-portalen 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-portalen för att förbättra migreringens hastighet.
  • Skala upp lagringsnivå – IOPS för Azure Database for MySQL – flexibel server ökar progressivt 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å målinstansen för Azure Database for MySQL – flexibel server.

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

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:

  1. Öppna phpMyAdmin.
  2. Välj din databas. Välj databasnamnet i listan till vänster.
  3. Välj länken Exportera . En ny sida visas för att visa databasdumpningen.
  4. I området Exportera väljer du länken Välj alla för att välja tabellerna i databasen.
  5. I området SQL-alternativ väljer du lämpliga alternativ.
  6. 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:

  1. Öppna phpMyAdmin.
  2. På sidan phpMyAdmin-konfiguration väljer du Lägg till för att lägga till din flexibla Azure Database for MySQL-serverinstans. Ange anslutningsinformation och logga in information.
  3. 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.
  4. Välj SQL-länken för att visa sidan där du kan skriva in SQL-kommandon eller ladda upp SQL-filen.
  5. Använd bläddra-knappen för att hitta databasfilen.
  6. 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.

Nästa steg