Migrowanie bazy danych MySQL do usługi Azure Database for MySQL przy użyciu zrzutu i przywracania

DOTYCZY: Azure Database for MySQL — pojedynczy serwer Azure Database for MySQL — elastyczny serwer

W tym artykule wyjaśniono dwa typowe sposoby tworzenia kopii zapasowej i przywracania baz danych w bazie Azure Database for MySQL

  • Zrzucanie i przywracanie z wiersza polecenia (przy użyciu narzędzia mysqldump)
  • Zrzucanie i przywracanie przy użyciu narzędzia PHPMyAdmin

Szczegółowe informacje i przypadki użycia dotyczące migrowania baz danych do baz danych można również znaleźć w przewodniku po migracji bazy danych do Azure Database for MySQL. Ten przewodnik zawiera wskazówki, które prowadzą do pomyślnego planowania i wykonywania migracji programu MySQL na platformę Azure.

Zanim rozpoczniesz

Aby przejść przez ten przewodnik, musisz mieć:

Porada

Jeśli chcesz migrować duże bazy danych o rozmiarze bazy danych więcej niż 1 KB, rozważ użycie narzędzi społeczności, takich jak mydumper/myloader, które obsługują eksport równoległy i importowanie. Dowiedz się, jak migrować duże bazy danych MySQL.

Typowe przypadki użycia zrzutu i przywracania

Najczęstsze przypadki użycia to:

  • Przenoszenie od innego dostawcy usług zarządzanych — większość dostawców usług zarządzanych może nie zapewniać dostępu do pliku magazynu fizycznego ze względów bezpieczeństwa, dlatego logicznej kopii zapasowej i przywracania jest jedyną opcją do migracji.

  • Migracja ze środowiska lokalnego lub maszyny wirtualnej — program Azure Database for MySQL nie obsługuje przywracania fizycznych kopii zapasowych, co sprawia, że logiczne kopie zapasowe i przywracanie są jedynym podejściem.

  • Przenoszenie magazynu kopii zapasowej z magazynu lokalnie nadmiarowego do magazynu geograficznie nadmiarowego — Azure Database for MySQL umożliwia konfigurowanie magazynu lokalnie nadmiarowego lub geograficznie nadmiarowego do tworzenia kopii zapasowych jest dozwolone tylko podczas tworzenia serwera. Po aprowizacji serwera nie można zmienić opcji nadmiarowości magazynu kopii zapasowych. Aby przenieść magazyn kopii zapasowej z magazynu lokalnie nadmiarowego do magazynu geograficznie nadmiarowego, opcja ZRZUT I PRZYWRACANIE JEST OPCJĄ TYLKO.

  • Migrowanie z alternatywnych aparatów magazynu do innoDB — program Azure Database for MySQL obsługuje tylko aparat Storage InnoDB i dlatego nie obsługuje alternatywnych aparatów magazynu. Jeśli tabele są skonfigurowane przy użyciu innych aparatów magazynu, przekonwertuj je na format aparatu InnoDB przed migracją do Azure Database for MySQL.

    Jeśli na przykład masz tabelę WordPress lub WebApp korzystającą z tabel MyISAM, najpierw przekonwertuj te tabele, migrując je do formatu InnoDB przed przywróceniem do Azure Database for MySQL. Użyj klauzuli , aby ustawić aparat używany podczas tworzenia nowej tabeli, a następnie przenieś dane do zgodnej tabeli ENGINE=InnoDB przed przywróceniem.

    INSERT INTO innodb_table SELECT * FROM myisam_table ORDER BY primary_key_columns
    

Ważne

  • Aby uniknąć problemów ze zgodnością, upewnij się, że w przypadku zrzucania baz danych w systemach źródłowym i docelowym jest używana ta sama wersja programu MySQL. Jeśli na przykład istniejący serwer MySQL jest w wersji 5.7, należy przeprowadzić migrację do programu Azure Database for MySQL skonfigurowanego do uruchamiania wersji 5.7. Polecenie mysql_upgrade nie działa na serwerze Azure Database for MySQL i nie jest obsługiwane.
  • Jeśli musisz uaktualnić bazę danych MySQL w różnych wersjach, najpierw zrzuć lub wyeksportuj bazę danych w niższej wersji do wyższej wersji bazy danych MySQL we własnym środowisku. Następnie uruchom mysql_upgrade element przed podjęciem próby migracji do Azure Database for MySQL.

Zagadnienia dotyczące wydajności

Aby zoptymalizować wydajność, należy zwrócić uwagę na następujące kwestie podczas zrzucania dużych baz danych:

  • Użyj opcji exclude-triggers w programie mysqldump podczas zrzucania baz danych. Wyklucz wyzwalacze z plików zrzutu, aby uniknąć wyzwalania poleceń wyzwalacza podczas przywracania danych.
  • Użyj opcji , aby ustawić tryb izolacji transakcji powtarzalny odczyt i wysyła SQL START TRANSACTION do serwera single-transaction przed zrzucania danych. Zrzucanie wielu tabel w ramach jednej transakcji powoduje wykorzystanie dodatkowego magazynu podczas przywracania. Opcja single-transaction i opcja wzajemnie się wykluczają, ponieważ opcja LOCK TABLES powoduje niejawne zatwierdzenie lock-tables oczekujących transakcji. Aby zrzucić duże tabele, single-transaction połącz opcję z quick opcją .
  • Użyj składni extended-insert z wieloma wierszami, która zawiera kilka list VALUE. Powoduje to mniejszy plik zrzutu i przyspiesza wstawianie po ponownym załadowaniu pliku.
  • Użyj opcji order-by-primary w programie mysqldump podczas zrzucania baz danych, aby dane są skryptowane w kolejności kluczy podstawowych.
  • Użyj opcji disable-keys w programie mysqldump podczas zrzucania danych, aby wyłączyć ograniczenia klucza obcego przed załadowaniem. Wyłączenie kontroli klucza obcego zapewnia wzrost wydajności. Włącz ograniczenia i sprawdź dane po załadowaniu w celu zapewnienia więzów integralności.
  • W razie potrzeby użyj tabel partycjonowanych.
  • Równoległe ładowanie danych. Unikaj zbyt dużej równoległości, która spowoduje przekroenie limitu zasobów, i monitoruj zasoby przy użyciu metryk dostępnych w Azure Portal.
  • Użyj opcji defer-table-indexes w programie mysqlpump podczas zrzucania baz danych, aby tworzenie indeksu odbywało się po załadowaniu danych tabel.
  • Użyj opcji skip-definer w programie mysqlpump, aby pominąć definicję i SQL SECURITY z instrukcji create dla widoków i procedur składowanych. Ponowne załadowanie pliku zrzutu powoduje utworzenie obiektów, które używają domyślnych wartości DEFINER i SQL SECURITY.
  • Skopiuj pliki kopii zapasowej do magazynu/obiektu blob platformy Azure i wykonaj przywracanie z tego magazynu, co powinno być znacznie szybsze niż przywracanie przez Internet.

Tworzenie bazy danych na docelowym Azure Database for MySQL docelowym

Utwórz pustą bazę danych na serwerze Azure Database for MySQL, na którym chcesz migrować dane. Użyj narzędzia, takiego jak MySQL Workbench lub mysql.exe, aby utworzyć bazę danych. Baza danych może mieć taką samą nazwę jak baza danych, która zawiera zrzucane dane, lub można utworzyć bazę danych o innej nazwie.

Aby nałączyć połączenie, znajdź informacje o połączeniu w przeglądzie Azure Database for MySQL.

Znajdź informacje o połączeniu w Azure Portal

Dodaj informacje o połączeniu do aplikacji MySQL Workbench.

MySQL Workbench Connection String

Przygotowywanie serwera docelowego Azure Database for MySQL do szybkiego ładowania danych

Aby przygotować serwer docelowy Azure Database for MySQL do szybszego ładowania danych, należy zmienić następujące parametry serwera i konfigurację.

  • max_allowed_packet — ustaw wartość 1073741824 (tj. 1 GB), aby zapobiec problemowi z przepełnieniem spowodowanym długimi wierszami.
  • slow_query_log — ustaw wartość WYŁ., aby wyłączyć dziennik wolnych zapytań. Pozwoli to wyeliminować obciążenie spowodowane wolnym rejestrowaniem zapytań podczas ładowania danych.
  • query_store_capture_mode — ustaw wartość BRAK, aby wyłączyć magazyn zapytań. Pozwoli to wyeliminować obciążenie spowodowane działaniami próbkowania przez magazyn zapytań.
  • innodb_buffer_pool_size — skalowanie serwera w górę do 32 rdzeni wirtualnych zoptymalizowanej pod kątem pamięci z warstwy cenowej portalu podczas migracji w celu zwiększenia innodb_buffer_pool_size. Innodb_buffer_pool_size można zwiększyć tylko przez skalowanie w górę zasobów obliczeniowych Azure Database for MySQL serwera.
  • innodb_io_capacity & innodb_io_capacity_max — zmień parametr na 9000 z parametrów serwera w programie Azure Portal, aby poprawić wykorzystanie we/wy w celu zoptymalizowania pod kątem szybkości migracji.
  • innodb_write_io_threads & innodb_write_io_threads — zmień parametr na 4 z parametrów serwera w Azure Portal, aby zwiększyć szybkość migracji.
  • Skalowanie w Storage warstwy — liczby we/wy na Azure Database for MySQL zwiększa się stopniowo wraz ze wzrostem warstwy magazynowania. W przypadku szybszych obciążeń można zwiększyć warstwę magazynowania, aby zwiększyć liczbę aprowowanych we/wy na poziomie sieci. Pamiętaj, że magazyn można skalować tylko w górę, a nie w dół.

Po zakończeniu migracji możesz przywrócić poprzednie wartości parametrów serwera i konfiguracji warstwy obliczeniowej.

Zrzucanie i przywracanie przy użyciu narzędzia mysqldump

Tworzenie pliku kopii zapasowej z wiersza polecenia przy użyciu narzędzia mysqldump

Aby wrócić do kopii zapasowej istniejącej bazy danych MySQL na lokalnym serwerze lub maszynie wirtualnej, uruchom następujące polecenie:

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

Dostępne parametry to:

  • [uname] Nazwa użytkownika bazy danych
  • [pass] Hasło bazy danych (zwróć uwagę, że nie ma spacji między -p a hasłem)
  • [nazwa_bazy_danych] Nazwa bazy danych
  • [backupfile.sql] Nazwa pliku kopii zapasowej bazy danych
  • [--opt] Opcja mysqldump

Aby na przykład wrócić do kopii zapasowej bazy danych o nazwie "testdb" na serwerze MySQL z nazwą użytkownika "testuser" i bez hasła do pliku testdb_backup.sql, użyj następującego polecenia. Polecenie tworzy kopię zapasową bazy danych w pliku o nazwie , który zawiera wszystkie SQL wymagane do testdb testdb_backup.sql ponownego utworzenia bazy danych. Upewnij się, że nazwa użytkownika "testuser" ma co najmniej uprawnienie SELECT dla zrzucanych tabel, show view dla widoków zrzutu, wyzwalacz dla wyzwalaczy zrzutów i tabele blokady, jeśli opcja --single-transaction nie jest używana.

GRANT SELECT, LOCK TABLES, SHOW VIEW ON *.* TO 'testuser'@'hostname' IDENTIFIED BY 'password';

Teraz uruchom program mysqldump, aby utworzyć kopię zapasową bazy testdb danych

$ mysqldump -u root -p testdb > testdb_backup.sql

Aby wybrać określone tabele w bazie danych do kopii zapasowej, należy wyświetlić listę nazw tabel rozdzielonych spacjami. Aby na przykład wykonać kopię zapasową tylko tabel table1 i table2 z bazy danych "testdb", postępuj zgodnie z poniższym przykładem:

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

Aby wrócić do kopii zapasowej więcej niż jednej bazy danych jednocześnie, użyj przełącznika --database i użyj listy nazw baz danych rozdzielonych spacjami.

$ mysqldump -u root -p --databases testdb1 testdb3 testdb5 > testdb135_backup.sql

Przywracanie bazy danych MySQL przy użyciu wiersza polecenia lub aplikacji MySQL Workbench

Po utworzeniu docelowej bazy danych możesz użyć polecenia mysql lub aplikacji MySQL Workbench, aby przywrócić dane do określonej nowo utworzonej bazy danych z pliku zrzutu.

mysql -h [hostname] -u [uname] -p[pass] [db_to_restore] < [backupfile.sql]

W tym przykładzie przywróć dane do nowo utworzonej bazy danych na docelowym Azure Database for MySQL danych.

Oto przykład użycia tego programu mysql dla pojedynczego serwera:

$ mysql -h mydemoserver.mysql.database.azure.com -u myadmin@mydemoserver -p testdb < testdb_backup.sql

Oto przykład użycia tego programu mysql dla serwera elastycznego:

$ mysql -h mydemoserver.mysql.database.azure.com -u myadmin -p testdb < testdb_backup.sql

Zrzucanie i przywracanie przy użyciu narzędzia PHPMyAdmin

Wykonaj następujące kroki, aby zrzucić i przywrócić bazę danych przy użyciu języka PHPMyadmin.

Uwaga

W przypadku pojedynczego serwera nazwa użytkownika musi być w tym formacie " "", ale w przypadku serwera elastycznego możesz po prostu użyć nazwy "username". Jeśli używasz "" dla serwera elastycznego, połączenie nie powiedzie username@servername username@servername się.

Eksportowanie za pomocą języka PHPMyadmin

Aby wyeksportować plik, możesz użyć wspólnego narzędzia phpMyAdmin, które być może zostało już zainstalowane lokalnie w środowisku. Aby wyeksportować bazę danych MySQL przy użyciu języka PHPMyAdmin:

  1. Otwórz plik phpMyAdmin.
  2. Wybierz bazę danych. Kliknij nazwę bazy danych na liście po lewej stronie.
  3. Kliknij link Eksportuj. Zostanie wyświetlona nowa strona z zrzutem bazy danych.
  4. W obszarze Eksport kliknij link Zaznacz wszystko, aby wybrać tabele w bazie danych.
  5. W obszarze SQL kliknij odpowiednie opcje.
  6. Kliknij opcję Zapisz jako plik i odpowiednią opcję kompresji, a następnie kliknij przycisk Przejdź. Powinno zostać wyświetlone okno dialogowe z monitem o zapisanie pliku lokalnie.

Importowanie przy użyciu języka PHPMyAdmin

Importowanie bazy danych jest podobne do eksportowania. Wykonaj następujące czynności:

  1. Otwórz plik phpMyAdmin.
  2. Na stronie konfiguracji phpMyAdmin kliknij przycisk Dodaj, aby dodać Azure Database for MySQL serwera. Podaj szczegóły połączenia i informacje logowania.
  3. Utwórz odpowiednio nazwaną bazę danych i wybierz ją po lewej stronie ekranu. Aby ponownie napisać istniejącą bazę danych, kliknij nazwę bazy danych, zaznacz wszystkie pola wyboru obok nazw tabel i wybierz pozycję Upuść, aby usunąć istniejące tabele.
  4. Kliknij link SQL, aby wyświetlić stronę, na której można wpisać SQL polecenia lub przekazać SQL plik.
  5. Użyj przycisku przeglądania, aby znaleźć plik bazy danych.
  6. Kliknij przycisk Przejdź, aby wyeksportować kopię zapasową, SQL polecenia i ponownie utwórz bazę danych.

Znane problemy

W przypadku znanych problemów, porad i wskazówek zalecamy zapoznanie się z naszym blogiem techco w witrynie.

Następne kroki