Hinzufügen der MySQL-Datenbank-CDC-Quelle zu einem Eventstream

In diesem Artikel wird gezeigt, wie Sie einer Ereignisstream-Datei eine MySQL-Änderungsdatenerfassungsquelle hinzufügen.

Mit dem Azure MySQL Database Change Data Capture (CDC)-Connector können Sie eine Momentaufnahme der aktuellen Daten in einer Azure MySQL-Datenbank erfassen. Sie geben die Tabellen an, die überwacht werden sollen, und erhalten Warnungen, wenn sich nachfolgende Zeilenebenen in den Tabellen ändern. Sobald die Änderungen in einem Datenstrom erfasst wurden, können Sie diese CDC-Daten in Echtzeit verarbeiten und an verschiedene Ziele innerhalb Fabric zur weiteren Verarbeitung oder Analyse senden.

Derzeit wird mySQL Database CDC von den folgenden Diensten unterstützt, in denen öffentlich auf die Datenbanken zugegriffen werden kann:

  • Azure-Datenbank für MySQL
  • Amazon RDS für MySQL
  • Amazon Aurora MySQL
  • Google Cloud SQL für MySQL (GCP).

In diesem Leitfaden wird Azure Database for MySQL CDC als Beispiel verwendet.

Sobald die CDC-Quelle der MySQL-Datenbank dem Eventstream hinzugefügt wurde, erfasst sie Änderungen auf Zeilenebene an den angegebenen Tabellen. Diese Änderungen können dann in Echtzeit verarbeitet und zur weiteren Analyse an verschiedene Ziele gesendet werden.

Voraussetzungen

  • Zugriff auf einen Arbeitsbereich im Fabric-Kapazitätslizenzmodus oder im Testlizenzmodus mit Mitwirkendenrechten oder höheren Berechtigungen.
  • Zugriff auf eine Instanz der MySQL-Datenbank, z. B.: eine Datenbank in Azure Database for MySQL – Flexibler Server.
  • Ihre MySQL-Datenbank sollte öffentlich zugänglich sein und nicht hinter einer Firewall oder in einem virtuellen Netzwerk geschützt sein. Wenn es sich in einem geschützten Netzwerk befindet, stellen Sie mithilfe der Eventstream Connector virtual network Injection eine Verbindung mit ihr her.
  • Wenn Sie keinen Eventstream haben, erstellen Sie einen Eventstream.

Einrichten der MySQL-Datenbank

Der Connector verwendet den Debezium MySQL-Connector, um Änderungen in Ihrer MySQL-Datenbank zu erfassen. Sie müssen einen MySQL-Benutzer mit entsprechenden Berechtigungen für alle Datenbanken erstellen, von denen der Messaging-Connector die Änderungen aufzeichnen kann. Sie können den Administratorbenutzer direkt verwenden, um eine Verbindung mit der Datenbank herzustellen, die normalerweise über die entsprechenden Berechtigungen verfügt, oder Sie können die folgenden Schritte ausführen, um einen neuen Benutzer zu erstellen:

Hinweis

Das neue Benutzer- oder Administratorkonto und das entsprechende Kennwort werden verwendet, um später innerhalb von Eventstream eine Verbindung mit der Datenbank herzustellen.

  1. An der mysql Eingabeaufforderung erstellen Sie den MySQL-Benutzer:

    mysql> CREATE USER 'user'@'%' IDENTIFIED BY 'password';
    
  2. Gewähren Sie dem Benutzer die erforderlichen Berechtigungen:

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

    Hinweis

    Wenn eine globale Lesesperre nicht verfügbar ist, wie in gehosteten Optionen wie Amazon Relational Database Service (RDS) oder Aurora, werden Sperrungen auf Tabellenebene verwendet, um die konsistente Momentaufnahme zu erstellen. In diesem Fall müssen Sie dem Benutzer LOCK TABLES eine Berechtigung erteilen. Darüber hinaus müssen Sie möglicherweise auch FLUSH- oder RELOAD-Berechtigungen erteilen, um Vorgänge während der Momentaufnahme zu unterstützen.

  3. Abschließen der Berechtigungen des Benutzers:

    mysql> FLUSH PRIVILEGES;
    

Um zu bestätigen, ob der Benutzer oder Administrator über die erforderlichen Berechtigungen verfügt, führen Sie diesen Befehl aus, und dann sollten die erforderlichen Berechtigungen in Schritt 2 angezeigt werden:

SHOW GRANTS FOR user;

Weitere Informationen zum Erteilen der erforderlichen Berechtigungen an Benutzende finden Sie unter Debezium-Connector für MySQL: Debezium-Dokumentation.

Aktivieren des Binlogs

Sie müssen die binäre Protokollierung für die MySQL-Replikation aktivieren. In den binären Protokollen werden Transaktionsaktualisierungen für Replikationstools erfasst, um Änderungen zu verteilen. In diesem Abschnitt werden Azure Database for MySQL CDC als Beispiel für die Konfigurationsschritte verwendet.

  1. Wählen Sie auf der Azure-Portalseite für Ihr Azure Database for MySQL-Konto Serverparameter unter Einstellungen im linken Navigationsbereich aus.

  2. Konfigurieren Sie auf der Seite Serverparameter die folgenden Eigenschaften, und wählen Sie dann Speichern aus.

    • Für binlog_row_image, wählen Sie voll.

    • Legen Sie für binlog_expire_logs_seconds die Anzahl der Sekunden fest, die der Dienst wartet, bevor die binäre Protokolldatei gelöscht wird. Legen Sie den Wert so fest, dass er den Anforderungen Ihrer Umgebung entspricht, z. B. 86400.

    Screenshot der Binlogeinstellungen für die Replikation unter Serverparametern.

Hinzufügen von MySQL-Datenbank (DB) Change Data Capture (CDC) als Quelle

Wenn Sie Ihrem Eventstream noch keine Quelle hinzugefügt haben, wählen Sie die Kachel "Datenquellen verbinden" aus . Sie können auch Quelle hinzufügen>Datenquellen verbinden im Menüband auswählen.

Screenshot, der die Auswahl der Kachel für die Verwendung einer externen Quelle zeigt.

Wenn Sie die Quelle zu einem bereits veröffentlichten Ereignisstream hinzufügen, wechseln Sie zum Bearbeitungsmodus . Wählen Sie im Menüband "Quelle hinzufügen; Datenquellen verbinden" aus.

Screenshot der Auswahl zum Hinzufügen externer Quellen.

Suchen Sie auf der Seite Datenquelle auswählen auf der Kachel MySQL DB (CDC) nach Verbinden, und wählen Sie die Option aus.

Screenshot der Auswahl von MySQL DB (CDC) als Quellentyp im Assistenten zum Abrufen von Ereignissen.

Konfigurieren von MySQL-Datenbank (CDC) und Herstellen einer Verbindung

  1. Wählen Sie auf der Anzeige Verbinden unter Verbindung die Option Neue Verbindung aus, um eine Cloudverbindung zu erstellen.

    Screenshot der Seite „Verbinden“.

  2. Geben Sie die folgenden Verbindungseinstellungen und Verbindungsanmeldeinformationen für Ihre MySQL-Datenbank ein, und wählen Sie dann "Verbinden" aus.

    • Server: Die Serveradresse Ihrer MySQL-Datenbank, z. B. my-mysql-server.mysql.database.azure.com.

    • Datenbank: Der Datenbankname, z. B. my_database.

    • Verbindungsname: Automatisch generiert, oder Sie können einen neuen Namen für diese Verbindung eingeben.

    • Benutzername und Kennwort: Geben Sie die Anmeldeinformationen für Ihre MySQL-Datenbank ein. Stellen Sie sicher, dass Sie das Serveradministratorkonto oder das Benutzerkonto eingeben, das mit den erforderlichen Berechtigungen erstellt wurde.

      Ein Screenshot der Verbindungseinstellungen für die Azure MySQL-Datenbank (DB) Change Data Capture (CDC).

  3. Geben Sie die folgenden Informationen ein, um die MySQL DB CDC-Datenquelle zu konfigurieren, und wählen Sie dann Nextaus.

    • Port: Der Standardwert ist 3306. Wenn Ihre ausgewählte Cloudverbindung in "Verbindungen und Gateways verwalten" konfiguriert ist, stellen Sie sicher, dass die Portnummer dem dort festgelegten Entspricht. Wenn sie nicht übereinstimmen, haben die Portnummer in der Cloudverbindung unter "Verbindungen und Gateways verwalten " Vorrang.

    • Tabelle: Wählen Sie "Alle Tabellen" oder "Tabellennamen eingeben" aus. Wenn Sie letzteres auswählen, geben Sie Tabellen mithilfe einer durch Trennzeichen getrennten Liste mit vollständigen Tabellenbezeichnern (databaseName.tableName) oder gültigen regulären Ausdrücken an. Beispiel:

      • Verwenden Sie databaseName.test.*, um alle Tabellen auszuwählen, deren Namen mit databaseName.test beginnen.
      • Verwenden Sie databaseName\.(test1|test2), um databaseName.test1 und databaseName.test2 auszuwählen.

      Sie können beide Formate mithilfe von Kommas mischen. Die Gesamtzeichenbeschränkung für den gesamten Eintrag beträgt 102.400 Zeichen.

    • Server-ID: Geben Sie einen eindeutigen Wert für jeden Server- und Replikations-Client im MySQL-Cluster ein. Der Standardwert lautet „1000“.

    Hinweis

    Legen Sie für jeden Leser eine andere Server-ID fest. Jeder MySQL-Datenbankclient zum Lesen von Binlog sollte eine eindeutige ID aufweisen, die als Server-ID bezeichnet wird. MySQL Server verwendet diese ID, um die Netzwerkverbindung und die Binlog-Position aufrechtzuerhalten. Verschiedene Aufträge, die dieselbe Server-ID gemeinsam nutzen, können dazu führen, dass aus der falschen Binlog-Position gelesen wird. Daher wird empfohlen, für jeden Leser eine andere Server-ID festzulegen.

  4. Sie können erweiterte Einstellungen erweitern, um auf weitere Konfigurationsoptionen für die MySQL-Datenbank-CDC-Quelle zuzugreifen:

    • Momentaufnahmesperrmodus: Optionen sind:
      • Minimal (default): Enthält eine globale Lesesperre nur während der ersten Phase, um Schema und Metadaten zu erfassen. Der Rest der Momentaufnahme verwendet eine REPEATABLE READ-Transaktion, sodass Aktualisierungen beim Lesen von Daten zugelassen werden.
      • Extended: Verwaltet eine globale Lesesperre für die gesamte Momentaufnahmedauer, die alle Schreibvorgänge blockiert. Wird für vollständige Konsistenz verwendet, wenn die Schreibsperre akzeptabel ist.
      • None: Überspringt den Erwerb von Tabellensperren während der Momentaufnahme. Nur sicher, wenn während des Prozesses keine Schemaänderungen vorgenommen werden.
    • Dezimalbehandlungsmodus: Gibt an, wie der Verbinder DECIMAL und NUMERIC Spaltenwerte behandelt:
      • Precise: Stellt Werte mit exakten Dezimaltypen dar (z. B. Java BigDecimal), um die volle Genauigkeit und Genauigkeit in der Datendarstellung sicherzustellen.
      • Double: Wandelt Werte in Gleitkommazahlen mit doppelter Genauigkeit um. Diese Option verbessert die Benutzerfreundlichkeit und Leistung, kann aber zu einem Genauigkeitsverlust führen.
      • String: Codiert Werte als formatierte Zeichenfolgen. Diese Option erleichtert die Nutzung in nachgelagerten Systemen, verliert jedoch semantische Informationen über den ursprünglichen numerischen Typ.
    • Momentaufnahmemodus: Geben Sie die Kriterien für das Ausführen einer Momentaufnahme an, wenn der Connector gestartet wird:
      • Initial: Der Connector führt eine Momentaufnahme nur aus, wenn keine Offsets für den logischen Servernamen aufgezeichnet wurden oder wenn erkannt wird, dass eine frühere Momentaufnahme nicht abgeschlossen werden konnte. Nach Abschluss der Momentaufnahme beginnt der Connector, Ereignisdatensätze für nachfolgende Datenbankänderungen zu streamen.
      • InitialOnly: Der Connector führt eine Momentaufnahme nur aus, wenn für den logischen Servernamen keine Offsets aufgezeichnet wurden. Nach Abschluss der Momentaufnahme stoppt der Verbinder. Es wechselt nicht zum Streaming, um Änderungsereignisse aus dem Binlog zu lesen.
      • NoData: Der Connector führt eine Momentaufnahme aus, die nur das Schema, aber keine Tabellendaten erfasst. Legen Sie diese Option fest, wenn Sie keine konsistente Momentaufnahme der Daten benötigen, aber sie benötigen nur die Änderungen, die seit dem Start des Connectors vorgenommen werden.

Stream- oder Quelldetails

  1. Führen Sie auf der Seite "Verbinden " einen dieser Schritte aus, je nachdem, ob Sie Eventstream oder Real-Time Hub verwenden.

    • Eventstream:

      Führen Sie im Bereich " Quelldetails " rechts die folgenden Schritte aus:

      1. Um den Quellnamen zu ändern, wählen Sie das Stiftsymbol aus.

      2. Beachten Sie, dass der Eventstream-Name und der Stream-Name schreibgeschützt sind.

    • Real-Time Hub:

      Führen Sie im Abschnitt Datenstromdetails die folgenden Schritte aus:

      1. Wählen Sie den arbeitsbereich Fabric aus, in dem Sie den Ereignisstream erstellen möchten.

      2. Wählen Sie für den Eventstream-Namen die Stiftschaltfläche aus, und geben Sie einen Namen für den Eventstream ein.

      3. Der Wert für den Stream-Namen wird automatisch generiert, indem "-stream " an den Namen des Ereignisstreams angefügt wird. Dieser Datenstrom wird auf der Seite "Alle Datenströme" des Echtzeithubs angezeigt, wenn der Assistent beendet wird.

  2. Wählen Sie unten auf der Seite "Konfigurieren" die Option "Weiter" aus.

Überprüfen und Verbinden

Überprüfen Sie auf dem Bildschirm "Überprüfen + Verbinden " die Zusammenfassung, und wählen Sie "Hinzufügen " (Eventstream) oder "Verbinden " (Real-Time Hub) aus.

Anzeigen des aktualisierten Eventstreams

  1. Die MySQL DB CDC-Quelle, die Sie Ihrem Eventstream hinzugefügt haben, wird im Bearbeitungsmodus angezeigt.

    A screenshot der hinzugefügten Azure MySQL DB CDC-Quelle im Bearbeitungsmodus mit hervorgehobener Schaltfläche

  2. Wählen Sie Veröffentlichen aus, um die Änderungen zu veröffentlichen und mit dem Streamen von MySQL DB CDC-Daten in den Eventstream zu beginnen.

    Ein Screenshot der hinzugefügten Azure MySQL DB CDC-Quelle im Live-Modus.

Andere Konnektoren: