Zeitpunktbezogene Snowflake Postgres-Wiederherstellung¶
Übersicht¶
Snowflake Postgres unterstützt das Erstellen von Forks einer Instanz mit zeitpunktbezogener Wiederherstellung (Point In Time Recovery, PITR). Eine Fork ist eine neue Instanz, die den Zustand einer bestehenden Instanz zu einem bestimmten Zeitpunkt widerspiegelt. Eine Fork ist vergleichbar mit einem CLONE-Vorgang in Snowflake Im Gegensatz zu einem CLONE-Vorgang erstellt eine Fork eine vollständige Kopie aller Ursprungsdaten.
Da eine Fork von der Ursprungsinstanz isoliert ist, wirken sich Änderungen, die Sie an der Fork (Schema oder Daten) vornehmen, nicht auf die Ursprungsinstanz aus.
Eine zeitpunktbezogene Wiederherstellung ist nützlich, wenn Sie Folgendes tun müssen:
Wiederherstellen nach versehentlichen Änderungen, wie z. B. gelöschte Tabellen oder falsche Datenaktualisierungen.
Untersuchen des historischen Zustands der Daten zum Debugging oder Auditing.
Testen von Anwendungsänderungen anhand einer realistischen Kopie von Produktionsdaten, ohne die ursprüngliche Instanz zu beeinträchtigen.
Forks werden aus dem letzten Basis-Backup der Ursprungsinstanz erstellt, das vor einem bestimmten Zeitpunkt vorhanden ist. Write Ahead Log(WAL)-Datensätze der Ursprungsinstanz werden bis zu dem ausgewählten Zeitpunkt wiederholt, sodass die Fork-Instanz mit der Ursprungsinstanz zu diesem Zeitpunkt transaktional konsistent ist.
Was in die Fork kopiert wird¶
Wenn Sie eine Fork erstellen, werden die folgenden Merkmale aus der Ursprungsinstanz kopiert:
Die Postgres-Version. Die Version wird aus Gründen der Binärkompatibilität kopiert.
Die Einstellung für Hochverfügbarkeit (aktiviert oder deaktiviert).
Anmeldeinformationen für den Zugriff auf die Instanz.
Sie können einige Eigenschaften für die neue Instanz während der Erstellung anpassen, wie z. B. den Speicher und die Instanzgröße (Plan). Die Preise für die Fork basieren auf der Konfiguration der Fork (Plan, Speicher und hohe Verfügbarkeit), wie bei jeder anderen -Instanz.
Erstellen einer Fork¶
Um eine Postgres-Instanz als Fork einer Ursprungsinstanz zu erstellen, führen Sie den Befehl CREATE POSTGRES INSTANCE aus und geben Sie die Klausel FORK an. Der Befehl erstellt die Fork von der Ursprungsinstanz zu dem durch die AT- oder BEFORE-Klausel angegebenen Zeitpunkt. Wenn Sie diese Klausel weglassen, basiert die Fork auf der Ursprungsinstanz zum aktuellen Zeitpunkt.
CREATE POSTGRES INSTANCE <name>
FORK <orig_name>
[ { AT | BEFORE } ( { TIMESTAMP => <timestamp> | OFFSET => <time_difference> } ) ]
[ COMPUTE_FAMILY = <compute_family> ]
[ STORAGE_SIZE_GB = <storage_gb> ]
[ HIGH_AVAILABILITY = { TRUE | FALSE } ]
[ POSTGRES_SETTINGS = '<json_string>' ]
[ COMMENT = '<string_literal>' ]
[ [ WITH ] TAG ( <tag_name> = '<tag_value>' [ , ... ] ) ]
Für die Befehlsparameter:
FORK orig_nameGibt den Ursprung der Fork an.
{ AT | BEFORE } ( { TIMESTAMP => timestamp | OFFSET => time_difference } )Gibt den Zeitpunkt an, von dem ab die Fork erstellt werden soll. Der Zeitstempel oder Offset muss innerhalb der 10-tägigen Datenaufbewahrungsdauer liegen.
Standard: Verwendet die aktuelle Uhrzeit.
Die AT | BEFORE-Klausel akzeptiert einen der folgenden Parameter:
TIMESTAMP => timestampGibt ein genaues Datum und eine genaue Zeit für Time Travel an. Der Wert muss explizit in einen TIMESTAMP-, TIMESTAMP_LTZ-, TIMESTAMP_NTZ- oder TIMESTAMP_TZ- Datentyp umgewandelt werden.
Wenn kein explizites Umwandeln angegeben wird, wird der Zeitstempel in der AT-Klausel als Zeitstempel mit der Zeitzone UTC behandelt (entspricht TIMESTAMP_NTZ). Die Verwendung des Datentyps TIMESTAMP für ein explizites Umwandeln kann auch dazu führen, dass der Wert als TIMESTAMP_NTZ-Wert behandelt wird. Weitere Details dazu finden Sie unter Datentypen für Datum und Uhrzeit.
OFFSET => time_differenceGibt für Time Travel die Differenz in Sekunden von der aktuellen Zeit im Format
-Nan, wobeiNeine Ganzzahl oder ein arithmetischer Ausdruck sein kann (z. B. entspricht-120120 Sekunden;-30*60entspricht 1.800 Sekunden oder 30 Minuten).
Standard: Vom Ursprung kopiert.
COMPUTE_FAMILY = compute_familyGibt den Namen einer Instanzgröße aus den Snowflake Postgres-Instanzgrößen-Tabellen an.
Standard: Vom Ursprung kopiert.
STORAGE_SIZE_GB = storage_gbGibt die Speichergröße in an GB. Muss zwischen 10 und 65.535 liegen.
Standard: Vom Ursprung kopiert.
HIGH_AVAILABILITY = { TRUE | FALSE }Gibt die Einstellung für Hochverfügbarkeit an, die für die Fork verwendet werden soll.
Standard: Vom Ursprung kopiert.
POSTGRES_SETTINGS = 'json_string'Ermöglicht Ihnen optional das Festlegen von Postgres-Konfigurationsparametern für Ihre -Instanz im JSON-Format. Unter Snowflake Postgres-Servereinstellungen finden Sie eine Liste der verfügbaren Postgres-Parameter.
'{"component:name" = "value", ...}'Standard: Vom Ursprung kopiert.
COMMENT = 'string_literal'Gibt einen Kommentar für den Benutzer an.
Standard:
NULL
TAG ( tag_name = 'tag_value' [ , tag_name = 'tag_value' , ... ] )Gibt den Namen des Tags und den Wert der Tag-Zeichenfolge an.
Der Tag-Wert ist immer eine Zeichenfolge, die maximale 256 Zeichen lang sein kann.
Weitere Informationen zur Angabe von Tags in einer Anweisung finden Sie unter Tag quotas.
Es wird eine Zeile mit den folgenden Spalten zurückgegeben:
statushost
CREATE FORK SQL-Beispiele
Erstellen Sie eine Fork
my_forkaus der ursprünglichen Instanzmy_origin_instancebeim Zeitstempel2025-01-01 12:00:00.CREATE POSTGRES INSTANCE my_fork FORK my_origin_instance AT (TIMESTAMP => '2025-01-01 12:00:00');Erstellen Sie eine Fork
my_forkaus der ursprünglichen Instanzmy_origin_instance, wie sie vor120Sekunden war.CREATE POSTGRES INSTANCE my_fork FORK my_origin_instance AT (OFFSET => -120);Erstellen Sie eine Fork
my_forkaus der ursprünglichen Instanzmy_origin_instancezum aktuellen Zeitpunkt, unter Verwendung derSTANDARD_M-Instanzgröße und ohne hohe Verfügbarkeit.CREATE POSTGRES INSTANCE my_fork FORK my_origin_instance COMPUTE_FAMILY = STANDARD_M HIGH_AVAILABILITY = FALSE;
Wenn Sie eine Fork erstellen, werden keine Anmeldeinformationen angezeigt. Die Anmeldeinformationen für die Fork sind dieselben wie für die ursprüngliche Instanz. Sie können die Anmeldeinformationen bei Bedarf später neu generieren.
Wie lange die Erstellung einer Fork benötigt, hängt von der Größe der ursprünglichen Instanz ab.
