DATENBANKEN → STACKIT · ARCHITEKTUR

Datenbankmigration nach STACKIT: Architektur und Kompatibilität

PostgreSQL, MySQL, SQL Server und Redis-kompatible Caches landen jeweils in einem verwalteten STACKIT-Dienst, MySQL in MariaDB; DynamoDB und Oracle Database nicht; sie sind Redesign-Entscheidungen. Wir haben eine AWS-Datenumgebung mit StackToIT bewertet: neun Einheiten, davon sechs Datenspeicher (je eine RDS-Instanz für PostgreSQL, MySQL und SQL Server, ein Aurora-PostgreSQL-Cluster, eine ElastiCache-Gruppe und eine DynamoDB-Tabelle) und drei für das Netzwerk. Die Seite zeigt das Ziel je Engine, die Einstellungen, die jeder Entwurf unabhängig von der Engine ändert, und die Entscheidungen, die bei Ihren Architekten bleiben.

Eine Multi-AZ-PostgreSQL-Instanz, konvertiert

Eine kleine Umgebung, für diese Seite geschrieben und am 4. November 2026 von StackToIT bewertet. Links die RDS-Instanz der Eingabe. Rechts die PostgreSQL-Flex-Instanz, die die Engine geschrieben hat (die Prüfkommentare über dem Block in der Datei sind ausgelassen).

Beispieleingabemain.tf
resource "aws_db_instance" "ledger" {
  identifier              = "ledger-pg"
  engine                  = "postgres"
  engine_version          = "16.4"
  instance_class          = "db.m6g.xlarge"
  allocated_storage       = 300
  multi_az                = true
  username                = "ledger"
  password                = var.db_password
  db_subnet_group_name    = aws_db_subnet_group.data.name
  backup_retention_period = 14
}
STACKIT-Terraform von StackToITterraform/data.tf
resource "stackit_postgresflex_instance" "ledger" {
  project_id = var.project_id
  name       = "ledger-pg"
  version    = "16"
  flavor_id  = "4.32-replica"
  storage = {
    class = var.postgresflex_storage_class
    size  = 323
  }
  backup_schedule = "0 2 * * *"
  network = {
    acl          = var.ledger_allowed_cidrs
    access_scope = var.ledger_access_scope == "SNA" ? "SNA" : null
  }
  retention_days = 32
}
  • Multi-AZ wird zum Replica-Flavor

    Die Klasse mit 4 vCPU und 16 GiB samt Standby wird zu 4.32-replica, 4 vCPU und 32 GiB, dem kleinsten Hochverfügbarkeits-Flavor, der sie im vom Lauf gelesenen eu01-Katalog abdeckt. Der Entwurf behauptet nichts über das Failover-Verhalten; keine vom Lauf gelesene STACKIT-Seite nennt es.

  • Speicher wird aufgerundet

    Aus 300 GiB werden 323. STACKIT nennt die Größe nur in Gigabyte; deshalb rechnet der Entwurf mit 10^9 Byte je GB und rundet auf, nie unter die Quelle.

  • Aufbewahrung und Zugriff ändern sich

    14 Tage Backups werden zu retention_days 32, markiert als TRANSFORMED. Die Zugriffsliste ist eine Variable ohne Standardwert, weil die Quelle nicht als öffentlich belegt ist und der STACKIT-Endpunkt über eine Zugriffsliste erreicht wird.

Eine Key-Value-Tabelle, neu entworfen

Aus demselben Lauf. DynamoDB hat kein Gegenstück; deshalb stuft der Lauf die Tabelle als REDESIGN ein und entwirft eine Alternative: eine MongoDB-Flex-Instanz für die Tabellen der Umgebung.

Beispieleingabemain.tf
resource "aws_dynamodb_table" "carts" {
  name         = "carts"
  billing_mode = "PAY_PER_REQUEST"
  hash_key     = "cart_id"

  attribute {
    name = "cart_id"
    type = "S"
  }

  ttl {
    attribute_name = "expires_at"
    enabled        = true
  }
}
STACKIT-Terraform von StackToITterraform/data.tf
resource "stackit_mongodbflex_instance" "dynamodb_tables" {
  project_id = var.project_id
  name       = "dynamodb-tables"
  acl        = var.dynamodb_tables_allowed_cidrs
  version    = var.dynamodb_tables_version
  flavor = {
    cpu = var.dynamodb_tables_cpu
    ram = var.dynamodb_tables_ram
  }
  replicas = 3
  storage = {
    class = var.mongodbflex_storage_class
    size  = var.dynamodb_tables_storage_gb
  }
  backup_schedule = "0 2 * * *"
  options = {
    type                       = "Replica"
    point_in_time_window_hours = var.dynamodb_tables_pitr_hours
  }
}
  • Eine Alternative, kein Äquivalent

    Der Lauf sagt das in seiner Begründung: Schlüsseldesign, Kapazitätsmodi und bedingte Schreibvorgänge werden nicht übernommen. PostgreSQL Flex mit JSONB-Spalten ist die andere Option.

  • Anwendungsarbeit, keine Datenarbeit

    Die Prüfzeilen verlangen, die Datenzugriffsschicht gegen die MongoDB-API neu zu schreiben und die Instanz nach Datenvolumen und Anfragelast zu dimensionieren, weil sich Kapazitätseinheiten nicht übertragen lassen.

Engine für Engine: Ziel und Klasse

Eine Zeile je Datenspeicher des Laufs, alle mit MEDIUM-Konfidenz, dazu das Oracle-Datenbanksystem aus dem Oracle-Cloud-Lauf unseres Quellenvergleichs.

QuelleinheitSTACKIT-Ziel und KlasseZuerst testen
RDS PostgreSQLPostgreSQL Flex · REPLATFORMInstallierte Erweiterungen mit der Liste unterstützter Erweiterungen von PostgreSQL Flex vergleichen; logische Replikation oder Dump-Fenster planen
Aurora-PostgreSQL-ClusterPostgreSQL Flex · REPLATFORMNur-Aurora-Funktionen (automatisches Storage-Scaling, Fast Clones, Global Databases, Serverless-Skalierung) haben kein Gegenstück
RDS MySQLMariaDB · REPLATFORMSTACKIT hat kein MySQL-Produkt. Testsuite der Anwendung gegen MariaDB laufen lassen: JSON-Funktionen, Randfälle bei Window-Funktionen, Authentifizierungs-Plugins
RDS SQL ServerSQLServer Flex (SQL Server 2022) · REPLATFORMSQL-Agent-Jobs, Linked Server und CLR-Assemblies. Die Funktionsseite von SQLServer Flex führt den SQL Server Agent als unterstützt, Linked Server, Replikation und TDE als nicht unterstützt
ElastiCache RedisKey Value Store (Valkey) · RECONFIGUREValkey nennt Kompatibilität mit Redis OSS 7.2 und früher; Datendateien der Redis Community Edition ab 7.4 sind nicht kompatibel
DynamoDB-TabelleMongoDB Flex oder PostgreSQL Flex (JSONB) · REDESIGNZugriffsschicht neu schreiben; Schlüssel, Kapazitätsmodi und bedingte Schreibvorgänge werden nicht übernommen
Oracle-Datenbanksystem (Oracle-Cloud-Lauf)Kein STACKIT-Dienst · REDESIGN, LOW-KonfidenzZwischen neuer Engine mit Konvertierung und selbst betriebenem Oracle unter eigener Lizenz entscheiden

Klassen und Tests stammen aus dem assessment.json des Laufs. Stand November 2026 nennt die MariaDB-Seite von STACKIT Version 10.6 als veraltet, mit geplanter Abschaltung am 1. Juli 2027, und verlangt bis dahin 10.11 oder neuer.

Was der Entwurf an jeder Instanz ändert

EinstellungIn der QuelleIm Entwurf
NetzwerkplatzierungPrivate Subnetze über eine SubnetzgruppeEin eigener Endpunkt, begrenzt durch eine Zugriffsliste aus einer Variable ohne Standardwert; die Subnetzgruppe ist als nicht übernommen vermerkt
AdministratorpasswortIm Terraform gesetztNicht kopiert. STACKIT erzeugt es, der Entwurf gibt es als sensible Ausgabe aus, und die Clients erhalten den neuen Wert vor dem Cutover
Backup-Aufbewahrung7 oder 14 Tage; beim Aurora-Cluster nicht gesetztPostgreSQL Flex: 32 Tage, SQLServer Flex: 30 Tage. MariaDB hat keine Einstellung: STACKIT sichert alle 4 Stunden und hält die Backups 14 Tage; eine Point-in-Time-Wiederherstellung beschreibt die Backup-Seite nicht
Point-in-Time-RecoveryRDS-Transaktionslogs, Wiederherstellung auf jeden Zeitpunkt im FensterPostgreSQL Flex stellt ein Backup oder einen Zeitpunkt in eine neue Instanz wieder her (Klon), nicht an Ort und Stelle; laut Lauf ist die Granularität nicht angegeben; testen Sie daher eine Wiederherstellung zum spätesten benötigten Zeitpunkt
Speicherallocated_storage in GiBIn GB aufgerundet; bei MariaDB und Valkey definiert der Plan Speicher oder Knoten, nicht ein Attribut
LöschenEin letzter Snapshot beim Löschen (skip_final_snapshot steht auf dem Standardwert false)Keine Final-Snapshot-Einstellung: Der Lauf überlässt einer Person, wie eine letzte Kopie aufbewahrt wird. Die PostgreSQL-Flex-Übersicht warnt, dass das Löschen einer Instanz ohne Instanzschutz die Daten sofort und endgültig vernichtet

Die Zeilen stammen aus den Kommentaren in terraform/data.tf zu nicht Übernommenem, zur Wiederherstellung und zum Ledger; Backup-Takt von MariaDB und Klonverhalten von PostgreSQL Flex sind gegen die unten genannte STACKIT-Dokumentation geprüft.

So werden die Daten übertragen

Der Lauf listet in migration/data-movement.md sechs zustandsbehaftete Einheiten. Für jede hält er fest, dass keine Methode gewählt ist, weil Größe, tolerierte Ausfallzeit und Konsistenz nicht in der Quelle stehen.

  1. Eine Methode je Einheit wählen

    Für PostgreSQL enthält der Plan typisierte Schritte für Dump und Restore, logische Replikation oder ein eigenes Werkzeug. Für SQL Server beschreibt die Übergabe ein natives Backup jeder Datenbank auf RDS, das Kopieren der .bak-Dateien in einen STACKIT-Bucket und den Import in SQLServer Flex; laut Funktionsseite von SQLServer Flex geht eine Wiederherstellung nur in eine neue Datenbank.

  2. Generalprobe mit Zeitmessung

    Ein Preflight-Schritt schließt offene Prüfungen (Versionen, Erweiterungen, Rollen, Netzwerk); eine Generalprobe überträgt eine Kopie in eine Scratch-Datenbank und hält die Zeiten fest. Aus diesen Zeiten ergibt sich das Schreibstopp-Fenster.

  3. Schreibstopp, Synchronisierung, Abgleich

    Schreibende Clients werden gestoppt, ein letzter Sync läuft, dann werden Zeilenzahlen, Prüfsummen und eine Anwendungsabfrage verglichen. Ergebnis ist ein festgehaltenes GO oder NO-GO. Bei NO-GO zeigen die Clients weiter auf die unberührte Quelle.

  4. Verbindung umstellen

    Clients ändern Host, Port, Datenbankname und Zugangsdaten. Wo keine Ressource der Quelle auf eine Datenbank verweist, vermerkt der Plan, dass die Anwendungen außerhalb der Quelle liegen und ihre Verantwortlichen sie auflisten.

  5. Den Rückweg offen halten

    Aufräumschritte warten auf die Rollback-Entscheidung. Danach ist der Rückweg der letzte Snapshot der Quelle, und der Plan markiert die Stilllegung der Datenbank als nicht umkehrbar.

Entscheidungen, die Ihre Architekten treffen

  • Engine für MySQL- und Redis-Umgebungen

    MariaDB für MySQL, Valkey für Redis: Ein Kompatibilitätstest entscheidet, nicht die Klasse.

  • Dokument oder relational bei DynamoDB

    MongoDB Flex oder PostgreSQL Flex mit JSONB; in beiden Fällen wird die Zugriffsschicht neu geschrieben.

  • Exponierung jedes Endpunkts

    CIDRs der Zugriffsliste oder ein Network-Area-Scope, wo Ihr Konto ihn hat.

  • Stufe der Hochverfügbarkeit

    Einzelknoten oder Replica-Flavor, aus den Wiederanlaufzielen, nicht allein aus der Quellklasse.

  • Oracle Database

    Neue Engine mit Konvertierung oder selbst betriebenes Oracle unter eigener Lizenz.

  • Methode und Fenster des Datenumzugs

    Eine offene Entscheidung in decisions.json umfasst alle sechs zustandsbehafteten Einheiten, mit einem Eintrag je Einheit; beantworten Sie sie Einheit für Einheit.

  • SQL-Server-Lizenz

    Der Lauf hält fest, dass die gelesenen STACKIT-Seiten für SQLServer Flex keine Lizenzbedingungen nennen; klären Sie im Vertrag, ob die Lizenz enthalten ist oder eine eigene genutzt wird.

Fragen von Datenbankteams

Lässt sich MySQL ohne Änderungen nach MariaDB übertragen?

Nicht immer. STACKIT hat kein MySQL-Produkt; MySQL-8-Schemas laufen meist auf MariaDB, aber JSON-Funktionen, Randfälle bei Window-Funktionen und Authentifizierungs-Plugins müssen vor dem Cutover getestet werden.

Können wir eine SQL-Server-.bak-Datei in SQLServer Flex einspielen?

Der Plan des Laufs für die SQL-Server-Einheit baut darauf auf: ein natives Backup jeder Datenbank auf RDS, die .bak-Dateien in einen STACKIT-Bucket kopiert, dann der Import in eine SQLServer-Flex-Instanz, vorher als Generalprobe auf einer Scratch-Instanz. Die Funktionsseite nennt die Wiederherstellung nur in eine neue Datenbank, nie über eine bestehende. Logins, Jobs und Linked Server stecken nicht in der .bak; der Preflight findet sie, und eine Person legt sie neu an.

Werden Datenbankpasswörter übernommen?

Nein. Der Entwurf kopiert keine Quellpasswörter. STACKIT erzeugt die Zugangsdaten, und die Anwendungsverantwortlichen erhalten die neuen Werte vor der Umstellung der Verbindung.

Ist Aurora ein eigener Migrationspfad?

Der Lauf ordnet einen Aurora-PostgreSQL-Cluster wie jedes PostgreSQL PostgreSQL Flex zu. Nur-Aurora-Funktionen haben kein Gegenstück; die Begründung der Einheit nennt sie.

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.