Freigeben über


Hinzufügen von „Meine SQL Datenbank CDC-Quelle“ zu einem Eventstream

Hinweis

Dieser Artikel enthält Verweise auf den Begriff SLAVE, einen Begriff, den Microsoft nicht mehr verwendet. Sobald der Begriff aus der Software entfernt wurde, wird er auch aus diesem Artikel entfernt.

In diesem Artikel wird gezeigt, wie Sie einer Ereignisstream-Datei eine MySQL-Änderungsdatenerfassungsquelle hinzufügen. 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 dieser Anleitung 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

  • Greifen Sie auf einen Arbeitsbereich im Fabric-Kapazitätslizenzmodus (oder) im Testlizenzmodus mit der Berechtigung „Mitwirkender“ oder mit höheren Berechtigungen zu.
  • Zugriff auf eine Instanz von MySQL-Datenbank, z. B. eine Datenbank in Azure Database for MySQL – Flexibler Server.
  • Ihre MySQL-Datenbank muss öffentlich zugänglich sein und darf sich nicht hinter einer Firewall oder in einem Virtual Network befinden.
  • Wenn Sie keinen Eventstream haben, erstellen Sie einen Eventstream.

Einrichten von MySQL DB

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 definieren, von denen der Messaging-Verbinden or die Änderungen erfassen kann. Sie können den Admin-Benutzer direkt verwenden, um eine Verbindung mit der Datenbank herzustellen, die üblicherweise ü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 den MySQL-Benutzer erstellen:

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

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

    Hinweis

    Wenn eine globale Lesesperre nicht verfügbar ist, wie in gehosteten Optionen wie Amazon 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. Um FLUSH-Vorgänge während der Momentaufnahme zu unterstützen, müssen Sie möglicherweise auch die Berechtigungen RELOAD oder FLUSH_TABLES erteilen.

  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 wird Azure Database for MySQL CDC als Beispiel verwendet, um die Konfigurationsschritte zu zeigen.

  1. Wählen Sie auf der Azure-Portal-Seite für Ihr Azure Database for MySQL-Konto in der linken Navigation die Option Serverparameter unter Einstellungen.

  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 Binlog-Einstellungen für die Replikation unter Serverparametern.

Hinzufügen von MySQL DB (CDC) als Quelle

Wenn Sie Ihrem Eventstream noch keine Quelle hinzugefügt haben, wählen Sie die Kachel "Externe Quelle verwenden " aus.

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>externe Quellen hinzufügen" 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 Azure MySQL DB (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 mithilfe exakter 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. Dies verbessert die Benutzerfreundlichkeit und Leistung, kann aber zu einem Genauigkeitsverlust führen.
      • String: Codiert Werte als formatierte Zeichenfolgen. Dies 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.

    Sie können auch den Quellennamen bearbeiten, indem Sie im Abschnitt Streamdetails rechts die Stiftschaltfläche für Quellenname auswählen.

    Screenshot der Auswahl von Tabellen, Server-ID und Port für die Azure MySQL DB (CDC)-Verbindung.

  5. Nachdem Sie die Zusammenfassung auf der Seite Überprüfen + verbinden für die MySQL DB CDC-Quelle überprüft haben, wählen Sie Hinzufügen aus, um die Konfiguration abzuschließen.

    Screenshot der Seite „Überprüfen + verbinden“ mit ausgewählter Schaltfläche „Hinzufügen“.

Anzeigen des aktualisierten Eventstreams

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

    Screenshot der hinzugefügten Azure MySQL DB CDC-Quelle im Bearbeitungsmodus mit hervorgehobener Taste „Veröffentlichen“.

  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.

    Screenshot der hinzugefügten Azure MySQL DB CDC-Quelle im Livemodus.

Andere Connectors: