Udostępnij przez


Dodaj źródło CDC bazy danych MySQL do strumienia zdarzeń

Uwaga

Ten artykuł zawiera odwołania do terminu SLAVE, termin, którego firma Microsoft już nie używa. Po usunięciu terminu z oprogramowania usuniemy go z tego artykułu.

W tym artykule pokazano, jak dodać źródło przechwytywania zmian danych mySQL do strumienia zdarzeń. Obecnie usługa CDC bazy danych MySQL jest obsługiwana w następujących usługach, w których można uzyskać dostęp do baz danych publicznie:

  • Azure Database for MySQL
  • Amazon RDS for MySQL
  • Amazon Aurora MySQL
  • Google Cloud SQL for MySQL (GCP).

W tym przewodniku jako przykład użyto usługi Azure Database for MySQL CDC.

Po dodaniu źródła CDC bazy danych MySQL do strumienia zdarzeń, przechwytuje ono zmiany na poziomie wiersza w określonych tabelach. Te zmiany można następnie przetwarzać w czasie rzeczywistym i wysyłać do różnych miejsc docelowych w celu dalszej analizy.

Wymagania wstępne

  • Dostęp do obszaru roboczego w trybie licencji pojemności Fabric lub w trybie licencji próbnej z uprawnieniami współautora lub wyższymi.
  • Dostęp do instancji bazy danych MySQL, takiej jak baza danych w Azure Database for MySQL – Elastyczny Serwer.
  • Baza danych MySQL musi być publicznie dostępna i nie musi znajdować się za zaporą lub być zabezpieczona w sieci wirtualnej.
  • Jeśli nie masz strumienia zdarzeń, utwórz strumień zdarzeń.

Konfigurowanie bazy danych MySQL

Łącznik używa łącznika Debezium MySQL do przechwytywania zmian w bazie danych MySQL. Należy zdefiniować użytkownika mySQL z odpowiednimi uprawnieniami we wszystkich bazach danych, z których łącznik obsługi komunikatów może przechwytywać zmiany. Możesz bezpośrednio użyć administratora , aby nawiązać połączenie z bazą danych, która zwykle ma odpowiednie uprawnienia, lub wykonać następujące kroki, aby utworzyć nowego użytkownika:

Uwaga

Nowe konto użytkownika lub administratora oraz odpowiednie hasło będą używane później do połączenia z bazą danych w Eventstream.

  1. mysql W wierszu polecenia utwórz użytkownika mySQL:

    mysql> CREATE USER 'user'@'%' IDENTIFIED BY 'password';
    
  2. Przyznaj użytkownikowi wymagane uprawnienia:

    mysql> GRANT SELECT, SHOW DATABASES, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'user'@'%';
    

    Uwaga

    Gdy globalna blokada odczytu jest niedostępna, jak w przypadku opcji zarządzanych, takich jak Amazon RDS czy Aurora, stosuje się blokady na poziomie tabeli w celu utworzenia spójnej migawki. W takim przypadku musisz przyznać użytkownikowi LOCK TABLES uprawnienia. Ponadto w celu obsługi operacji FLUSH podczas tworzenia migawki może być również konieczne przyznanie uprawnień RELOAD lub FLUSH_TABLES.

  3. Finalizuj uprawnienia użytkownika:

    mysql> FLUSH PRIVILEGES;
    

Aby sprawdzić, czy użytkownik lub administrator ma przyznane wymagane uprawnienia, uruchom to polecenie, a następnie należy wyświetlić wymagane uprawnienia w kroku 2:

SHOW GRANTS FOR user;

Aby uzyskać więcej informacji na temat udzielania wymaganych uprawnień użytkownikowi, zobacz Debezium connector for MySQL: Debezium Documentation (Łącznik debezium dla programu MySQL: Debezium Documentation).

Włączanie dziennika binlog

