Udostępnij za pośrednictwem


Jak skonfigurować replikację wychodzącą usługi Azure Database for MySQL — serwer elastyczny

W tym artykule opisano sposób konfigurowania replikacji wychodzącej danych w usłudze Azure Database for MySQL — serwer elastyczny przez skonfigurowanie serwerów źródłowych i replik. W tym artykule założono, że masz pewne wcześniejsze doświadczenie z serwerami i bazami danych MySQL.

W przypadku replikacji wychodzącej dane źródło jest zawsze serwerem elastycznym usługi Azure Database for MySQL. Replika może być dowolnym zewnętrznym serwerem MySQL u innych dostawców usług w chmurze, lokalnie lub na maszynach wirtualnych. Przed wykonaniem kroków opisanych w tym artykule zapoznaj się z ograniczeniami i wymaganiami replikacji wychodzącej danych.

Uwaga

W tym artykule odwołuje się termin podrzędny — termin, którego firma Microsoft już nie używa. Po usunięciu terminu z oprogramowania usuniemy go z tego artykułu.

Utwórz wystąpienie serwera elastycznego usługi Azure Database for MySQL do użycia jako źródło.

  1. Utwórz nowe wystąpienie serwera elastycznego usługi Azure Database for MySQL (na przykład sourceserver.mysql.database.Azure.com). Zapoznaj się z przewodnikiem Szybki start: tworzenie wystąpienia usługi Azure Database for MySQL za pomocą witryny Azure Portal. Ten serwer jest serwerem "źródłowym" na potrzeby replikacji wychodzącej danych.

  2. Utwórz zduplikowane konta użytkowników i odpowiednie uprawnienia.

    1. Konta użytkowników nie są replikowane z serwera źródłowego do serwera repliki. Załóżmy, że planujesz zapewnić użytkownikom dostęp do serwera repliki. W takim przypadku należy ręcznie utworzyć wszystkie konta i odpowiednie uprawnienia w tym nowo utworzonym wystąpieniu serwera elastycznego usługi Azure Database for MySQL.

Konfigurowanie źródłowego serwera MySQL

Poniższe kroki umożliwiają przygotowanie i skonfigurowanie wystąpienia serwera elastycznego usługi Azure Database for MySQL działającego jako źródło.

  1. Wymagania dotyczące sieci

    Upewnij się, że ustawienia sieciowe zostały ustanowione, aby serwer źródłowy i serwer repliki mógł bezproblemowo komunikować się.
    Jeśli serwer źródłowy znajduje się w dostępie publicznym, upewnij się, że reguły zapory zezwalają na adres IP serwera repliki. Jeśli serwer repliki jest hostowany na platformie Azure, upewnij się, że wybrano opcję zezwalania na dostęp publiczny z dowolnej usługi platformy Azure ze strony sieci w witrynie Azure Portal. Jeśli serwer źródłowy znajduje się w dostępie prywatnym, upewnij się, że serwer repliki może nawiązać połączenie ze źródłem za pośrednictwem komunikacji równorzędnej sieci wirtualnej lub połączenia bramy sieci VPN między sieciami wirtualnymi.

  2. Włączanie rejestrowania binarnego

    Sprawdź, czy rejestrowanie binarne zostało włączone w źródle, uruchamiając następujące polecenie:

    SHOW VARIABLES LIKE 'log_bin';
    

    Jeśli zmienna log_bin jest zwracana z wartością "WŁ.", rejestrowanie binarne jest włączone na serwerze.

  3. Tworzenie nowej roli replikacji i konfigurowanie uprawnień

    Utwórz konto użytkownika na skonfigurowanym serwerze źródłowym z uprawnieniami replikacji. Można to zrobić za pomocą poleceń SQL lub narzędzia, takiego jak MySQL Workbench. Zastanów się, czy planujesz replikowanie przy użyciu protokołu SSL, ponieważ będzie to konieczne podczas tworzenia użytkownika. Zapoznaj się z dokumentacją programu MySQL, aby dowiedzieć się, jak dodawać konta użytkowników na serwerze źródłowym.

    W poniższych poleceniach nowa rola replikacji może uzyskiwać dostęp do źródła z dowolnej maszyny, a nie tylko tej, która hostuje samo źródło. W tym celu należy określić wartość "syncuser@'%'" w poleceniu tworzenia użytkownika. Zobacz dokumentację programu MySQL, aby dowiedzieć się więcej na temat ustawiania nazw kont.

    Istnieje kilka narzędzi, których można użyć do ustawiania nazw kont. Wybierz ten, który najlepiej pasuje do twojego środowiska.

Replikacja przy użyciu protokołu SSL

Aby wymagać protokołu SSL dla wszystkich połączeń użytkowników, użyj następującego polecenia, aby utworzyć użytkownika:

CREATE USER 'syncuser'@'%' IDENTIFIED BY 'yourpassword';
GRANT REPLICATION SLAVE ON *.* TO ' syncuser'@'%' REQUIRE SSL;

Replikacja bez protokołu SSL

Jeśli protokół SSL nie jest wymagany dla wszystkich połączeń, użyj następującego polecenia, aby utworzyć użytkownika:

CREATE USER 'syncuser'@'%' IDENTIFIED BY 'yourpassword';
GRANT REPLICATION SLAVE ON *.* TO ' syncuser'@'%';

Zrzut i przywracanie serwera źródłowego.

Pomiń tę sekcję, jeśli jest to nowo utworzony serwer źródłowy bez istniejących danych do migracji do repliki. W tym momencie możesz odblokować tabele:

