Failover von Kontoobjekten¶
Unter diesem Thema werden die Schritte beschrieben, die für ein Failover von replizierten Kontoobjekten über mehrere Konten in verschiedenen Regionen hinweg für die Notfallwiederherstellung (Disaster Recovery) erforderlich sind.
Informationen über den Zweck des Failover-Mechanismus und wann er verwendet werden sollte, finden Sie unter Einführung in Geschäftskontinuität und Notfallwiederherstellung.
Prerequisites¶
Aktivieren Sie die Replikation innerhalb einer Gruppe von Konten innerhalb derselben Organisation, über mehrere Regionen hinweg bei einem Clouddienstanbieter oder über verschiedene Clouddienstanbieter hinweg.
Erstellen Sie eine primäre Failover-Gruppe, die die Arten von Objekten definiert, die repliziert werden sollen, und die Zielkonten angibt, in die repliziert werden soll. Sie können die replizierten Objekte optional auf mehrere Failover-Gruppen aufteilen, z. B., wenn einige Datenbanken häufiger repliziert werden sollen als andere.
Create at least one secondary failover group (replica) of each primary failover group in one or more secondary accounts.
Aktualisieren (synchronisieren) Sie jedes Replikat mit den neuesten Aktualisierungen der Objekte in der Failover-Gruppe. Führen Sie eine erste Aktualisierung durch, und richten Sie einen Zeitplan ein, um regelmäßig die neuesten Änderungen auf jedes sekundäre Konto zu übertragen.
For instructions, see Replizieren von Kontoobjekten und Datenbanken.
Heraufstufen eines Zielkontos zum Quellkonto¶
Sie können ein Zielkonto zum Quellkonto machen (Failover), indem Sie Snowsight oder SQL verwenden.
For more information about the kinds of objects you can specify in a failover group, see Replikationsgruppen und Failover-Gruppen.
Promote a target account to serve as the source account using Snowsight¶
Bemerkung
Only account administrators can edit a replication or failover group using Snowsight (see Einschränkungen bei der Verwendung von Snowsight für die Replikationskonfiguration).
Für eine konsistente und zuverlässige Failover-Erfahrung wählen Sie alle geeigneten Failover-Gruppen und -Verbindungen aus und stufen Sie sie alle gleichzeitig herauf. Wir bezeichnen diesen Vorgang als Massen-Failover.
To promote a target account to serve as the source account using Snowsight, follow these steps:
Melden Sie sich bei an Snowsight. Stellen Sie sicher, dass Sie sich mit dem Zielkonto anmelden.
Wählen Sie im Navigationsmenü die Option Admin » Accounts aus.
Wählen Sie Replication und dann Initiate failover aus. Daraufhin wird ein Dialogfeld angezeigt, in dem Sie die übrigen Auswahlmöglichkeiten treffen.
Wählen Sie alle Failover-Gruppen aus, die heraufgestuft werden sollen. Nach dem Failover sind die in diesen Failover-Gruppen angegebenen Objekte auf dem neu heraufgestuften Primärkonto beschreibbar. Diese Objekte werden für das Konto, das zuvor das Primärkonto war und nun ein Sekundärkonto ist, schreibgeschützt.
Wählen Sie Next aus.
Wählen Sie alle Verbindungen aus, die heraufgestuft werden sollen. Nach dem Failover werden diese Verbindungen mit dem Konto verbunden, das Sie zum neuen Primärkonto heraufstufen möchten.
Wählen Sie Next aus.
Select Fail over in the confirmation window.
Wenn für die von Ihnen ausgewählten Failover-Gruppen Aktualisierungsoperationen ausgeführt werden, können Sie warten, bis diese Aktualisierungen abgeschlossen sind, oder Sie wählen einen alternativen Ansatz, wenn Ihr Failover dringend ist und Vorrang haben sollte.
Die Standardaktion besteht darin, auf den Abschluss der Aktualisierungen zu warten. In diesem Fall befinden sich das primäre und das sekundäre System alle in einem konsistenten Zustand, wenn das Massen-Failover ausgeführt wird. Snowflake verwendet Ihr aktuell ausgewähltes Warehouse, um den Status der laufenden Aktualisierungen abzufragen. Wenn Sie kein Warehouse ausgewählt haben, wählen Sie jetzt mit der Option Select warehouse eines aus.
Oder Sie können sofort mit dem Failover fortfahren, indem Sie Show advanced options auswählen.
Um ein Failover nur für die Failover-Gruppen auszuführen, die derzeit nicht aktualisiert werden, wählen Sie Exit with current progress aus. In diesem Fall werden Sie später zusätzliche Aktualisierungen für die Gruppen ausführen, die während des Massen-Failovers übersprungen wurden.
Um die Aktualisierungsoperationen abzubrechen und das Failover fortzusetzen, wählen Sie Cancel refreshes and force failover aus. In diesem Fall müssen Sie möglicherweise alle Inkonsistenzen auf dem Sekundärsystem durch die unterbrochenen Aktualisierungen bereinigen.
Wenn die Failover-Operation nicht für alle Failover-Gruppen abgeschlossen wurde, können Sie ein weiteres Massen-Failover ausführen. Sie können aber auch die verbleibenden Failover-Gruppen nacheinander übergeben, indem Sie die Prozedur unter Promote a single failover group to serve as the primary using Snowsight verwenden.
Promote a single failover group to serve as the primary using Snowsight¶
Bemerkung
Only account administrators can edit a replication or failover group using Snowsight (see Einschränkungen bei der Verwendung von Snowsight für die Replikationskonfiguration).
Um eine einzelne Failover-Gruppe mit Snowsight zur primären Gruppe heraufzustufen, führen Sie die folgenden Schritte aus:
Melden Sie sich bei an Snowsight. Stellen Sie sicher, dass Sie sich mit dem Zielkonto anmelden.
Wählen Sie im Navigationsmenü die Option Admin » Accounts aus.
Wählen Sie Replication und dann Groups aus.
Suchen Sie die Failover-Gruppe, die Sie verschieben möchten, und wählen Sie das Menü More (…) in der letzten Spalte der Zeile.
Wählen Sie Fail over, und wählen Sie dann im Bestätigungsfenster Fail over.
Tipp
Sie verwenden dieses Verfahren normalerweise, wenn ein Problem beim Failover einer Gruppe auftritt und Sie das Failover nur für diese Gruppe wiederholen müssen. Um ein gesamtes Konto zum primären Konto zu machen, wählen Sie mehrere Failover-Gruppen und -Verbindungen aus und führen Sie ein Massen-Failover aus. Weitere Informationen dazu finden Sie unter Promote a target account to serve as the source account using Snowsight.
Heraufstufen eines Zielkontos zum Quellkonto mit SQL¶
To promote a target account to serve as the source account using SQL, you sign in to the target account and execute the ALTER FAILOVER GROUP … PRIMARY command.
Heraufstufen einer sekundären Failover-Gruppe zur primären Failover-Gruppe¶
Bemerkung
Das Beispiel in diesem Abschnitt muss von einer Rolle mit FAILOVER-Berechtigung ausgeführt werden.
Im folgenden Beispiel wird das Konto myaccount2 der aktuellen Organisation myorg heraufgestuft, um als Quellkonto zu dienen.
Melden Sie sich beim Zielkonto
myaccount2an.Zeigen Sie die Failover-Gruppen im Konto an:
SHOW FAILOVER GROUPS;
Führen Sie die folgende Anweisung für jede sekundäre Failover-Gruppe aus, die Sie zur primären Failover-Gruppe heraufstufen möchten:
ALTER FAILOVER GROUP myfg PRIMARY;
Bemerkung
Während eines teilweisen Ausfalls in Ihrer Quellregion ist der Replikationsdienst möglicherweise weiterhin verfügbar und kann weiterhin die sekundären Failover-Gruppen in den Zielregionen aktualisieren.
Um die Datenintegrität sicherzustellen, verhindert Snowflake ein Failover, wenn gerade eine Aktualisierungsoperation ausgeführt wird. Das bedeutet, dass Sie eine sekundäre Failover-Gruppe nicht zur primären heraufstufen können, wenn sie gerade durch eine Replikationsoperation aktualisiert wird. Der Befehl ALTER FAILOVER GROUP … PRIMARY gibt in diesem Szenario einen Fehler zurück.
Beheben eines Fehlers der Failover-Anweisung aufgrund einer laufenden Aktualisierungsoperation¶
Wenn für die sekundäre Failover-Gruppe, die Sie heraufstufen möchten, gerade eine Aktualisierungsoperation ausgeführt wird, führt die Failover-Anweisung zu folgendem Fehler:
Replication group "<GROUP_NAME>" cannot currently be set as primary because it is being
refreshed. Either wait for the refresh to finish or cancel the refresh and try again.
Für ein erfolgreiches Failover müssen Sie die folgenden Schritte ausführen.
Entscheiden Sie sich für eine der folgenden Optionen:
Wichtig
Das Anhalten einer Aktualisierungsoperation in der Phase SECONDARY_DOWNLOADING_METADATA oder SECONDARY_DOWNLOADING_DATA kann zu einem inkonsistenten Zustand des Zielkontos führen. Weitere Informationen dazu finden Sie unter Aktuelle Phase einer laufenden Aktualisierungsoperation anzeigen.
Setzen Sie zukünftige Aktualisierungsoperationen für die Failover-Gruppe aus. Wenn eine Aktualisierungsoperation gerade ausgeführt wird, müssen Sie warten, bis sie abgeschlossen ist, bevor Sie ein Failover durchführen können:
ALTER FAILOVER GROUP myfg SUSPEND;
Setzen Sie zukünftige Aktualisierungsoperationen aus und brechen Sie eine geplante Aktualisierungsoperation ab, die gerade ausgeführt wird (falls es einen gibt).
Informationen für den Fall, dass die laufende Aktualisierungsoperation manuell ausgelöst wurde, finden Sie unter Laufende Aktualisierungsoperation abbrechen, die nicht automatisch geplant wurde.
ALTER FAILOVER GROUP myfg SUSPEND IMMEDIATE;
Bemerkung
Möglicherweise kommt es zu einer leichten Verzögerung zwischen dem Zeitpunkt, an dem die Anweisung zurückkehrt, und dem Zeitpunkt, an dem der Abbruch der Aktualisierungsoperation abgeschlossen ist.
Stellen Sie sicher, dass gerade keine Aktualisierungsoperationen für die Failover-Gruppe
myfgausgeführt werden. Die folgende Abfrage darf keine Ergebnisse zurückgeben:SELECT phase_name, start_time, job_uuid FROM TABLE(INFORMATION_SCHEMA.REPLICATION_GROUP_REFRESH_HISTORY('myfg')) WHERE phase_name <> 'COMPLETED' and phase_name <> 'CANCELED';
Um abgebrochene Aktualisierungsoperationen für die Failover-Gruppe
myfganzuzeigen, können Sie die folgende Anweisung ausführen:SELECT phase_name, start_time, job_uuid FROM TABLE(INFORMATION_SCHEMA.REPLICATION_GROUP_REFRESH_HISTORY('myfg')) WHERE phase_name = 'CANCELED';
Jetzt können Sie die sekundäre Failover-Gruppe
myfgzur primären Failover-Gruppe heraufstufen:ALTER FAILOVER GROUP myfg PRIMARY;
Geplante Replikation in Zielkonten fortsetzen¶
Beim Failover werden die geplanten Aktualisierungen auf allen sekundären Failover-Gruppen angehalten. ALTER FAILOVER GROUP … RESUME muss in jedem Zielkonto mit einer sekundären Failover-Gruppe ausgeführt werden, damit die automatischen Aktualisierungen fortgesetzt werden.
ALTER FAILOVER GROUP myfg RESUME;
Aktuelle Phase einer laufenden Aktualisierungsoperation anzeigen¶
Eine Aktualisierungsoperation kann in den meisten Phasen der Aktualisierungsoperation sicher abgebrochen werden. Wenn Sie jedoch eine Aktualisierungsoperation in der Phase SECONDARY_DOWNLOADING_METADATA oder SECONDARY_DOWNLOADING_DATA abbrechen, kann dies zu einem inkonsistenten Status des Zielkontos führen. Wenn die Aktualisierungsoperation eine dieser Phasen gestartet hat, wird sie unabhängig von der Verfügbarkeit des Quellkontos abgeschlossen. Wenn Sie die Phase vor dem Failover abschließen, wird sichergestellt, dass sich die Replikate in einem konsistenten Zustand befinden. Nachdem die Replikate in einem konsistenten Zustand sind, können Sie Ihre Datenaufnahme- und Transformationspipelines fortsetzen oder wiederholen, um die Replikate auf den aktuellen Stand zu bringen.
Um die aktuelle Phase einer laufenden Aktualisierungsoperation für eine Failover-Gruppe anzuzeigen, verwenden Sie die Information Schema-Tabellenfunktion REPLICATION_GROUP_REFRESH_PROGRESS, REPLICATION_GROUP_REFRESH_PROGRESS_BY_JOB, REPLICATION_GROUP_REFRESH_PROGRESS_ALL.
Um beispielsweise die aktuelle Phase einer laufenden Aktualisierungsoperation für die Failover-Gruppe myfg anzuzeigen, führen Sie die folgende Anweisung aus:
SELECT phase_name, start_time, end_time
FROM TABLE(
INFORMATION_SCHEMA.REPLICATION_GROUP_REFRESH_PROGRESS('myfg')
);
Eine Liste der Phasen von Aktualisierungsoperationen finden Sie in den Nutzungshinweisen der Funktion.
Laufende Aktualisierungsoperation abbrechen, die nicht automatisch geplant wurde¶
Um eine laufende Aktualisierungsoperation abzubrechen, die nicht automatisch durch einen Replikationsplan ausgelöst wurde, müssen Sie die Funktion SYSTEM$CANCEL_QUERY verwenden:
Suchen Sie die Abfrage-ID oder die JOB_UUID für die Ausführung von Aktualisierungsoperationen mit einer der folgenden Optionen:
Suchen Sie die Abfrage-IDs für alle laufenden Aktualisierungsoperationen:
SELECT query_id, query_text FROM TABLE(INFORMATION_SCHEMA.QUERY_HISTORY()) WHERE query_type = 'REFRESH REPLICATION GROUP' AND execution_status = 'RUNNING' ORDER BY start_time;
Verwenden Sie die Spalte QUERY_TEXT, um die QUERY_ID für Aktualisierungsoperationen von Failover-Gruppen in der Liste zu identifizieren.
Suchen der JOB_UUID einer laufenden Aktualisierungsoperation für eine bestimmte Failover-Gruppe
myfg:SELECT phase_name, start_time, job_uuid FROM TABLE(INFORMATION_SCHEMA.REPLICATION_GROUP_REFRESH_HISTORY('myfg')) WHERE phase_name <> 'COMPLETED' and phase_name <> 'CANCELED';
Brechen Sie die Aktualisierungsoperation mit der Funktion SYSTEM$CANCEL_QUERY und der QUERY_ID bzw. JOB_UUID ab:
SELECT SYSTEM$CANCEL_QUERY('<QUERY_ID | JOB_UUID>');
Folgende Ausgabe wird zurückgegeben:
query [<QUERY_ID>] terminated.Nachdem Sie die laufende Aktualisierungsoperation abgebrochen haben, fahren Sie mit den nächsten Schritten fort.
Aktive Kanäle für Snowpipe Streaming im neu heraufgestuften Quellkonto wieder öffnen¶
Tabellen in einer Primärdatenbank, die von Snowpipe Streaming befüllt werden, werden per Snowpipe Streaming-Replikation in Sekundärdatenbanken repliziert. Öffnen Sie nach dem Failover aktive Snowpipe Streaming-Kanäle für Tabellen erneut, und fügen Sie alle fehlenden Datenzeilen für die Kanäle neu ein:
Öffnen Sie die aktiven Kanäle für die Tabelle erneut, indem Sie die API openChannel aufrufen.
So rufen Sie Offset-Token ab:
Rufen Sie die API getLatestCommittedOffsetToken auf oder
Führen Sie den Befehl SHOW CHANNELS aus, um eine Liste der aktiven Kanäle der Tabelle abzurufen.
Fügen Sie die Datenzeilen für den Kanal aus den abgerufenen Offset-Tokens wieder ein.
Bemerkung
Diese Schritte gelten nur für Snowpipe Streaming mit dem Snowflake Ingest SDK; sie gelten nicht für Snowpipe Streaming mit dem Kafka Connector. Führen Sie die folgenden Schritte aus, um den Kafka Connector nach dem Failover neu zu starten.
Snowpipe Streaming und der Kafka-Konnektor¶
Wenn Sie den Kafka-Konnektor und Snowpipe Streaming verwenden, führen Sie nach dem Failover die folgenden Schritte aus:
Aktualisieren Sie die Konfiguration des Kafka-Konnektors, sodass dieser auf das neu heraufgestufte Quellkonto verweist.
Führen Sie den Befehl SHOW CHANNELS aus, um die Liste der aktiven Kanäle und der Offset-Token abzurufen. Jeder Kanal gehört zu einer einzelnen Partition im Kafka-Thema.
Setzen Sie die Offsets im Kafka-Thema für jede dieser Partitionen (Kanäle) manuell zurück.
Starten Sie den Kafka-Konnektor neu.
For more information, see: