Migrera MySQL-databasen till Azure Database för MySQL med säkerhetskopiering och återställning

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

Den här artikeln beskriver två vanliga sätt att backa upp och återställa databaser i Azure Database for MySQL

  • Dumpa och återställa från kommandoraden (med mysqldump)
  • Dumpa och återställa med PHPMyAdmin

Du kan också läsa databasmigreringsguiden för detaljerad information och användningsfall om att migrera databaser till Azure Database for MySQL. Den här guiden innehåller vägledning som leder en lyckad planering och körning av en MySQL-migrering till Azure.

Innan du börjar

Om du vill gå igenom den här i guiden måste du ha:

Tips

Om du vill migrera stora databaser med större databasstorlekar än 1 MB kan du överväga att använda community-verktyg 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 en annan leverantör av hanterade tjänster – De flesta leverantörer av hanterade tjänster kanske inte ger åtkomst till den fysiska lagringsfilen av säkerhetsskäl. Därför är logisk säkerhetskopiering och återställning det enda alternativet att migrera.

  • Migrera från en lokal miljö eller virtuell dator – Azure Database for MySQL stöder inte återställning av fysiska säkerhetskopior som gör logisk säkerhetskopiering och återställning som DEN ENDA metoden.

  • Om du flyttar din lagring av säkerhetskopior från lokalt redundant till geo-redundant lagring Azure Database for MySQL kan du bara konfigurera lokalt redundant eller geo-redundant lagring för säkerhetskopiering när servern skapas. När servern har etablerats kan du inte ändra alternativet för redundant lagring för säkerhetskopior. Om du vill flytta säkerhetskopieringslagringen från lokalt redundant lagring till geo-redundant lagring är dump och återställning det ENDA alternativet.

  • Migrering från alternativa lagringsmotorer till InnoDB – Azure Database for MySQL stöder endast InnoDB Storage motor och stöder därför inte alternativa lagringsmotorer. Om dina tabeller är konfigurerade med andra lagringsmotorer konverterar du dem till InnoDB-motorformatet innan du migrerar till Azure Database for MySQL.

    Om du till exempel har en WordPress- eller WebApp som använder MyISAM-tabellerna konverterar du först dessa tabeller genom att migrera till InnoDB-format innan du återställer till Azure Database for MySQL. Använd -satsen för att ange den motor som används när du skapar en ny tabell och sedan ENGINE=InnoDB överföra 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 Azure Database for MySQL konfigurerad för att köra version 5.7. Kommandot mysql_upgrade fungerar inte i en Azure Database for MySQL server och stöds inte.
  • Om du behöver uppgradera mellan MySQL-versioner dumpar eller exporterar du databasen med lägre version till en högre version av MySQL i din egen miljö. Kör sedan mysql_upgrade innan du försöker migrera till en Azure Database for MySQL.

Saker att tänka på gällande prestanda

För att optimera prestanda bör du tänka på följande när du dumpar stora databaser:

  • Använd alternativet exclude-triggers i mysqldump när databaser dumpas. Undanta utlösare från dumpfiler för att undvika utlösarkommandon som utlöses under dataåterställningen.
  • Använd alternativet för att ställa in läget för transaktionsisolering på REPEATABLE READ och skickar en SQL-instruktion till servern single-transaction innan data dumpas. Om många tabeller dumpas inom en enda transaktion förbrukas viss extra lagring under återställningen. Alternativet single-transaction och alternativet lock-tables utesluter varandra eftersom LOCK TABLES gör att väntande transaktioner genomförs implicit. Om du vill dumpa stora tabeller kombinerar single-transaction du alternativet med alternativet quick .
  • Använd extended-insert syntaxen för flera rader som innehåller flera VALUE-listor. Detta resulterar i en mindre dumpfil och påskyndar infogningar när filen läss in på nytt.
  • Använd alternativet order-by-primary i mysqldump när databaser dumpas, så att data skriptas i primärnyckelordning.
  • Använd alternativet disable-keys i mysqldump när data dumpas för att inaktivera begränsningar för främmande nycklar före inläsningen. Om du inaktiverar externa nyckelkontroller får du bättre prestanda. Aktivera begränsningarna och verifiera data efter inläsningen för att säkerställa referensintegriteten.
  • Använd partitionerade tabeller när det är lämpligt.
  • Läs in data parallellt. Undvik för mycket parallellitet som skulle leda till att du kommer till en resursgräns och övervaka resurser med hjälp av de mått som är tillgängliga i Azure Portal.
  • Använd alternativet defer-table-indexes i mysqlpump när databaser dumpas, så att indexskapande sker när tabelldata har lästs in.
  • Använd alternativet i mysqlpump för att utelämna definer och SQL SECURITY-satser från create-instruktionerna skip-definer för vyer och lagrade procedurer. När du läser in dumpfilen på nytt skapas objekt som använder standardvärdena DEFINER SQL SECURITY.
  • 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 via Internet.

Skapa en databas på Azure Database for MySQL servern

Skapa en tom databas på Azure Database for MySQL 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 överta data eller så kan du skapa en databas med ett annat namn.

För att ansluta letar du reda på anslutningsinformationen i Översikt över Azure Database for MySQL.

Hitta anslutningsinformationen i Azure Portal

Lägg till anslutningsinformationen i MySQL Workbench.

Anslutningssträng för MySQL Workbench

Förbereda målservern Azure Database for MySQL för snabb databelastning

För att förbereda Azure Database for MySQL-servern för snabbare databelastningar måste följande serverparametrar och konfiguration ändras.

  • max_allowed_packet – ställ in på 1073741824 (d.v.s. 1 GB) för att förhindra spillproblem på grund av långa rader.
  • slow_query_log – ställ in på AV för att stänga av den långsamma frågeloggen. Detta eliminerar omkostnaderna som orsakas av långsam frågeloggning under databelastningar.
  • query_store_capture_mode – ställ in på INGEN för att stänga av Query Store. Detta eliminerar omkostnaderna som orsakas av samplingsaktiviteter av Query Store.
  • innodb_buffer_pool_size – Skala upp servern till minnesoptimerad SKU med 32 virtuella kärnor från portalens prisnivå 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 server.
  • innodb_io_capacity & innodb_io_capacity_max – Ändra till 9 000 från serverparametrarna i Azure Portal för att förbättra I/O-användningen för att optimera migreringshastigheten.
  • innodb_write_io_threads & innodb_write_io_threads – Ändra till 4 från serverparametrarna i Azure Portal för att förbättra migreringshastigheten.
  • Skala upp Storage nivå – IOP:erna för Azure Database for MySQL-servern ökar progressivt med ökningen av lagringsnivån. För snabbare belastningar kanske du vill öka lagringsnivån för att öka antalet etablerade IOP:er. 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ån till dess tidigare värden.

Dumpa och återställa med mysqldump-verktyget

Skapa en säkerhetskopia från kommandoraden med mysqldump

Kör följande kommando för att servera en befintlig MySQL-databas på den lokala servern eller på en virtuell dator:

$ mysqldump --opt -u [uname] -p[pass] [dbname] > [backupfile.sql]

Parametrarna som ska anges är:

  • [uname] Ditt databasnamn
  • [pass] Lösenordet för databasen (observera att det inte finns något blanksteg mellan -p och lösenordet)
  • [dbname] Namnet på din databas
  • [backupfile.sql] Filnamnet för din databassäkerhetskopia
  • [--opt] Alternativet mysqldump

Om du till exempel vill kommendrera en databas med namnet "testdb" på MySQL-servern med användarnamnet "testuser" och utan lösenord till filen testdb_backup.sql använder du följande kommando. Kommandot backar upp databasen till en fil med namnet , som innehåller alla SQL instruktioner som behövs testdb för att skapa databasen testdb_backup.sql igen. Kontrollera att användarnamnet "testuser" har minst SELECT-behörigheten för tabellerna SELECT, SHOW VIEW for dump views(VISA VY för dumparvyer, TRIGGER for uppskad utlösare) och LOCK TABLES (LÅS TABELLER) om alternativet --single-transaction 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 backas upp listar du tabellnamnen avgränsade med blanksteg. Om du till exempel bara vill backa upp table1- och table2-tabeller från "testdb" följer du det här exemplet:

$ mysqldump -u root -p testdb table1 table2 > testdb_tables_backup.sql

Om du vill backa upp mer ä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 kommandoraden eller MySQL Workbench

När du har skapat måldatabasen kan du använda mysql-kommandot eller MySQL Workbench 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 målservern.

Här är ett exempel på hur du använder 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 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 de här stegen för att dumpa och återställa en databas med hjälp av PHPMyadmin.

Anteckning

För en enskild server måste användarnamnet ha det här formatet , ' ' men för en flexibel server kan du bara använda "användarnamn" Om du använder " " för flexibel username@servername server kommer anslutningen att username@servername misslyckas.

Exportera med PHPMyadmin

Om du vill exportera kan du använda det vanliga verktyget phpMyAdmin, som du kanske redan har installerat lokalt i din miljö. Så här exporterar du MySQL-databasen med HJÄLP av PHPMyAdmin:

  1. Öppna phpMyAdmin.
  2. Välj din databas. Klicka på databasnamnet i listan till vänster.
  3. Klicka på länken Exportera. En ny sida visas för att visa dumpen av databasen.
  4. I området Exportera klickar du på länken Välj alla för att välja tabellerna i databasen.
  5. I området SQL alternativ klickar du på lämpliga alternativ.
  6. Klicka på alternativet Spara som fil och motsvarande komprimeringsalternativ och klicka sedan på knappen Kör. En dialogruta bör visas där du uppmanas att spara filen lokalt.

Importera med PHPMyAdmin

Att importera databasen liknar export. Gör följande:

  1. Öppna phpMyAdmin.
  2. På konfigurationssidan phpMyAdmin klickar du på Lägg till för att lägga till Azure Database for MySQL server. Ange anslutningsinformation och inloggningsinformation.
  3. Skapa en databas med rätt namn och välj den till vänster på skärmen. Om du vill skriva om den befintliga databasen klickar du på databasnamnet, markerar alla kryssrutor bredvid tabellnamnen och väljer Släpp för att ta bort de befintliga tabellerna.
  4. Klicka på SQL för att visa sidan där du kan skriva in SQL kommandon eller ladda upp SQL fil.
  5. Använd bläddringsknappen för att hitta databasfilen.
  6. Klicka på knappen Gå för att exportera säkerhetskopian, kör SQL kommandona och skapa databasen igen.

Kända problem

För kända problem, tips och trick rekommenderar vi att du tittar på vår techcommunity-blogg.

Nästa steg