OCI POSTGRESQL → STACKIT POSTGRESQL FLEX · TUTORIAL

OCI Database with PostgreSQL zu PostgreSQL Flex

Ein verwaltetes PostgreSQL-System in der Oracle Cloud wird auf STACKIT zu einer PostgreSQL-Flex-Instanz; die Daten ziehen per Dump und Restore oder per logischer Replikation um. StackToIT liest den Block oci_psql_db_system, stuft ihn als REPLATFORM ein, benennt die drei STACKIT-Objekte, zu denen er wird, und führt die 19 Einstellungen auf, die Ihr Team von Hand übernimmt. Dieses Tutorial führt eine kleine Demo-Umgebung von der Eingabe bis zum geprüften Plan.

Schritt 1: die Eingabe und was StackToIT dazu festhält

Eine Oracle-Cloud-Umgebung mit vier Ressourcen, für diese Seite geschrieben und am 4. November 2026 von StackToIT bewertet: ein VCN, ein Subnetz, eine Network Security Group und ein PostgreSQL-System mit zwei Knoten. Links der Datenbankblock der Eingabe, unverändert. Rechts die Entscheidung dazu aus assessment.json. Da assessment.json in einer einzigen Zeile geschrieben ist, zeigt der Ausschnitt ausgewählte Felder jeder Einheit, eingerückt und so verschachtelt wie in der Datei, mit unveränderten Werten.

Beispieleingabemain.tf
resource "oci_psql_db_system" "orders" {
  compartment_id              = var.compartment_id
  display_name                = "orders-db"
  db_version                  = "16"
  shape                       = "VM.Standard.E4.Flex"
  instance_count              = 2
  instance_ocpu_count         = 4
  instance_memory_size_in_gbs = 64

  network_details {
    subnet_id = oci_core_subnet.data.id
    nsg_ids   = [oci_core_network_security_group.db.id]
  }

  storage_details {
    is_regionally_durable = true
    system_type           = "OCI_OPTIMIZED_STORAGE"
    iops                  = 75000
  }

  credentials {
    username = "orders_admin"
    password_details {
      password_type  = "VAULT_SECRET"
      secret_id      = var.db_secret_id
      secret_version = "1"
    }
  }

  management_policy {
    maintenance_window_start = "sun 02:00"
    backup_policy {
      kind           = "DAILY"
      backup_start   = "01:00"
      retention_days = 35
    }
    pitr_policy {
      kind         = "STANDARD"
      restore_days = 7
    }
  }
}
StackToIT-Bewertungassessment.json
{
  "id": "oci_psql_db_system.orders",
  "result": {
    "class": "REPLATFORM",
    "confidence": "MEDIUM",
    "target": {
      "service": "STACKIT PostgreSQL Flex",
      "resources": [
        "stackit_postgresflex_instance",
        "stackit_postgresflex_database",
        "stackit_postgresflex_user"
      ]
    },
    "reason": "Managed PostgreSQL to managed PostgreSQL: data moves with pg_dump/pg_restore or logical replication, and the shape becomes a Flex flavor."
  }
}
  • REPLATFORM, mittlere Konfidenz

    Verwaltetes PostgreSQL wird zu verwaltetem PostgreSQL: Das Plattformmodell wechselt, die Engine bleibt. Der Lauf begrenzt die Konfidenz auf MEDIUM, weil für den oci-Provider kein Eintrag in der Lock-Datei vorliegt: Die Version, die ein Plan verwenden würde, ist damit nicht belegt. Committen Sie .terraform.lock.hcl neben dem Root-Modul, dann entfällt die Begrenzung.

  • Drei STACKIT-Objekte

    Das Ziel ist STACKIT PostgreSQL Flex, geschrieben als stackit_postgresflex_instance, stackit_postgresflex_database und stackit_postgresflex_user. Der Lauf führt PostgreSQL Flex im STACKIT-Katalogstand für eu01 und eu02.

  • Für Sie wird nichts entworfen

    Der Terraform-Ordner dieses Laufs enthält nur Provider- und Variablendateien. Bei einer Oracle-Cloud-Quelle bleibt jede Einheit, auch diese Datenbank, Ihren Architekten überlassen; die manuellen Schritte stehen in execution/manual/actions.md.

  • 19 Einstellungen benannt

    engineering/architect-report.md zählt sie für diese Einheit und nennt die ersten fünf; assessment.json führt alle 19 auf: compartment_id, credentials, db_version, display_name, instance_count, instance_memory_size_in_gbs, instance_ocpu_count, shape, Subnetz und Security Groups des Netzwerks, die Storage-Einstellungen und sechs management_policy-Einstellungen zu Backups, Point-in-Time-Recovery und Wartungsfenster.

Schritt 2: die vorgeschlagene Reihenfolge

Der Befehl läuft im Eingabeordner der Demo und schreibt das Ergebnis in den Ausgabeordner daneben, mit den Optionen des Laufs für diese Seite. Liegen OpenTofu im PATH, die Provider-Pakete in einem lokalen Mirror und eine .terraform.lock.hcl in der Quelle vor, können Sie --no-validate weglassen; dann validiert der Lauf die Quelle zusätzlich mit OpenTofu. Die Sequenzdatei ordnet die Einheiten anhand ihrer Abhängigkeiten in Wellen.

Für diese Seite verwendeter Befehlshell
# im Eingabeordner der Demo ausgeführt; der Ausgabeordner liegt daneben
stacktoit assess . ../out --offline --no-validate
StackToIT-Ergebnismigration/technical-sequencing.md
## Wave 1 — 1 unit(s)

| Unit | Class | Target |
|---|---|---|
| `oci_core_vcn.main` | RECONFIGURE / MEDIUM | STACKIT network |

## Wave 2 — 2 unit(s)

| Unit | Class | Target |
|---|---|---|
| `oci_core_network_security_group.db` | RECONFIGURE / MEDIUM | STACKIT security groups |
| `oci_core_subnet.data` | RECONFIGURE / MEDIUM | STACKIT network |

## Wave 3 — 1 unit(s)

| Unit | Class | Target |
|---|---|---|
| `oci_psql_db_system.orders` | REPLATFORM / MEDIUM | STACKIT PostgreSQL Flex |
  • Netzwerk vor den Daten

    Die Datenbank liegt in Welle 3, weil sie vom Subnetz und von der Security Group abhängt, die wiederum vom VCN abhängen. Netzwerk und Security Group müssen auf STACKIT existieren, bevor die Instanz erreichbar ist.

  • Die Datenentscheidung bleibt offen

    migration/data-movement.md führt das System als zustandsbehaftete Einheit mit dem Verfahren UNKNOWN und dem Status DECISION_REQUIRED. Datenmenge, Änderungsrate und die Ausfallzeit, die Ihr Unternehmen toleriert, stehen nicht im Terraform; der Lauf rät sie deshalb nicht.

Schritt 3: was Sie vor dem Apply ändern

Jede Zeile nimmt eine Einstellung der Demo-Eingabe und nennt, was STACKIT stattdessen verlangt. Die Werte der STACKIT-Seite stammen aus der STACKIT-Dokumentation und dem STACKIT-Terraform-Provider 0.121.0; prüfen Sie sie am Tag des Aufbaus erneut.

Einstellung in der OCI-EingabeAuf STACKITWas Sie entscheiden
db_version = "16"version ist Pflicht; PostgreSQL 14, 15, 16, 17 und 18 sind als unterstützt aufgeführtBeginnen Sie mit der höchsten Version, die Ihre Client-Anwendungen unterstützen. Grundsätzlich lässt sich ein Dump eines älteren Servers in einen neueren laden.
shape VM.Standard.E4.Flex, 4 OCPUs, 64 GBflavor_id wie 4.32 (4 CPUs, 32 GB) oder 16.128 (16 CPUs, 128 GB); CPU und RAM gelten pro KnotenKein aufgeführter Flavor hat 64 GB. Dimensionieren Sie nach der Last, nicht nach den OCI-Zahlen; der Flavor lässt sich später wechseln, mit einer Ausfallzeit.
instance_count = 2Eine einzelne Instanz hat einen Knoten, ein Replica Set drei. Im Provider 0.121.0 wählt flavor_id den Typ (das Provider-Beispiel nutzt 4.8-replica); das ältere Attribut replicas (1 oder 3) ist abgekündigtZwei Knoten gibt es auf STACKIT nicht. Wählen Sie einen Knoten oder drei für ausfallsicheren Produktionsbetrieb.
storage iops = 75000, OCI_OPTIMIZED_STORAGEEine Performance-Klasse von premium-perf2-stackit bis premium-perf12-stackit; die höchste nennt 20.000 IOPS und 350 MB/sDie Klasse lässt sich nach dem Anlegen nicht ändern. Läuft das OCI-System wirklich über 20.000 IOPS, planen Sie die Last und nicht nur das Kopieren.
management_policy Backup DAILY 01:00, retention_days = 35backup_schedule als Cron-Ausdruck wie 0 1 * * * (UTC), retention_days zwischen 32 und 90Täglich ist der einzige Rhythmus, den STACKIT anbietet. 35 Tage liegen im erlaubten Bereich.
pitr_policy STANDARD, restore_days = 7Das Transaktionslog ist standardmäßig aktiv; Wiederherstellung auf jeden Zeitpunkt, den die vorhandenen Backups abdeckenEine Wiederherstellung erzeugt einen Klon im selben Projekt. Ein In-Place-Restore gibt es nicht; die Clients werden daher auf den Klon umgestellt.
network_details: Subnetz und Security Groupnetwork.acl, eine Liste mit IPv4-Adressen und -Bereichen; standardmäßig erreichen nur vordefinierte STACKIT-Adressbereiche die InstanzSchreiben Sie die Regeln der Security Group als ACL-Einträge für die Netzwerke um, die sich verbinden.
credentials mit einem Vault-Secretstackit_postgresflex_user, einer je Datenbank-LoginLegen Sie den Benutzer auf STACKIT an und bewahren Sie die Zugangsdaten in dem Secret Store auf, den Sie nach dem Umzug nutzen.

Wartungsfenster: Die Demo setzt sun 02:00. Die hier genutzten STACKIT-Seiten sagen nicht, wie ein Fenster gesetzt wird. Bestätigen Sie es in der PostgreSQL-Flex-Dokumentation, statt ein Äquivalent anzunehmen.

Schritt 4: die Daten umziehen

StackToIT überträgt nie Daten. Diese Schritte sind allgemeine Praxis für einen Umzug von PostgreSQL zu PostgreSQL; die Engine nennt in ihrer Begründung die beiden Verfahren und überlässt Ihnen die Wahl.

  1. Zuerst das Ziel anlegen

    Legen Sie die geprüfte Instanz, die Datenbank und den Benutzer auf STACKIT an. Prüfen Sie, ob die Erweiterungen Ihrer Anwendung zu den 33 gehören, die für PostgreSQL Flex aufgeführt sind, zum Beispiel pgvector, postgis oder pg_trgm.

  2. Dump oder Replikation wählen

    Verträgt die Datenbank ein Wartungsfenster, ist ein Dump der einfache Weg: zum Beispiel pg_dump -Fd -j 4 an der Quelle und pg_restore -j 4 am Ziel. Ist das Fenster kurz, planen Sie logische Replikation und klären Sie auf STACKIT, ob die Instanz sie annimmt, bevor Sie sich darauf verlassen; diese Seite behauptet das nicht.

  3. Probelauf mit Zeitmessung

    Spielen Sie die Daten in eine temporäre Testinstanz ein und messen Sie die Dauer mit Ihrem echten Datenvolumen. Der Lauf kann das nicht, weil die Datenmenge nicht in der Quelle steht.

  4. Cutover

    Schreibstopp an der Quelle setzen, letzten Dump ziehen oder die Replikation auslaufen lassen, wiederherstellen, Ihre Validierungsabfragen laufen lassen und die Anwendung auf den neuen Host und Port umstellen. Lassen Sie das OCI-System unberührt, bis die Prüfungen bestehen; das ist Ihr Rückweg.

  5. Backups und Zuständigkeit einrichten

    Bestätigen Sie, dass das erste tägliche Backup auf STACKIT existiert, und testen Sie einmal einen Klon. Legen Sie die Datenbankbenutzer an, die Ihre Anwendungen brauchen, einen je Login, und geben Sie die Zugangsdaten über Ihren Secret Store an die Verantwortlichen.

Entscheidungen, die Ihre Architekten treffen

  • Ein Knoten oder drei

    Verfügbarkeit ist auf STACKIT eine Wahl des Instanztyps beim Anlegen und keine übernommene OCI-Knotenzahl.

  • Flavor und Performance-Klasse

    Die Performance-Klasse ist nach dem Anlegen fest; dimensionieren Sie sie also mit Reserve. Die Speichergröße lässt sich später erhöhen.

  • Dump oder Replikation

    Abgewogen werden Ausfallzeit und bewegliche Teile. Die Datei zum Datenumzug bleibt offen, bis Sie die Wahl festhalten.

  • Netzwerk-Erreichbarkeit

    Welche Adressbereiche die Datenbank erreichen dürfen. Entscheiden Sie das bewusst und schreiben Sie es als ACL-Einträge; der Standard sind nur die vordefinierten STACKIT-Bereiche.

  • Backup-Aufbewahrung

    32 bis 90 Tage auf STACKIT. Wählen Sie eine Zahl, die zu Ihrer Wiederherstellungsanforderung passt.

  • Wer die Secrets verantwortet

    Legen Sie fest, wo Datenbank-Zugangsdaten liegen, bevor der erste Benutzer entsteht.

Bewiesen an einer echten AWS-Umgebung

Die AWS Retail Store Sample App, ein öffentliches Terraform-Projekt von AWS, von StackToIT bewertet und vollständig veröffentlicht, genau so, wie der Lauf es geschrieben hat.

Fallstudie ansehen (Englisch)
282
Terraform-Ressourcendefinitionen analysiert
44
Migrationseinheiten identifiziert
38
Zieleinheiten erzeugt, von 52 betrachteten
331
Planschritte erstellt

Fragen, die Datenbankteams stellen

Muss die PostgreSQL-Version in OCI zu der auf STACKIT passen?

Nein. STACKIT führt PostgreSQL 14 bis 18. Grundsätzlich lässt sich ein Dump eines älteren Servers in einen neueren laden; dass sich ein Dump in einen älteren Server laden lässt, sagt pg_dump dagegen nicht zu. Testen Sie die Anwendung vor dem Cutover auf der Zielversion.

Kann StackToIT die PostgreSQL-Flex-Instanz für uns anlegen?

Bei einer Oracle-Cloud-Quelle nicht in diesem Lauf. Der Lauf stuft die Datenbank ein, nennt die Zielressourcen und überlässt das Terraform dazu Ihren Architekten. In keiner Cloud wird etwas angelegt.

Was passiert nach dem Umzug mit Point-in-Time-Recovery?

Das Transaktionslog ist auf STACKIT standardmäßig aktiv, und Sie können auf einen Zeitpunkt wiederherstellen, den Ihre Backups abdecken. Eine Wiederherstellung erzeugt eine neue Instanz im selben Projekt; einen In-Place-Restore gibt es nicht.

Woran erkennen wir, dass der Plan die ganze Datenbank abdeckt?

Gehen Sie die 19 Einstellungen durch, die assessment.json für die Einheit aufführt; engineering/architect-report.md nennt ihre Zahl und die ersten fünf. Jede ist eine Zeile, die Ihr Team bewusst auflöst: übernommen, durch eine STACKIT-Einstellung ersetzt oder als nicht nötig festgehalten.

Quellen

Ihr nächster Schritt: STACKIT.

Erzählen Sie uns von Ihrer Umgebung. Wir zeigen Ihnen, was StackToIT dafür liefert: Zielarchitektur, Terraform-Artefakte und einen strukturierten Migrationsplan.