Udostępnij za pośrednictwem


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

W tym artykule opisano dwa typowe sposoby tworzenia kopii zapasowych baz danych i przywracania ich na serwerze elastycznym usługi Azure Database for MySQL.

  • Zrzut i przywracanie z wiersza polecenia (przy użyciu narzędzia mysqldump).
  • Zrzut i przywracanie przy użyciu języka PHPMyAdmin.

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

Zanim rozpoczniesz

Aby przejść przez ten przewodnik z instrukcjami, musisz mieć następujące elementy:

Napiwek

Jeśli chcesz przeprowadzić migrację dużych baz danych z rozmiarami baz danych większymi niż 1 bazami danych, warto rozważyć użycie narzędzi społeczności, takich jak mydumper/myloader , które obsługują eksportowanie równoległe i importowanie. Dowiedz się , jak migrować duże bazy danych MySQL.

Typowe przypadki użycia zrzutu i przywracania

Najczęstsze przypadki użycia to:

  • Przejście z innego dostawcy usług zarządzanych — większość zarządzanych dostawców usług może nie zapewnić dostępu do pliku magazynu fizycznego ze względów bezpieczeństwa, dlatego logiczna kopia zapasowa i przywracanie jest jedyną opcją migracji.

  • Migrowanie ze środowiska lokalnego lub maszyny wirtualnej — usługa Azure Database for MySQL — serwer elastyczny nie obsługuje przywracania fizycznych kopii zapasowych, co sprawia, że tworzenie kopii zapasowych logicznych i przywracanie ich jest jedynym podejściem.

  • Przenoszenie magazynu kopii zapasowych z lokalnie nadmiarowego do magazynu geograficznie nadmiarowego — usługa Azure Database for MySQL — serwer elastyczny umożliwia konfigurowanie magazynu lokalnie nadmiarowego lub geograficznie nadmiarowego na potrzeby kopii zapasowej jest dozwolone tylko podczas tworzenia serwera. Po aprowizowaniu serwera nie można zmienić opcji nadmiarowości magazynu kopii zapasowych. Aby przenieść magazyn kopii zapasowych z magazynu lokalnie nadmiarowego do magazynu geograficznie nadmiarowego, zrzut i przywracanie jest jedyną opcją.

  • Migrowanie z alternatywnych aparatów magazynu do bazy danych InnoDB — usługa Azure Database for MySQL — elastyczny serwer obsługuje tylko aparat magazynu InnoDB i dlatego nie obsługuje alternatywnych aparatów magazynu. Jeśli tabele są skonfigurowane z innymi aparatami magazynu, przekonwertuj je na format aparatu InnoDB przed migracją do serwera elastycznego usługi Azure Database for MySQL.

    Jeśli na przykład masz aplikację WordPress lub WebApp przy użyciu tabel MyISAM, najpierw przekonwertuj te tabele, migrując do formatu InnoDB przed przywróceniem do usługi Azure Database for MySQL — serwer elastyczny. Użyj klauzuli ENGINE=InnoDB , aby ustawić aparat używany podczas tworzenia nowej tabeli, a następnie przenieść dane do zgodnej tabeli 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 wystąpienia serwera elastycznego usługi Azure Database for MySQL skonfigurowanego do uruchamiania wersji 5.7. Polecenie mysql_upgrade nie działa w wystąpieniu serwera elastycznego usługi Azure Database for MySQL i nie jest obsługiwane.
  • Jeśli musisz przeprowadzić uaktualnienie w różnych wersjach programu MySQL, najpierw zrzuć lub wyeksportować bazę danych niższej wersji do nowszej wersji bazy danych MySQL we własnym środowisku. Następnie uruchom polecenie mysql_upgrade przed podjęciem próby migracji do wystąpienia serwera elastycznego usługi Azure Database for MySQL.

Zagadnienia dotyczące wydajności

Aby zoptymalizować wydajność, zwróć uwagę na te zagadnienia podczas dumpingu dużych baz danych:

  • exclude-triggers Użyj opcji w pliku mysqldump podczas dumpingu baz danych. Wyklucz wyzwalacze z plików zrzutu, aby uniknąć wyzwalania poleceń wyzwalacza podczas przywracania danych.
  • single-transaction Użyj opcji , aby ustawić tryb izolacji transakcji na powtarzalny odczyt i wysyła instrukcję START TRANSACTION SQL do serwera przed dumpingiem danych. Zrzucenie wielu tabel w ramach jednej transakcji powoduje, że podczas przywracania zużywany jest dodatkowy magazyn. Opcja single-transaction i lock-tables opcja są wzajemnie wykluczające się, ponieważ funkcja LOCK TABLES powoduje niejawne zatwierdzanie oczekujących transakcji. Aby zrzucić duże tabele, połącz single-transaction opcję z opcją quick .
  • extended-insert Użyj składni z wieloma wierszami, która zawiera kilka list VALUE. Spowoduje to zmniejszenie rozmiaru pliku zrzutu i przyspieszenie wstawiania podczas ponownego ładowania pliku.
  • order-by-primary Użyj opcji w pliku mysqldump podczas dumpingu baz danych, aby dane zostały skryptowe w kolejności klucza podstawowego.
  • disable-keys Użyj opcji w pliku mysqldump podczas dumpingu danych, aby wyłączyć ograniczenia klucza obcego przed załadowaniem. Wyłączenie kontroli kluczy obcych zapewnia wzrost wydajności. Włącz ograniczenia i zweryfikuj dane po załadowaniu, aby zapewnić integralność referencyjną.
  • W razie potrzeby używaj tabel partycjonowanych.
  • Ładowanie danych równolegle. Unikaj zbyt dużej równoległości, co spowodowałoby osiągnięcie limitu zasobów i monitorowanie zasobów przy użyciu metryk dostępnych w witrynie Azure Portal.
  • defer-table-indexes Użyj opcji w pliku mysqldump podczas dumpingu baz danych, aby tworzenie indeksu odbywało się po załadowaniu danych tabel.
  • Skopiuj pliki kopii zapasowej do obiektu blob/magazynu platformy Azure i wykonaj przywracanie z tego miejsca, co powinno być znacznie szybsze niż wykonywanie przywracania w Internecie.

Tworzenie bazy danych w docelowym wystąpieniu serwera elastycznego usługi Azure Database for MySQL

Utwórz pustą bazę danych w docelowym wystąpieniu serwera elastycznego usługi Azure Database for MySQL, w którym chcesz przeprowadzić migrację danych. 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 zawierająca dane po cenach dumpingowych lub utworzyć bazę danych o innej nazwie.

Aby nawiązać połączenie, znajdź informacje o połączeniu w temacie Omówienie wystąpienia serwera elastycznego usługi Azure Database for MySQL.

Zrzut ekranu przedstawiający pozycję Znajdź informacje o połączeniu w witrynie Azure Portal.

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

Zrzut ekranu przedstawiający parametry połączenia aplikacji MySQL Workbench.

Przygotowywanie docelowego wystąpienia serwera elastycznego usługi Azure Database for MySQL na potrzeby szybkiego ładowania danych

Aby przygotować docelowe wystąpienie serwera elastycznego usługi Azure Database for MySQL w celu szybszego ładowania danych, należy zmienić następujące parametry i konfigurację serwera.

  • max_allowed_packet — ustaw wartość 1073741824 (czyli 1 GB), aby zapobiec wszelkim problemom z przepełnieniem z powodu długich wierszy.
  • slow_query_log — ustaw wartość OFF, aby wyłączyć dziennik wolnych zapytań. Eliminuje to obciążenie spowodowane powolnym rejestrowaniem zapytań podczas ładowania danych.
  • query_store_capture_mode — ustaw wartość NONE, aby wyłączyć magazyn zapytań. Eliminuje to obciążenie spowodowane przez działania próbkowania przez magazyn zapytań.
  • innodb_buffer_pool_size — skalowanie serwera w górę do 32 jednostek SKU zoptymalizowanych 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 dla wystąpienia serwera elastycznego usługi Azure Database for MySQL.
  • innodb_io_capacity i innodb_io_capacity_max — zmień wartość na 9000 z parametrów serwera w witrynie Azure Portal, aby zwiększyć wykorzystanie operacji we/wy w celu zoptymalizowania pod kątem szybkości migracji.
  • innodb_write_io_threads i innodb_write_io_threads — zmień wartość na 4 z parametrów serwera w witrynie Azure Portal, aby zwiększyć szybkość migracji.
  • Skalowanie w górę warstwy magazynowania — liczba operacji we/wy na sekundę dla usługi Azure Database for MySQL — serwer elastyczny zwiększa się stopniowo wraz ze wzrostem warstwy magazynowania. W celu szybszego ładowania możesz zwiększyć warstwę magazynowania, aby zwiększyć aprowizację operacji we/wy na sekundę. Pamiętaj, że magazyn można skalować tylko w górę, a nie w dół.

Po zakończeniu migracji można przywrócić parametry serwera i konfigurację warstwy obliczeniowej do poprzednich wartości.

Zrzut i przywracanie przy użyciu narzędzia mysqldump

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

Aby utworzyć kopię zapasową istniejącej bazy danych MySQL na lokalnym serwerze lokalnym lub na maszynie wirtualnej, uruchom następujące polecenie:

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

Parametry, które należy podać, to:

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

Aby na przykład utworzyć kopię zapasową 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 testdb_backup.sql, który zawiera wszystkie instrukcje testdb SQL potrzebne do ponownego utworzenia bazy danych. Upewnij się, że nazwa użytkownika "testuser" ma co najmniej uprawnienie SELECT dla tabel po cenach dumpingowych, SHOW VIEW dla widoków dumpingowych, TRIGGER for dumpingowych wyzwalaczy i LOCK TABLES, jeśli --single-transaction opcja nie jest używana.

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

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

mysqldump -u root -p testdb > testdb_backup.sql

Aby wybrać określone tabele w bazie danych do utworzenia kopii zapasowej, wyświetl listę nazw tabel rozdzielonych spacjami. Aby na przykład utworzyć kopię zapasową tylko tabel table1 i table2 z bazy danych "testdb", wykonaj następujące czynności:

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

Aby utworzyć kopię zapasową więcej niż jednej bazy danych jednocześnie, użyj przełącznika --database i wyświetl listę 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

Po utworzeniu docelowej bazy danych możesz użyć polecenia mysql, 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 w docelowym wystąpieniu serwera elastycznego usługi Azure Database for MySQL.

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

Dump and restore using 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 mieć następujący format: "username@servername", ale w przypadku serwera elastycznego można po prostu użyć nazwy użytkownika, jeśli używasz opcji "username@servername" dla serwera elastycznego, połączenie zakończy się niepowodzeniem.

Eksportowanie przy użyciu języka PHPMyadmin

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

  1. Otwórz plik phpMyAdmin.
  2. Wybierz bazę danych. Wybierz nazwę bazy danych na liście po lewej stronie.
  3. Wybierz link Eksportuj. Zostanie wyświetlona nowa strona, aby wyświetlić zrzut bazy danych.
  4. W obszarze Eksportuj wybierz link Wybierz wszystko , aby wybrać tabele w bazie danych.
  5. W obszarze Opcje SQL wybierz odpowiednie opcje.
  6. Wybierz opcję Zapisz jako plik i odpowiednią opcję kompresji, a następnie wybierz przycisk Przejdź. Zostanie 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 akcje:

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

Znane problemy

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