CREATE POSTGRES INSTANCE

Erstellt eine neue:doc:Snowflake Postgres-Instanz </user-guide/snowflake-postgres/about> oder erstellt eine Fork einer bestehenden Instanz.

Durch das Forking wird eine vollständige, unabhängige Kopie einer Instanz zu einem bestimmten Zeitpunkt mithilfe der :doc:` zeitpunktbezogenen Wiederherstellung (PITR )</user-guide/snowflake-postgres/postgres-point-in-time-recovery>` erstellt. Dies ist nützlich für die Wiederherstellung, das Testen oder die Erstellung von Entwicklungsumgebungen aus Produktionsdaten.

Siehe auch:

ALTER POSTGRES INSTANCE , DESCRIBE POSTGRES INSTANCE, DROP POSTGRES INSTANCE , SHOW POSTGRES INSTANCES

Syntax

CREATE POSTGRES INSTANCE <name>
  COMPUTE_FAMILY = '<compute_family>'
  STORAGE_SIZE_GB = <storage_gb>
  AUTHENTICATION_AUTHORITY = { POSTGRES | POSTGRES_OR_SNOWFLAKE }
  [ POSTGRES_VERSION = { 16 | 17 | 18 } ]
  [ NETWORK_POLICY = '<network_policy>' ]
  [ HIGH_AVAILABILITY = { TRUE | FALSE } ]
  [ STORAGE_INTEGRATION = '<storage_integration_name>' ]
  [ POSTGRES_SETTINGS = '<json_string>' ]
  [ COMMENT = '<string_literal>' ]
  [ [ WITH ] TAG ( <tag_name> = '<tag_value>' [ , ... ] ) ]
Copy

Die folgende Syntax erstellt eine Fork einer bestehenden Instanz zu einem bestimmten Zeitpunkt. Die FORK-Klausel verwendet die zeitpunktbezogene Wiederherstellung mit der gleichenAT |BEFORE-Syntax wie Time Travel, erstellt aber eine vollständige physische Kopie der Postgres-Instanz:

CREATE POSTGRES INSTANCE <name>
  FORK <source_instance>
  [ { 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>' [ , ... ] ) ]
Copy

Erforderliche Parameter

name

Gibt den Bezeichner (Namen) für die Postgres-Instanz an. Der Bezeichner muss für das Konto eindeutig sein.

Darüber hinaus muss der Bezeichner mit einem Buchstaben beginnen und darf keine Leer- oder Sonderzeichen enthalten, es sei denn, die gesamte Bezeichnerzeichenfolge wird in doppelte Anführungszeichen gesetzt (z. B. "My object"). Bei Bezeichnern, die in doppelte Anführungszeichen eingeschlossen sind, ist auch die Groß-/Kleinschreibung zu beachten.

Weitere Informationen dazu finden Sie unter Anforderungen an Bezeichner.

COMPUTE_FAMILY = 'compute_family'

Gibt die Größe der Instanz für die Postgres-Instanz an.

Snowflake Postgres bietet drei Stufen an:

  • Burstable (BURST_XS, BURST_S, BURST_M): Kosteneffizient für Entwicklung und zeitweilige Workloads. Beschränkt auf 100GB Speicher und keine Unterstützung für Hochverfügbarkeit.

  • Standard (STANDARD_M bisSTANDARD _24XL): Ausgewogene CPU und Arbeitsspeicher für allgemeine Workloads. Unterstützt alle Features einschließlich Hochverfügbarkeit.

  • Speicheroptimiert (HIGHMEM_L bis HIGHMEM _48XL): Höheres Speicher-zu-CPU-Verhältnis für speicherintensive Abfragen und große Indizes. Unterstützt alle Features einschließlich Hochverfügbarkeit.

Bemerkung

Einige Features erfordern spezielle Computefamilien. Hochverfügbarkeit (HIGH_AVAILABILITY = TRUE) ist beispielsweise nur auf STANDARD-und HIGHMEM-Instanzen, nicht aber auf BURST-Instanzen verfügbar.

STORAGE_SIZE_GB = storage_gb

Gibt die Speichergröße in GB an. Muss zwischen 10 und 65.535 liegen.

Die Abrechnung des Speichers erfolgt getrennt von der Verarbeitung auf der Grundlage der zugewiesenen Menge. Sie können die Speichergröße später mit ALTERPOSTGRESINSTANCE erhöhen oder verringern. Weitere Informationen über Kosten finden Sie unter Snowflake Postgres-Kostenbewertung.

Bemerkung

Wenn Sie die Speichergröße verringern, darf sie nicht zu nahe an der aktuellen Datenmenge der Instanz liegen. Die neue Größe muss mindestens das 1,4-fache der Festplattennutzung betragen, die derzeit von der Instanz verwendet wird. Auf diese Weise ist immer noch Platz, um weitere Daten hinzuzufügen, ohne dass eine automatische Speichererhöhung ausgelöst wird.

AUTHENTICATION_AUTHORITY = { POSTGRES | POSTGRES_OR_SNOWFLAKE }

Gibt die Authentifizierungsmethode für die Instanz an. POSTGRES gibt an, dass nur Postgres-Nutzungskennwörter verwendet werden können.POSTGRES_OR_SNOWFLAKE ermöglicht auch die Verwendung von kurzlebigen Kennwörtern für Zugriffstoken. Weitere Details dazu finden Sie unter Snowflake-Token-Authentifizierung für Snowflake Postgres.

Optionale Parameter

POSTGRES_VERSION = { 16 | 17 | 18 }

Gibt die zu verwendende Hauptversion von Postgres an.

Die neueste Version enthält zwar neue Features und Verbesserungen, aber Sie können auch eine frühere Version wählen, um die Anwendungskompatibilität zu gewährleisten oder um vorhandene Instanzen anzupassen. Sie können später mit ALTERPOSTGRESINSTANCE auf eine neuere Version aktualisieren.

Standard: Die neueste Postgres-Version.

NETWORK_POLICY = 'network_policy'

Gibt die Netzwerkrichtlinie an, die für die Instanz verwendet werden soll. Um diesen Parameter anzugeben, müssen Sie über die USAGE-Berechtigung für das Netzwerkrichtlinienobjekt verfügen.

Standard: Es wird keine Netzwerkrichtlinie angewendet.

Wichtig

Ohne eine Netzwerkrichtlinie kann die Instanz keine eingehenden Verbindungen akzeptieren. Sie können die Instanz weiterhin mit den Befehlen SHOW und DESCRIBE angeben, können aber erst dann eine Verbindung zur Postgres-Datenbank herstellen, wenn Sie eine Netzwerkrichtlinie mit ALTERPOSTGRESINSTANCE zuordnen.

STORAGE_INTEGRATION = 'storage_integration_name'

Fügt eine Speicherintegration vom Typ``POSTGRES_EXTERNAL_STORAGE`` zu der Postgres-Instanz hinzu, sodass die pg_lake-Erweiterung auf Daten in einem externen Objektspeicher zugreifen kann. Die vollständige Einrichtungsprozedur finden Sie unter Konfigurieren von S3-Speicher für „pg_lake“.

Sie können eine Speicherintegration auch später mit ALTER POSTGRES INSTANCE hinzufügen oder entfernen.

Standard: Es ist keine Speicherintegration zugeordnet.

HIGH_AVAILABILITY = { TRUE | FALSE }

Gibt an, ob Hochverfügbarkeit für die Instanz aktiviert werden soll.

Bei Hochverfügbarkeit wird eine Standardinstanz in einer separaten Verfügbarkeitszone für ein automatisches Failover bereitgestellt. Dies minimiert Ausfallzeiten, wenn die primäre Instanz nicht mehr verfügbar ist. Ohne HA erfordert die Wiederherstellung die Wiederherstellung aus einem Backup, was bei großen oder aktiven Instanzen Stunden dauern kann. Beachten Sie, dass für das Aktivieren oder Deaktivieren von HA mitALTERPOSTGRESINSTANCE zu einem späteren Zeitpunkt ein Wartungsvorgang erforderlich ist.

Wichtig

Burstable-Instanzgrößen (BURST_XS, BURST_S, BURST_M) unterstützen keine Hochverfügbarkeit.

Standard: FALSE

POSTGRES_SETTINGS = 'json_string'

Gibt kundenspezifische Postgres-Servereinstellungen für die Instanz imJSON-Format an:

'{"component:name" = "value", ...}'
Copy

Das Format verwendet component:name, wobei``component`` entweder postgres (fürPostgreSQL-Servereinstellungen) oder pgbouncer (für Einstellungen für den Verbindungspooler) ist. Beispiel:

'{"postgres:work_mem" = "128MB", "pgbouncer:default_pool_size" = "200"}'
Copy

Verfügbare Einstellungen finden Sie unter Snowflake Postgres-Servereinstellungen.

Standard: Es werden keine benutzerdefinierten Postgres-Konfigurationsparameter festgelegt.

COMMENT = 'string_literal'

Gibt einen Kommentar für die Postgres-Instanz an.

Kommentare sind nützlich, um den Zweck oder die Eigentümerschaft einer Instanz zu dokumentieren, z. B. „Produktionsinstanz für Abrechnungsservice“ oder „QA-Umgebung für Team X“. Im Gegensatz zu Tags sind Kommentare freier Text und werden nicht für die Organisation oder die Kostenverfolgung verwendet.

Standard: Kein Wert.

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.

Fork-Parameter

Beim Forking einer Snowflake Postgres-Instanz wird eine identische Kopie mit allen Schemaobjekten und Tabellendaten erstellt. Sie können auch einen Zeitpunkt angeben, sodass die geforkte Instanz einen früheren Zustand der Instanz widerspiegelt. Auf diese Weise können Sie Probleme mit der Datenintegrität beheben, z. B. wenn Sie versehentlich Objekte löschen. Sie können auch Szenarios in einer Entwicklungs- und Testumgebung erkunden, z. B. wenn Sie verschiedene Instanzkonfigurationen mit identischen Daten testen. Weitere Informationen dazu finden Sie unter Zeitpunktbezogene Snowflake Postgres-Wiederherstellung.

FORK source_instance

Erstellt eine neue Instanz als Fork (Kopie) der angegebenen Quellinstanz.

{ AT | BEFORE } ( { TIMESTAMP => timestamp | OFFSET => time_difference } )

Gibt den Zeitpunkt an, von dem ab die Fork erstellt werden soll. Sie können nicht von einem Zeitpunkt aus starten, der mehr als 10 Tage zurückliegt. Der Zeitstempel oder Offset muss innerhalb der 10-tägigen Datenaufbewahrungsfrist liegen.

Die AT | BEFORE-Klausel akzeptiert einen der folgenden Parameter:

TIMESTAMP => timestamp

Gibt 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.

OFFSET => time_difference

Gibt die Differenz in Sekunden von der aktuellen Zeit im Format -N an, wobei N eine Ganzzahl oder ein arithmetischer Ausdruck sein kann (z. B. entspricht -120 120 Sekunden; -30*60 entspricht 30 Minuten).

Standard: Verwendet die aktuelle Uhrzeit.

Beim Erstellen einer Fork sind die folgenden Parameter optional und werden standardmäßig auf die Werte aus der Quellinstanz gesetzt:

  • COMPUTE_FAMILY

  • STORAGE_SIZE_GB

  • HIGH_AVAILABILITY

  • POSTGRES_SETTINGS

Ausgabe

Wenn Sie eine neue Instanz erstellen, gibt der Befehl eine Zeile mit den folgenden Spalten zurück:

Spalte

Beschreibung

status

Status des Erstellungsvorgangs.

host

Hostname für die Verbindung mit der Instanz.

access_roles

Benutzernamen und Kennwörter für die``snowflake_admin``- und``application``-Rollen.

default_database

Standarddatenbank für die Instanz.

Wichtig

Die access_roles-Spalte enthält Anmeldeinformationen, die Sie später nicht mehr abrufen können. Speichern Sie diese Details an einem sicheren Ort.

Wenn Sie eine Fork erstellen, gibt der Befehl eine Zeile nur mit status- und host-Spalten zurück. Die Fork verwendet die gleichen Anmeldeinformationen, die die Quellinstanz zu dem Zeitpunkt hatte, dem die Fork entspricht.

Anforderungen an die Zugriffssteuerung

Eine Rolle, die zur Ausführung dieser Operation verwendet wird, muss mindestens die folgenden Berechtigungen haben:

Berechtigung

Objekt

Anmerkungen

CREATE POSTGRES INSTANCE

Konto

Standardmäßig verfügt die Rolle ACCOUNTADMIN über diese Berechtigung.

USAGE

Netzwerkrichtlinie

Nur erforderlich, wenn eine NETWORK_POLICY angegeben wird.

USAGE

Speicherintegration

Nur erforderlich, wenn eine STORAGE_INTEGRATION angegeben wird.

Eine Anleitung zum Erstellen einer kundenspezifischen Rolle mit einer bestimmten Gruppe von Berechtigungen finden Sie unter Erstellen von kundenspezifischen Rollen.

Allgemeine Informationen zu Rollen und Berechtigungen zur Durchführung von SQL-Aktionen auf sicherungsfähigen Objekten finden Sie unter Übersicht zur Zugriffssteuerung.

Nutzungshinweise

  • Das Erstellen einer neuen Instanz nimmt einige Zeit in Anspruch. Die Instanz zeigt bei ihrer Erstellung den aktuellen Status an. Sie können den DESCPOSTGRESINSTANCE-Befehl verwenden, um den Status während der Einrichtung der Instanz zu verfolgen.

  • Wenn Sie eine Fork erstellen, geben Sie die Anmeldeinformationen weder an noch sehen Sie diese. Das liegt daran, dass die Fork die gleichen Anmeldeinformationen verwendet, die die Quellinstanz zu dem Zeitpunkt hatte, dem die Fork entspricht. Sie können die Anmeldeinformationen für die geforkte Instanz später neu generieren, falls Sie einer anderen Benutzergruppe als auf der ursprünglichen Instanz Zugriff gewähren müssen.

  • Die für das Erstellen einer Fork benötigte Zeit hängt von der Datenmenge in der Quellinstanz ab. Größere Datenbanken mit mehr Daten brauchen hierfür länger. Die Computefamilie (Größe der Instanz) der Quelle hat keinen wesentlichen Einfluss auf die Dauer der Fork-Erstellung.

  • Beim Forking wird eine vollständige Datenkopie mithilfe eines Backups und der Wiederherstellung des Write-Ahead-Logs (WAL) erstellt, was bedeutet, dass die geforkte Instanz vollständig unabhängig ist: Wenn Sie die Quellinstanz löschen, hat dies keine Auswirkungen auf die daraus erstellten Forks.

    Bemerkung

    Postgres-Forking ist nicht Teil des Snowflake-Features Time Travel, das die Nullkopie-Technologie für Tabellen verwendet. Beim Forking wird jedoch dieselbe AT | BEFORE-Syntax verwendet, um einen Zeitpunkt anzugeben.

  • Metadaten:

    Achtung

    Kunden müssen sicherstellen, dass bei der Nutzung des Snowflake-Dienstes keine personenbezogenen Daten (außer für ein Objekt „User“), sensible Daten, exportkontrollierte Daten oder andere regulierte Daten als Metadaten eingegeben werden. Weitere Informationen dazu finden Sie unter Metadatenfelder in Snowflake.

Beispiele

Erstellen einer Postgres-Basisinstanz:

CREATE POSTGRES INSTANCE my_postgres
  COMPUTE_FAMILY = 'STANDARD_S'
  STORAGE_SIZE_GB = 50
  AUTHENTICATION_AUTHORITY = POSTGRES;
Copy

Erstellen einer Postgres-Instanz mit Hochverfügbarkeit und einer Netzwerkrichtlinie:

CREATE POSTGRES INSTANCE prod_postgres
  COMPUTE_FAMILY = 'STANDARD_M'
  STORAGE_SIZE_GB = 500
  AUTHENTICATION_AUTHORITY = POSTGRES
  POSTGRES_VERSION = 17
  HIGH_AVAILABILITY = TRUE
  NETWORK_POLICY = 'my_network_policy'
  COMMENT = 'Production Postgres instance';
Copy

Erstellen einer Instanz und späterer Konfiguration einer Netzwerkrichtlinie:

-- Step 1: Create instance without network policy
CREATE POSTGRES INSTANCE my_postgres
  COMPUTE_FAMILY = 'STANDARD_S'
  STORAGE_SIZE_GB = 50
  AUTHENTICATION_AUTHORITY = POSTGRES;

-- Step 2: Monitor instance creation
DESCRIBE POSTGRES INSTANCE my_postgres
  ->> SELECT "property", "value"
      FROM $1
      WHERE "property" IN ('name', 'state', 'host');

-- Step 3: Once READY, attach network policy to enable connections
ALTER POSTGRES INSTANCE my_postgres
  SET NETWORK_POLICY = 'my_network_policy';

-- Step 4: Now you can connect to the Postgres database using the host and credentials
-- from the CREATE output
Copy

Erstellen einer Fork einer bestehenden Instanz:

CREATE POSTGRES INSTANCE my_fork
  FORK my_source_instance;
Copy

Erstellen einer Fork zu einem bestimmten Zeitpunkt:

CREATE POSTGRES INSTANCE my_fork
  FORK my_source_instance
  AT (TIMESTAMP => '2025-01-15 12:00:00'::TIMESTAMP_NTZ);
Copy

Erstellen einer Fork vom Stand vor 2 Stunden mit einer anderen Instanzgröße:

CREATE POSTGRES INSTANCE my_fork
  FORK my_source_instance
  AT (OFFSET => -7200)
  COMPUTE_FAMILY = 'STANDARD_L';
Copy

Erstellen Sie einer Fork für Berichte mit einer größeren Instanzgröße und einem anderen Speicher:

-- Fork production instance for reporting workload
CREATE POSTGRES INSTANCE reporting_instance
  FORK prod_instance
  COMPUTE_FAMILY = 'HIGHMEM_XL'
  STORAGE_SIZE_GB = 500
  COMMENT = 'Dedicated reporting instance to offload analytics queries';
Copy

Erstellen einer Fork um Mitternacht UTC für tägliche Tests:

-- Fork at start of day (midnight UTC)
CREATE POSTGRES INSTANCE daily_test_instance
  FORK prod_instance
  AT (TIMESTAMP => '2026-02-05 00:00:00'::TIMESTAMP_NTZ);
Copy

Erstellen einer Entwicklungs-Fork mit deaktivierter HA, um die Kosten zu reduzieren:

CREATE POSTGRES INSTANCE dev_instance
  FORK prod_instance
  COMPUTE_FAMILY = 'STANDARD_S'
  STORAGE_SIZE_GB = 100
  HIGH_AVAILABILITY = FALSE
  COMMENT = 'Development environment from prod data';
Copy

Wiederherstellung einer versehentlichen Datenlöschung mit einer Fork aus der Zeit vor dem Vorfall:

-- Recover by forking from 30 minutes ago
CREATE POSTGRES INSTANCE recovered_instance
  FORK damaged_instance
  AT (OFFSET => -1800)
  COMMENT = 'Recovery fork from before data deletion';
Copy