Damit die Replikation in Datastream zuverlässig bleibt und Ausfallzeiten minimiert werden, können Sie betriebliche Best Practices auf Ihre Streams und Quelldatenbanken anwenden. Mit diesen Best Practices können Sie die Quelldatenbank eines Streams ändern, Messwertbenachrichtigungen konfigurieren, Latenzprobleme beheben und Tabellengrenzwerte pro Stream planen.
Quelldatenbank eines Streams ändern
In einigen Fällen müssen Sie möglicherweise die Quelldatenbank eines Streams ändern. Beispielsweise müssen Sie den Stream möglicherweise so ändern, dass er Daten aus einem Replikat anstelle der primären Datenbankinstanz repliziert.
- Erstellen Sie ein Verbindungsprofil für die Replikatinstanz.
- Erstellen Sie einen Stream mit dem Verbindungsprofil für das Replikat, das Sie erstellt haben, und dem vorhandenen Verbindungsprofil für das Ziel.
- Starten Sie den Stream mit deaktivierter historischer Backfill-Funktion. Wenn der Stream gestartet wird, werden nur die Daten aus den binären Logs übertragen.
- Optional. Nachdem der Stream ausgeführt wird, ändern Sie ihn um die automatische Backfill-Funktion zu aktivieren.
- Pausieren Sie den Stream, der Daten aus der primären Instanz liest.
- Optional. Löschen Sie den Stream, der Daten aus der primären Instanz gestreamt hat.
- Optional. Löschen Sie das Verbindungsprofil für die primäre Instanz.
Benachrichtigungen und Monitoring in Datastream
Das Datastream-Dashboard enthält viele Informationen. Diese Informationen können bei der Fehlerbehebung hilfreich sein. Weitere Informationen finden Sie in den Logs, die in Cloud Logging verfügbar sind.
Datastream-Benachrichtigungen
Für Datastream ist keine Standardbenachrichtigung eingerichtet. Sie können beispielsweise eine Benachrichtigungsrichtlinie für den Messwert Datenaktualität erstellen, indem Sie auf dem Tab Übersicht auf den Link Benachrichtigungsrichtlinie erstellen klicken. Gehen Sie für die übrigen Messwerte so vor:
Rufen Sie in der Google Cloud Console die notifications Benachrichtigungen Seite auf:
Klicken Sie auf Richtlinie erstellen.
Klicken Sie auf das Drop-down-Menü Messwert auswählen.
Geben Sie im Filterfeld
Datastreamein.Optional: Möglicherweise müssen Sie den Filter Aktiv deaktivieren, um alle verfügbaren Messwerte zu sehen.
Suchen Sie unter Datastream-Stream nach dem Messwert, den Sie beobachten möchten.
Klicken Sie auf Übernehmen.
Optional: Geben Sie im Abschnitt Filter hinzufügen und Daten transformieren die erforderlichen Details ein. Klicken Sie auf Weiter.
Geben Sie im Abschnitt Benachrichtigungsauslöser konfigurieren die erforderlichen Informationen ein. Klicken Sie auf Weiter.
Konfigurieren Sie Ihre Benachrichtigungen im Abschnitt Benachrichtigungen konfigurieren und Benachrichtigung fertigstellen.
Prüfen Sie die Benachrichtigung und klicken Sie auf Richtlinie erstellen.
Ausführliche Informationen zu den einzelnen Schritten finden Sie unter Benachrichtigungsrichtlinie erstellen.
Wir empfehlen, Benachrichtigungen für die folgenden Datastream Messwerte zu erstellen:
- Datenaktualität
- Anzahl der nicht unterstützten Ereignisse im Stream
- Gesamtlatenzen des Streams
Eine Benachrichtigung zu einem dieser Messwerte kann auf ein Problem mit dem Stream oder der Quelldatenbank hinweisen.
Latenz verstehen
Datastream bietet die folgenden Messwerte, mit denen Sie die Replikationslatenz besser verstehen können:
- Datenaktualität: die Differenz zwischen dem Zeitpunkt, zu dem die Daten in der Quelle übernommen wurden , und dem Zeitpunkt, zu dem die Daten von Datastream gelesen wurden. Wenn dieser Messwert hoch ist, liest Datastream Daten langsamer, als sie in der Quelle generiert werden. Das deutet darauf hin, dass es ein Problem mit der Quelle oder der Netzwerkverbindung zur Quelle gibt.
- Systemlatenz: die Zeit, die Datastream zum Verarbeiten eines Ereignisses benötigt, vom Lesen des Ereignisses aus der Quelle bis zum Schreiben in das Ziel.
- Gesamtlatenz: die End-to-End-Replikationsverzögerung, die die Gesamtzeit vom Übernehmen der Daten in der Quelle bis zum Schreiben in das Ziel darstellt.
Wenn die Datenaktualität hoch ist, sind häufige Ursachen:
- Überlastung der Quelle:Die Quelldatenbank generiert Logs (Binlog-Dateien, Redo-Log-Dateien, WAL-Dateien) schneller, als Datastream sie lesen kann.
- Maßnahme für MySQL/Oracle:
Erhöhen Sie den
maxConcurrentCdcTasksParameter um mehr Logs parallel zu lesen. - Maßnahme für PostgreSQL:Isolieren Sie Tabellen mit hoher Änderungsrate in eigenen Streams.
- Maßnahme für SQL Server:Erhöhen Sie den Parameter
maxConcurrentCdcTasks, um mehr Änderungstabellen parallel zu lesen.
- Maßnahme für MySQL/Oracle:
Erhöhen Sie den
- Ressourcenmangel in der Quelle:Auf dem Quelldatenbankserver selbst treten Probleme wie eine hohe CPU-Auslastung, wenig Arbeitsspeicher oder Engpässe bei der Festplatten-E/A auf.
- Maßnahme:Prüfen Sie, ob die Quellinstanz fehlerfrei ist. Prüfen Sie die CPU- und RAM-Auslastung. Erhöhen Sie für PostgreSQL den Wert für den Parameter
logical_decoding_work_mem. Achten Sie für Oracle darauf, dass ausreichend System Global Area (SGA) zugewiesen ist.
- Maßnahme:Prüfen Sie, ob die Quellinstanz fehlerfrei ist. Prüfen Sie die CPU- und RAM-Auslastung. Erhöhen Sie für PostgreSQL den Wert für den Parameter
- Probleme mit der Netzwerkkapazität: Hohe Ping-Zeit oder gesättigte Bandbreite zwischen Ihrer
Quelle und Google Cloud.
- Maßnahme:Beobachten Sie die Bandbreite und Latenz Ihres VPN oder Cloud Interconnect.
- Einzelne große Transaktion:Ein großer Batchjob, z. B. ein
UPDATEfür Millionen von Zeilen, kann zu einem vorübergehenden Anstieg der Latenz führen.- Maßnahme:Das ist normal. Warten Sie, bis Datastream das große Ereignis verarbeitet hat. Erwägen Sie, große Batchjobs in Zukunft in kleinere Teile aufzuteilen.
Wenn die Systemlatenz hoch ist, kann das auf ein Problem in Datastream oder im Ziel hinweisen.
- Maßnahme:Prüfen Sie Cloud Logging auf dauerhafte Fehler auf Zeilenebene, z. B.
invalid input for type json. Wenn sich der Stream aufgrund von Fehlern bei Datentyp oder Einschränkung in einer Wiederholungsschleife befindet, ist möglicherweise eine manuelle Datenkorrektur in der Quelle erforderlich. Wenn keine offensichtlichen Fehler vorhanden sind, wenden Sie sich an den Google-Support.
Wie viele Tabellen kann ein einzelner Stream verarbeiten?
Wir empfehlen,dass ein einzelner Stream bis zu 10.000 Tabellen enthält. Die Größe der Tabellen ist nicht begrenzt. Wenn Sie einen Stream mit mehr Tabellen erstellen müssen, kann der Stream in einen Fehlerstatus wechseln. Um das zu vermeiden, sollten Sie die Quelle in mehrere Streams aufteilen.