SET GLOBAL read_only = OFF;
UNLOCK TABLES;

Wykonaj poniższe kroki, jeśli serwer źródłowy ma istniejące dane do migracji do repliki.

  1. Ustal, które bazy danych i tabele chcesz replikować do serwera elastycznego usługi Azure Database for MySQL, i wykonaj zrzut z serwera źródłowego. Do zrzutu baz danych z serwera podstawowego można użyć narzędzia mysqldump. Aby uzyskać więcej informacji, odwiedź stronę Zrzut i przywracanie. Nie trzeba zrzucić biblioteki MySQL i biblioteki testowej.

  2. Ustaw serwer źródłowy na tryb odczytu/zapisu.

Po zrzuceniu bazy danych zmień źródłowe wystąpienie serwera elastycznego usługi Azure Database for MySQL na tryb odczytu/zapisu.

SET GLOBAL read_only = OFF;
UNLOCK TABLES;
  1. Przywróć plik zrzutu na nowy serwer. Przywróć plik zrzutu na serwer utworzony w usłudze Azure Database for MySQL — serwer elastyczny. Aby przywrócić plik zrzutu do wystąpienia serwera elastycznego usługi Azure Database for MySQL, zobacz Zrzut i przywracanie. Jeśli plik zrzutu jest duży, przekaż go do maszyny wirtualnej na platformie Azure w tym samym regionie co serwer repliki. Przywróć je do wystąpienia serwera elastycznego usługi Azure Database for MySQL z maszyny wirtualnej.

Uwaga

Jeśli chcesz uniknąć ustawiania bazy danych na tylko do odczytu podczas zrzutu i przywracania, możesz użyć mydumper /myloader.

Skonfiguruj serwer repliki, aby rozpocząć replikację danych.

  1. Filtrowanie

    Załóżmy, że replikacja wychodząca danych jest konfigurowana między serwerem elastycznym usługi Azure Database for MySQL i zewnętrznym serwerem MySQL u innych dostawców chmury lub lokalnie. W takim przypadku należy użyć filtru replikacji, aby odfiltrować tabele niestandardowe platformy Azure na serwerze repliki. Można to osiągnąć, ustawiając Replicate_Wild_Ignore_Table = "mysql.__%" w celu filtrowania tabel wewnętrznych serwera elastycznego usługi Azure Database for MySQL. Zobacz MySQL :: MySQL 5.7 Reference Manual :: 13.4.2.2 CHANGE REPLICATION FILTER Instrukcja, aby uzyskać więcej informacji na temat modyfikowania tego parametru serwera.

  2. Ustaw serwer repliki, łącząc się z nim i otwierając powłokę MySQL na serwerze repliki. W wierszu polecenia uruchom następującą operację, która konfiguruje kilka ustawień replikacji MySQL w tym samym czasie:

    CHANGE THE REPLICATION SOURCE TO
    SOURCE_HOST='<master_host>',
    SOURCE_USER='<master_user>',
    SOURCE_PASSWORD='<master_password>',
    SOURCE_LOG_FILE='<master_log_file>',
    SOURCE_LOG_POS=<master_log_pos>
    
    • master_host: nazwa hosta serwera źródłowego (przykład — "source.mysql.database.Azure.com")
    • master_user: nazwa użytkownika serwera źródłowego (na przykład 'syncuser'@'%')
    • master_password: hasło serwera źródłowego
    • master_log_file: nazwa pliku dziennika binarnego z uruchomionego polecenia pokaż stan wzorca
    • master_log_pos: pozycja dziennika binarnego z uruchamiania pokaż stan wzorca

    Uwaga

    Aby użyć protokołu SSL dla połączenia, dodaj atrybut SOURCE_SSL=1 do polecenia . Aby uzyskać więcej informacji na temat używania protokołu SSL w kontekście replikacji, odwiedź stronę — https://dev.mysql.com/doc/refman/8.0/en/change-replication-source-to.html

  3. Aktywuj serwer repliki przy użyciu następującego polecenia.

    START REPLICA;
    

    W tym momencie wystąpienie repliki rozpoczyna replikowanie wszelkich zmian wprowadzonych w źródłowej bazie danych serwera. Możesz to przetestować, tworząc przykładową tabelę w źródłowej bazie danych i sprawdzając, czy została pomyślnie zreplikowana.

  4. Sprawdź stan replikacji.

    Wywołaj polecenie show slave status\G na serwerze repliki, aby wyświetlić stan replikacji.

     show slave status;
    

    Jeśli stan Slave_IO_Running i Slave_SQL_Running to yes , a wartość Seconds_Behind_Master to 0, replikacja działa dobrze. Seconds_Behind_Master wskazuje, jak późno jest replika. Replika przetwarza aktualizacje, jeśli wartość nie 0jest .

    Jeśli serwer repliki jest hostowany na maszynie wirtualnej platformy Azure, ustaw opcję Zezwalaj na dostęp do usług platformy Azure na wartość WŁĄCZONE w źródle, aby umożliwić komunikację serwerów źródłowych i replik. To ustawienie można zmienić z opcji zabezpieczeń połączenia. Aby uzyskać więcej informacji, zobacz Zarządzanie regułami zapory dla usługi Azure Database for MySQL — serwer elastyczny przy użyciu witryny Azure Portal.

    Jeśli użyto narzędzia mydumper/myloader do zrzutu bazy danych, możesz pobrać master_log_file i master_log_pos z pliku /backup/metadata.