Należy włączyć rejestrowanie binarne na potrzeby replikacji bazy danych MySQL. Dzienniki binarne rejestrują aktualizacje transakcji dla narzędzi replikacji w celu propagowania zmian. W tej sekcji użyto usługi Azure Database for MySQL CDC jako przykładu, aby pokazać kroki konfiguracji.

  1. Na stronie witryny Azure Portal dla konta usługi Azure Database for MySQL wybierz pozycję Parametry serwera w obszarze Ustawienia w obszarze nawigacji po lewej stronie.

  2. Na stronie Parametry serwera skonfiguruj następujące właściwości, a następnie wybierz pozycję Zapisz.

    • W przypadku binlog_row_image wybierz pozycję pełne.

    • W przypadku binlog_expire_logs_seconds ustaw liczbę sekund oczekiwania usługi przed przeczyszczeniem pliku dziennika binarnego. Ustaw wartość tak, aby odpowiadała potrzebom środowiska, na przykład 86400.

    Zrzut ekranu przedstawiający ustawienia binloga dla replikacji w sekcji Parametry serwera.

Dodaj bazę danych MySQL DB (CDC) jako źródło

Jeśli jeszcze nie dodano żadnego źródła do strumienia zdarzeń, wybierz kafelek Użyj źródła zewnętrznego .

Zrzut ekranu przedstawiający wybór kafelka do korzystania z zewnętrznego źródła.

Jeśli dodajesz źródło do już opublikowanego strumienia zdarzeń, przełącz się na tryb edycji. Na wstążce wybierz pozycję Dodaj źródła>zewnętrzne.

Zrzut ekranu przedstawiający opcje dodawania źródeł zewnętrznych.

Na stronie Wybieranie źródła danych wyszukaj i wybierz pozycję Połącz na kafelku MySQL DB (CDC).

Zrzut ekranu przedstawiający wybór usługi MySQL DB (CDC) jako typu źródła w kreatorze pobierania zdarzeń.

Konfigurowanie bazy danych MySQL DB (CDC) i nawiązywanie z nią połączenia

  1. Na ekranie Połącz w obszarze Połączenie wybierz pozycję Nowe połączenie, aby utworzyć połączenie w chmurze.

    Zrzut ekranu przedstawiający stronę Połącz.

  2. Wprowadź następujące ustawienia połączenia i poświadczenia połączenia dla bazy danych MySQL DB, a następnie wybierz pozycję Połącz.

  3. Wprowadź następujące informacje, aby skonfigurować źródło danych CDC MySQL, a następnie kliknij Dalej.

    • Port: wartość domyślna to 3306. Jeśli wybrane połączenie w chmurze jest skonfigurowane w Zarządzanie połączeniami i bramami, upewnij się, że numer portu jest zgodny z tym ustawionym. Jeśli nie są zgodne, to numer portu w połączeniu z chmurą określony w Zarządzanie połączeniami i bramami ma pierwszeństwo.

    • tabela: wybierz Wszystkie tabele lub wprowadź nazwę/nazwy tabel. Jeśli wybierzesz tę drugą, określ tabele przy użyciu rozdzielanej przecinkami listy pełnych identyfikatorów tabeli (databaseName.tableName) lub prawidłowych wyrażeń regularnych. Przykład:

      • Użyj databaseName.test.*, aby wybrać wszystkie tabele, których nazwy zaczynają się od databaseName.test.
      • Użyj databaseName\.(test1|test2), aby wybrać databaseName.test1 i databaseName.test2.

      Oba formaty można mieszać przy użyciu przecinków. Całkowity limit znaków dla całego wpisu wynosi 102 400 znaków.

    • Identyfikator serwera: wprowadź unikatową wartość dla każdego serwera i klienta replikacji w klastrze MySQL. Wartość domyślna to 1000.

    Uwaga

    Ustaw inny identyfikator serwera dla każdego czytnika. Każdy klient bazy danych MySQL do odczytu dziennika binlog powinien mieć unikatowy identyfikator o nazwie Identyfikator serwera. Serwer MySQL używa tego identyfikatora do obsługi połączenia sieciowego i stanu dziennika binarnego. Różne zadania dzielące ten sam identyfikator serwera mogą skutkować odczytaniem niewłaściwej pozycji binlogu. W związku z tym zaleca się ustawienie innego identyfikatora serwera dla każdego czytelnika.

  4. Możesz rozwinąć Ustawienia zaawansowane, aby uzyskać dostęp do większej liczby opcji konfiguracji źródła CDC MySQL bazy danych.

    • Tryb blokowania migawek: Opcje to:
      • Minimal (default): przechowuje globalną blokadę odczytu tylko w fazie początkowej w celu przechwycenia schematu i metadanych. Pozostała część migawki korzysta z transakcji typu REPEATABLE READ, co umożliwia aktualizacje w trakcie odczytu danych.
      • Extended: utrzymuje globalną blokadę odczytu dla całego czasu trwania migawki, blokując wszystkie zapisy. Zapewnij pełną spójność, jeśli akceptowalne jest blokowanie zapisu.
      • None: pomija uzyskiwanie blokad tabeli podczas tworzenia migawki. Bezpieczne tylko wtedy, gdy podczas procesu nie wystąpią żadne zmiany schematu.
    • Tryb obsługi dziesiętnej: określa, jak złącze obsługuje DECIMAL i NUMERIC wartości kolumn:
      • Precise: reprezentuje wartości przy użyciu dokładnych typów dziesiętnych (na przykład Java BigDecimal), aby zapewnić pełną precyzję i dokładność w reprezentacji danych.
      • Double: konwertuje wartości na liczby zmiennoprzecinkowe o podwójnej precyzji. Poprawia to użyteczność i wydajność, ale może spowodować utratę precyzji.
      • String: koduje wartości jako sformatowane ciągi. Ułatwia to korzystanie z nich w systemach podrzędnych, ale traci semantyczne informacje o oryginalnym typie liczbowym.
    • Tryb migawki: określ kryteria wykonywania migawki po uruchomieniu łącznika:
      • Initial: Łącznik uruchamia migawkę tylko wtedy, gdy nie zarejestrowano żadnych offsetów dla nazwy serwera logicznego lub jeśli wykryje, że wcześniejsza migawka nie została ukończona. Po zakończeniu tworzenia migawki łącznik zaczyna przesyłać strumieniowo rekordy zdarzeń dla kolejnych zmian bazy danych.
      • InitialOnly: Łącznik uruchamia migawkę tylko wtedy, gdy nie zarejestrowano żadnych przesunięć dla nazwy serwera logicznego. Po zakończeniu tworzenia migawki łącznik przestaje działać. Nie przechodzi do przesyłania strumieniowego w celu odczytu zdarzeń zmiany z binloga.
      • NoData: Łącznik uruchamia migawkę, która przechwytuje tylko schemat, ale nie żadne dane tabeli. Ustaw tę opcję, jeśli nie potrzebujesz spójnej migawki danych, ale potrzebne są tylko zmiany wykonywane od momentu uruchomienia łącznika.

    Możesz również edytować nazwę źródła, wybierając przycisk w kształcie ołówka dla nazwy źródła w sekcji szczegóły strumienia po prawej stronie.

    Zrzut ekranu przedstawiający wybieranie tabel, identyfikatora serwera i portu dla połączenia usługi Azure MySQL DB (CDC).

  5. Na stronie Przegląd + łączenie, po przejrzeniu podsumowania źródła CDC bazy danych MySQL wybierz pozycję Dodaj, aby ukończyć konfigurację.

    Zrzut ekranu pokazujący stronę Review + connect z zaznaczonym przyciskiem Dodaj.

Wyświetlanie zaktualizowanego strumienia zdarzeń

  1. Widzisz źródło bazy danych MySQL (CDC) dodane do strumienia zdarzeń w trybie edycji.

    Zrzut ekranu przedstawiający dodane źródło CDC usługi Azure MySQL DB w trybie edycji z wyróżnionym przyciskiem Publikuj.

  2. Wybierz Publikuj, aby opublikować zmiany i rozpocząć przesyłanie danych CDC MySQL do strumienia zdarzeń.

    Zrzut ekranu przedstawiający dodane źródło CDC usługi Azure MySQL DB w trybie na żywo.

Inne łączniki: