Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Uwaga
Ten artykuł zawiera odwołania do terminu slave (element podrzędny), który nie jest już używany przez firmę Microsoft. Po usunięciu terminu z oprogramowania usuniemy go z tego artykułu.
Możesz użyć metod, takich jak zrzut i przywracanie bazy danych MySQL, eksportowanie i importowanie aplikacji MySQL Workbench lub usługa Azure Database Migration Service, aby przeprowadzić migrację baz danych MySQL do usługi Azure Database for MySQL — serwer elastyczny. Możesz migrować swoje obciążenia robocze przy minimalnym przestoju, korzystając z połączenia narzędzi open source, takich jak mysqldump lub mydumper i myloader, wraz z Data-in Replication.
Replikacja typu data-in to technika, która replikuje zmiany danych z serwera źródłowego na serwer docelowy na podstawie metody pozycjonowania pliku dziennika binarnego. W tym scenariuszu instancja MySQL działająca jako źródło (z której pochodzą zmiany w bazie danych) zapisuje aktualizacje i zmiany jako zdarzenia do dziennika binarnego. Informacje w dzienniku binarnym są przechowywane w różnych formatach rejestrowania zgodnie ze zmianami w bazie danych rejestrowanymi. Repliki są skonfigurowane do odczytywania dziennika binarnego z serwera źródłowego i wykonywania zdarzeń zapisanych w tym dzienniku binarnym w lokalnej bazie danych repliki.
Skonfiguruj replikację danych do usługi Azure Database for MySQL — Serwer elastyczny, aby zsynchronizować dane ze źródłowego serwera MySQL z docelowym serwerem MySQL. Możesz przeprowadzić selektywne wycinanie aplikacji z podstawowej (lub źródłowej bazy danych) do repliki (lub docelowej bazy danych).
Zobacz Migrowanie baz danych z usług Amazon Web Services do platformy Azure, który zawiera przykładowe scenariusze migracji, mogące odpowiadać Twojemu przypadkowi użycia.
W tym samouczku dowiesz się, jak skonfigurować replikację przychodzących danych między serwerem źródłowym, na którym działa usługa Amazon Relational Database Service (RDS) for MySQL, a serwerem docelowym, na którym działa usługa Azure Database for MySQL Flexible Server.
Zagadnienia dotyczące wydajności
Przed rozpoczęciem tego samouczka należy wziąć pod uwagę wpływ na wydajność lokalizacji i pojemność komputera klienckiego, którego użyjesz do wykonania operacji.
Lokalizacja klienta
Wykonaj operacje zrzutu lub przywracania z komputera klienckiego uruchomionego w tej samej lokalizacji co serwer bazy danych:
- W przypadku wystąpień serwera elastycznego usługi Azure Database for MySQL maszyna kliencka powinna znajdować się w tej samej sieci wirtualnej i strefie dostępności co docelowy serwer bazy danych.
- W przypadku źródłowych wystąpień bazy danych usługi Amazon RDS wystąpienie klienta powinno istnieć w tej samej prywatnej chmurze Amazon Virtual Private Cloud i strefie dostępności co źródłowy serwer bazy danych. W poprzednim przypadku można przenosić pliki zrzutu między maszynami klienckimi przy użyciu protokołów transferu plików, takich jak FTP lub SFTP, lub przekazać je do usługi Azure Blob Storage. Aby skrócić całkowity czas migracji, kompresuj pliki przed ich przeniesieniem.
Pojemność klienta
Niezależnie od tego, gdzie znajduje się komputer kliencki, wymagane jest odpowiednie przetwarzanie, operacje we/wy i pojemność sieci do wykonywania żądanych operacji. Ogólne zalecenia są następujące:
- Jeśli zrzut lub przywracanie obejmuje przetwarzanie danych w czasie rzeczywistym, na przykład kompresję lub dekompresję, wybierz klasę wystąpienia z co najmniej jednym rdzeniem procesora CPU na wątek zrzutu lub przywracania.
- Upewnij się, że dla instancji klienta jest dostępna wystarczająca przepustowość sieci. Użyj typów wystąpień, które obsługują przyspieszoną funkcję sieci. Aby uzyskać więcej informacji, zobacz sekcję "Przyspieszona sieć" w przewodniku dotyczącym sieci maszyn wirtualnych platformy Azure.
- Upewnij się, że warstwa magazynu maszyny klienckiej zapewnia oczekiwaną pojemność odczytu/zapisu. Zalecamy, aby używać maszyny wirtualnej platformy Azure z dyskami SSD klasy Premium.
Wymagania wstępne
Do ukończenia tego samouczka niezbędne są następujące elementy:
Zainstaluj program mysqlclient na komputerze klienckim, aby utworzyć zrzut i wykonać operację przywracania na docelowym wystąpieniu serwera elastycznego usługi Azure Database for MySQL.
W przypadku większych baz danych zainstaluj moduł mydumper i myloader na potrzeby równoległego dumpingu i przywracania baz danych.
Uwaga
Mydumper może działać tylko w dystrybucjach systemu Linux. Aby uzyskać więcej informacji, zobacz How to install mydumper (Jak zainstalować aplikację mydumper).
Utwórz instancję usługi Azure Database for MySQL Flexible Server działającą w wersji MySQL 5.7 lub 8.0.
Ważne
Jeśli elementem docelowym jest usługa Azure Database for MySQL – Flexible Server ze strefowo nadmiarową wysoką dostępnością (HA), pamiętaj, że funkcja Data-in Replication nie jest obsługiwana w tej konfiguracji. Aby obejść ten problem, podczas tworzenia serwera skonfiguruj wysoką dostępność nadmiarową między strefami:
- Utwórz serwer z włączoną wysoką dostępnością nadmiarową między strefami.
- Wyłącz HA.
- Postępuj zgodnie z artykułem, aby skonfigurować replikację typu data-in.
- Po przełączeniu usuń konfigurację replikacji danych przychodzących.
- Włącz HA.
Upewnij się, że kilka parametrów i funkcji zostało prawidłowo skonfigurowanych i ustawionych zgodnie z opisem:
- Ze względów zgodności mają źródłowe i docelowe serwery baz danych w tej samej wersji programu MySQL.
- Każda tabela powinna mieć klucz podstawowy. Brak kluczy podstawowych w tabelach może spowolnić proces replikacji.
- Upewnij się, że zestaw znaków źródłowej i docelowej bazy danych są takie same.
-
wait_timeoutUstaw parametr na rozsądny czas. Czas zależy od ilości danych lub obciążenia, które chcesz zaimportować lub zmigrować. - Sprawdź, czy wszystkie tabele używają bazy danych InnoDB. Azure Database for MySQL — Flexible Server obsługuje tylko silnik magazynowania InnoDB.
- W przypadku tabel zawierających wiele indeksów wtórnych lub dużych tabel spadek wydajności jest zauważalny podczas przywracania. Zmodyfikuj pliki zrzutu tak, aby instrukcje
CREATE TABLEnie zawierały definicji kluczy pomocniczych. Po zaimportowaniu danych ponownie utwórz indeksy pomocnicze, aby uniknąć kary za wydajność podczas procesu przywracania.
Na koniec, aby przygotować się do replikacji danych przychodzących:
- Sprawdź, czy docelowa instancja Azure Database for MySQL Flexible Server może nawiązać połączenie ze źródłowym serwerem Amazon RDS for MySQL przez port 3306.
- Upewnij się, że źródłowy serwer Amazon RDS for MySQL zezwala zarówno na ruch przychodzący, jak i wychodzący na porcie 3306.
- Upewnij się, że zapewniasz łączność typu lokacja-lokacja z serwerem źródłowym przy użyciu usługi Azure ExpressRoute lub usługi Azure VPN Gateway. Aby uzyskać więcej informacji na temat tworzenia sieci wirtualnej, zobacz dokumentację usługi Azure Virtual Network. Zapoznaj się również z artykułami szybki start zawierającymi szczegółowe informacje krok po kroku.
- Skonfiguruj sieciowe grupy zabezpieczeń serwera źródłowego, aby zezwolić na docelowy adres IP serwera elastycznego usługi Azure Database for MySQL.
Ważne
Jeśli źródłowa instancja Amazon RDS for MySQL ma parametr GTID_mode ustawiony na ON, docelowa instancja usługi Azure Database for MySQL Flexible Server również musi mieć parametr GTID_mode ustawiony na ON.
Skonfiguruj docelowe wystąpienie usługi Azure Database for MySQL
Aby skonfigurować docelowe wystąpienie usługi Azure Database for MySQL — serwer elastyczny, który jest obiektem docelowym replikacji typu data-in:
Ustaw wartość parametru
max_allowed_packetna maksymalną wartość 1073741824, czyli 1 GB. Ta wartość uniemożliwia wszelkie problemy z przepełnieniem związane z długimi wierszami.slow_query_logUstaw parametry , ,general_logaudit_log_enablediquery_store_capture_modena wartość OFF podczas migracji, aby wyeliminować wszelkie obciążenia związane z rejestrowaniem zapytań.Zwiększ rozmiar zasobów obliczeniowych docelowego wystąpienia usługi Azure Database for MySQL Flexible Server do maksymalnie 64 rdzeni wirtualnych. Ten rozmiar zapewnia więcej zasobów obliczeniowych podczas przywracania zrzutu bazy danych serwera źródłowego.
Zawsze można skalować z powrotem zasoby obliczeniowe, aby spełnić wymagania aplikacji po zakończeniu migracji.
Zwiększ rozmiar pamięci masowej, aby uzyskać większą liczbę operacji we/wy na sekundę podczas migracji, lub zwiększ maksymalną liczbę operacji we/wy na sekundę na potrzeby migracji.
Uwaga
Dostępna maksymalna liczba operacji we/wy na sekundę (IOPS) zależy od rozmiaru zasobu obliczeniowego. Aby uzyskać więcej informacji, zobacz sekcję IOPS w artykule Opcje obliczeń i magazynu w Azure Database for MySQL — Flexible Server.
Konfigurowanie źródłowego serwera Amazon RDS for MySQL
Aby przygotować i skonfigurować serwer MySQL hostowany w usłudze Amazon RDS, który jest źródłem replikacji typu data-in:
Upewnij się, że rejestrowanie binarne jest włączone na źródłowym serwerze Amazon RDS for MySQL. Sprawdź, czy automatyczne kopie zapasowe są włączone lub upewnij się, że istnieje replika do odczytu dla źródłowego serwera Amazon RDS for MySQL.
Upewnij się, że pliki dziennika binarnego na serwerze źródłowym były przechowywane do czasu zastosowania zmian w docelowym wystąpieniu usługi Azure Database for MySQL Flexible Server.
W przypadku funkcji „Data-in Replication” usługa Azure Database for MySQL — Serwer elastyczny nie zarządza procesem replikacji.
Aby sprawdzić przechowywanie dziennika binarnego na źródłowym serwerze usługi Amazon RDS w celu określenia liczby godzin przechowywania dzienników binarnych, wywołaj procedurę
mysql.rds_show_configurationskładowaną:call mysql.rds_show_configuration; +------------------------+-------+-----------------------------------------------------------------------------------------------------------+ | name | value | description | | +------------------------+-------+-----------------------------------------------------------------------------------------------------------+ | | binlog retention hours | 24 | binlog retention hours specifies the duration in hours before binary logs are automatically deleted. | | source delay | 0 | source delay specifies replication delay in seconds between current instance and its master. | | target delay | 0 | target delay specifies replication delay in seconds between current instance and its future read-replica. | | +------------------------+------- +-----------------------------------------------------------------------------------------------------------+ | | 3 rows in set (0.00 sec) |Aby skonfigurować okres przechowywania dziennika binarnego, uruchom procedurę
rds_set_configurationskładowaną, aby upewnić się, że dzienniki binarne są przechowywane na serwerze źródłowym przez żądany czas. Na przykład:Call mysql.rds_set_configuration('binlog retention hours', 96);Jeśli tworzysz zrzut i go przywracasz, poprzednie polecenie pomaga szybko uwzględnić zmiany przyrostowe.
Uwaga
Upewnij się, że na serwerze źródłowym jest wystarczająco dużo miejsca na dysku do przechowywania dzienników binarnych w oparciu o określony okres przechowywania.
Istnieją dwa sposoby przechwytywania zrzutu danych ze źródłowego serwera Amazon RDS for MySQL. Jedno podejście polega na przechwyceniu zrzutu danych bezpośrednio z serwera źródłowego. Inne podejście polega na przechwyceniu zrzutu z repliki do odczytu usługi Amazon RDS for MySQL.
Aby przechwycić zrzut danych bezpośrednio z serwera źródłowego:
Upewnij się, że zapisy z aplikacji są zatrzymywane przez kilka minut, aby uzyskać transakcyjnie spójny zrzut danych.
Można również tymczasowo ustawić parametr
read_onlyna wartość 1, aby zapisy nie były przetwarzane podczas tworzenia zrzutu danych.Po zatrzymaniu zapisów na serwerze źródłowym zanotuj nazwę pliku dziennika binarnego i pozycję, używając polecenia
Mysql> Show master status;.Zapisz te wartości, aby rozpocząć replikację z wystąpienia serwera elastycznego usługi Azure Database for MySQL.
Aby utworzyć zrzut danych, wykonaj polecenie
mysqldump, uruchamiając następujące polecenie:$ mysqldump -h hostname -u username -p –single-transaction –databases dbnames –order-by-primary> dumpname.sql
Jeśli zatrzymanie zapisów na serwerze źródłowym nie jest opcją lub wydajność dumpingu danych nie jest akceptowalna na serwerze źródłowym, przechwyć zrzut na serwerze repliki:
Utwórz replikę do odczytu Amazon MySQL z taką samą konfiguracją jak serwer źródłowy. Następnie utwórz tam zrzut.
Pozwól replice odczytu Amazon RDS for MySQL zsynchronizować się ze źródłowym serwerem Amazon RDS for MySQL.
Gdy opóźnienie repliki na replice do odczytu osiągnie 0, zatrzymaj replikację, wywołując procedurę składowaną
mysql.rds_stop_replication.call mysql.rds_stop_replication;Po zatrzymaniu replikacji połącz się z repliką. Następnie uruchom polecenie ,
SHOW SLAVE STATUSaby pobrać bieżącą nazwę pliku dziennika binarnego z pola Relay_Master_Log_File i pozycję pliku dziennika z pola Exec_Master_Log_Pos .Zapisz te wartości, aby rozpocząć replikację z wystąpienia serwera elastycznego usługi Azure Database for MySQL.
Aby utworzyć zrzut danych z repliki odczytu Amazon RDS for MySQL, uruchom
mysqldumpza pomocą następującego polecenia:$ mysqldump -h hostname -u username -p –single-transaction –databases dbnames –order-by-primary> dumpname.sql
Uwaga
Możesz również użyć narzędzia mydumper do przechwytywania równoległego zrzutu danych ze źródłowej bazy danych Amazon RDS for MySQL. Aby uzyskać więcej informacji, zobacz Migrowanie dużych baz danych do usługi Azure Database for MySQL — elastyczny serwer przy użyciu narzędzia mydumper/myloader.
Łączenie serwerów źródłowych i replikowych w celu uruchomienia replikacji typu data-in
Aby przywrócić bazę danych przy użyciu przywracania natywnego mysql, uruchom następujące polecenie:
$ mysql -h <target_server> -u <targetuser> -p < dumpname.sqlUwaga
Jeśli zamiast tego używasz narzędzia myloader, zobacz Migrowanie dużych baz danych do serwera elastycznego usługi Azure Database for MySQL przy użyciu narzędzia mydumper/myloader.
Zaloguj się do źródłowego serwera Usługi Amazon RDS for MySQL i skonfiguruj użytkownika replikacji. Następnie przyznaj użytkownikowi niezbędne uprawnienia.
Jeśli używasz protokołu SSL, uruchom następujące polecenia:
CREATE USER 'syncuser'@'%' IDENTIFIED BY 'userpassword'; GRANT REPLICATION SLAVE, REPLICATION CLIENT on *.* to 'syncuser'@'%' REQUIRE SSL; SHOW GRANTS FOR syncuser@'%';Jeśli nie używasz protokołu SSL, uruchom następujące polecenia:
CREATE USER 'syncuser'@'%' IDENTIFIED BY 'userpassword'; GRANT REPLICATION SLAVE, REPLICATION CLIENT on *.* to 'syncuser'@'%'; SHOW GRANTS FOR syncuser@'%';
Procedury składowane realizują wszystkie funkcje replikacji danych wejściowych. Aby uzyskać informacje o wszystkich procedurach, zobacz procedury składowane replikacji danych przychodzących. Te procedury składowane można uruchomić w środowisku MySQL Shell lub w aplikacji MySQL Workbench.
Aby połączyć serwer źródłowy usługi Amazon RDS for MySQL i serwer docelowy serwera elastycznego usługi Azure Database for MySQL, zaloguj się do docelowego wystąpienia serwera elastycznego usługi Azure Database for MySQL. Ustaw serwer Amazon RDS for MySQL jako serwer źródłowy, uruchamiając następujące polecenie:
CALL mysql.az_replication_change_master('source_server','replication_user_name','replication_user_password',3306,'<master_bin_log_file>',master_bin_log_position,'<master_ssl_ca>');Aby rozpocząć replikację między źródłowym serwerem Usługi Amazon RDS for MySQL i docelowym wystąpieniem serwera elastycznego usługi Azure Database for MySQL, uruchom następujące polecenie:
CALL mysql.az_replication_start;Aby sprawdzić stan replikacji na serwerze repliki, uruchom następujące polecenie:
show slave status\GJeśli stan parametrów
Slave_IO_RunningiSlave_SQL_Runningma wartość Tak, replikacja została uruchomiona i jest w stanie uruchomienia.Sprawdź wartość parametru,
Seconds_Behind_Masteraby określić, jak opóźniony jest serwer docelowy.Jeśli wartość to 0, obiekt docelowy przetworzył wszystkie aktualizacje z serwera źródłowego. Jeśli wartość jest inna niż 0, serwer docelowy nadal przetwarza aktualizacje.
Zapewnij pomyślne przełączenie
Aby zapewnić pomyślne przełączenie:
- Skonfiguruj odpowiednie identyfikatory logowania i uprawnienia na poziomie bazy danych w docelowym wystąpieniu serwera elastycznego usługi Azure Database for MySQL.
- Zatrzymaj operacje zapisu na źródłowym serwerze Amazon RDS for MySQL.
- Upewnij się, że docelowe wystąpienie Azure Database for MySQL Flexible Server zsynchronizowało się z serwerem źródłowym i że wartość
Seconds_Behind_Masterwynosi 0 wshow slave status. - Wywołaj procedurę składowaną
mysql.az_replication_stop, aby zatrzymać replikację, ponieważ wszystkie zmiany zostały zreplikowane do docelowego wystąpienia usługi Azure Database for MySQL — Flexible Server. - Wywołaj metodę
mysql.az_replication_remove_master, aby usunąć konfigurację replikacji typu data-in. - Przekieruj klientów i aplikacje klienckie do docelowego wystąpienia usługi Azure Database for MySQL — Flexible Server.
W tym momencie migracja zostanie ukończona. Twoje aplikacje są połączone z serwerem, na którym działa usługa Azure Database for MySQL Flexible Server.