Zeitpunktbezogene Snowflake Postgres-Wiederherstellung¶
Übersicht¶
Snowflake Postgres supports creating forks of an instance using point-in-time recovery (PITR). A fork is a new instance that reflects the state of an existing instance at a specific time. A fork is similar to a CLONE operation in Snowflake. However, unlike the CLONE operation, a fork performs a full copy of all of the origin data.
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 } )Specifies the point in time to fork from. The timestamp or offset must fall within the 10 day postgres data retention time.
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'Allows you to optionally set Postgres configuration parameters on your instance in JSON format. See Snowflake Postgres-Servereinstellungen for a list of available Postgres parameters.
'{"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-Kontingente.
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;
When you create a fork, no credentials will be displayed. Credentials for the fork are the same as the origin instance. You can regenerate credentials later if needed.
Wie lange die Erstellung einer Fork benötigt, hängt von der Größe der ursprünglichen Instanz ab.
