Migrowanie bazy danych MySQL do usługi Azure Database for MySQL — serwer elastyczny przy użyciu zrzutu i przywracania
DOTYCZY: Azure Database for MySQL — pojedynczy serwer usługi Azure Database for MySQL — serwer elastyczny
Ważne
Pojedynczy serwer usługi Azure Database for MySQL znajduje się na ścieżce wycofania. Zdecydowanie zalecamy uaktualnienie do serwera elastycznego usługi Azure Database for MySQL. Aby uzyskać więcej informacji na temat migracji do serwera elastycznego usługi Azure Database for MySQL, zobacz Co się dzieje z usługą Azure Database for MySQL — pojedynczy serwer?
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:
- Wystąpienie serwera elastycznego usługi Azure Database for MySQL — Azure Portal
- narzędzie wiersza polecenia mysqldump zainstalowane na maszynie.
- MySQL Workbench lub inne narzędzie MySQL innej firmy do wykonywania zrzutu i przywracania poleceń.
Napiwek
Jeśli chcesz zmigrować duże bazy danych o rozmiarach więcej niż 1 baz 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 zarządzanego dostawcy usług — 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. Opcjasingle-transaction
ilock-tables
opcja są wzajemnie wykluczające się, ponieważ funkcja LOCK TABLES powoduje niejawne zatwierdzanie oczekujących transakcji. Aby zrzucić duże tabele, połączsingle-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.
Dodaj informacje o połączeniu do 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 przypadku szybszych obciążeń 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
Uwaga
Możesz również użyć narzędzia klienckiego MySQL Workbench do przywrócenia bazy danych MySQL.
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
Do wyeksportowania możesz użyć wspólnego narzędzia phpMyAdmin, które być może zostały już zainstalowane lokalnie w danym środowisku. Aby wyeksportować bazę danych MySQL przy użyciu języka PHPMyAdmin:
- Otwórz plik phpMyAdmin.
- Wybierz bazę danych. Wybierz nazwę bazy danych na liście po lewej stronie.
- Wybierz link Eksportuj. Zostanie wyświetlona nowa strona, aby wyświetlić zrzut bazy danych.
- W obszarze Eksportuj wybierz link Wybierz wszystko , aby wybrać tabele w bazie danych.
- W obszarze Opcje SQL wybierz odpowiednie opcje.
- 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:
- Otwórz plik phpMyAdmin.
- 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ę.
- 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.
- Wybierz link SQL, aby wyświetlić stronę, na której można wpisać polecenia SQL, lub przekazać plik SQL.
- Użyj przycisku przeglądania, aby znaleźć plik bazy danych.
- 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.
Następne kroki
- Łączenie aplikacji z usługą Azure Database for MySQL — serwer elastyczny.
- Aby uzyskać więcej informacji na temat migrowania baz danych do serwera elastycznego usługi Azure Database for MySQL, zobacz Przewodnik po migracji bazy danych.
- Jeśli chcesz przeprowadzić migrację dużych baz danych o rozmiarach przekraczających 1 TB, 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.