DATABASES → STACKIT · ARCHITECTUUR

Databasemigratie naar STACKIT: architectuur en compatibiliteit

PostgreSQL, MySQL, SQL Server en Redis-compatibele caches komen elk uit op een managed service van STACKIT, MySQL op MariaDB; DynamoDB en Oracle Database niet: dat zijn redesignbeslissingen. We beoordeelden met StackToIT een AWS-dataomgeving: negen eenheden, waarvan zes datastores (een RDS-instance elk voor PostgreSQL, MySQL en SQL Server, een Aurora PostgreSQL-cluster, een ElastiCache-groep en een DynamoDB-tabel) en drie voor het netwerk. Deze pagina toont het doel per engine, de instellingen die elk concept wijzigt, welke engine ook, en de keuzes die bij uw architecten blijven.

Een Multi-AZ PostgreSQL-instance, omgezet

Een kleine omgeving voor deze pagina, op 4 november 2026 beoordeeld door StackToIT. Links: de RDS-instance uit de invoer. Rechts: de PostgreSQL Flex-instance die de engine schreef (de reviewopmerkingen boven het blok in het bestand zijn weggelaten).

Voorbeeldinvoermain.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 van 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 wordt een replica-flavor

    De klasse met 4 vCPU en 16 GiB met een standby wordt 4.32-replica, 4 vCPU en 32 GiB: de kleinste flavor met hoge beschikbaarheid die dit afdekt in de eu01-catalogus die de run las. Het concept zegt niets over het gedrag bij een failover; geen enkele STACKIT-pagina die de run las, zegt dat.

  • Opslag wordt naar boven afgerond

    300 GiB wordt 323. STACKIT geeft de grootte alleen in gigabytes, dus het concept rekent om met 10^9 bytes per GB en rondt naar boven af, nooit naar minder dan de bron.

  • Retentie en toegang veranderen

    14 dagen back-ups worden retention_days 32, gemarkeerd als TRANSFORMED. De toegangslijst is een variabele zonder standaardwaarde, omdat niet is bewezen dat de bron openbaar is en het STACKIT-endpoint via een toegangslijst wordt bereikt.

Een key-value-tabel, opnieuw ontworpen

Uit dezelfde run. DynamoDB heeft geen tegenhanger, dus de run classificeert de tabel als REDESIGN en stelt één alternatief op: een MongoDB Flex-instance voor de tabellen van de omgeving.

Voorbeeldinvoermain.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 van 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
  }
}
  • Een alternatief, geen equivalent

    De run geeft dat aan in de motivering: sleutelontwerp, capaciteitsmodi en voorwaardelijke schrijfacties worden niet overgenomen. PostgreSQL Flex met JSONB-kolommen is de andere optie.

  • Applicatiewerk, geen datawerk

    De reviewregels vereisen dat de datatoegangslaag wordt herschreven voor de MongoDB API en dat de instance wordt gedimensioneerd op datavolume en belasting, omdat capaciteitseenheden niet vertaalbaar zijn.

Engine voor engine: doel en klasse

Eén rij per datastore van de run, allemaal zekerheidsniveau MEDIUM, plus het Oracle Database-systeem uit de Oracle Cloud-run van onze vergelijking van bronclouds.

BroneenheidSTACKIT-doel en klasseEerst testen
RDS PostgreSQLPostgreSQL Flex · REPLATFORMVergelijk de geïnstalleerde extensies met de lijst met ondersteunde extensies van PostgreSQL Flex; plan logische replicatie of een dumpvenster
Aurora PostgreSQL clusterPostgreSQL Flex · REPLATFORMFuncties die alleen Aurora kent (automatische schaling van opslag, snelle clones, globale databases, serverless schaling) hebben geen equivalent
RDS MySQLMariaDB · REPLATFORMSTACKIT heeft geen MySQL-product. Draai de testsuite van de applicatie tegen MariaDB: JSON-functies, randgevallen van window-functies, authenticatieplugins
RDS SQL ServerSQLServer Flex (SQL Server 2022) · REPLATFORMSQL Agent-jobs, linked servers en CLR-assemblies. De functiepagina van SQLServer Flex noemt SQL Server Agent als ondersteund en linked servers, replicatie en TDE als niet ondersteund
ElastiCache RedisKey Value Store (Valkey) · RECONFIGUREValkey meldt compatibiliteit met Redis OSS 7.2 en eerder; databestanden van Redis Community Edition 7.4 en later zijn niet compatibel
DynamoDB-tabelMongoDB Flex of PostgreSQL Flex (JSONB) · REDESIGNHerschrijf de toegangslaag; sleutels, capaciteitsmodi en voorwaardelijke schrijfacties worden niet overgenomen
Oracle Database-systeem (Oracle Cloud-run)Geen STACKIT-dienst · REDESIGN, zekerheidsniveau LOWKies tussen een nieuwe engine met conversie en zelf beheerde Oracle onder uw eigen licentie

Klassen en tests zijn die van de run zelf, overgenomen uit assessment.json. Per november 2026 meldt de MariaDB-pagina van STACKIT dat versie 10.6 is verouderd (deprecated) en op 1 juli 2027 wordt ontmanteld, en verzoekt om uiterlijk op die datum 10.11 of nieuwer te gebruiken.

Wat het concept op elke instance wijzigt

InstellingIn de bronIn het concept
NetwerkplaatsingPrivé-subnets via een subnet groupEen eigen endpoint, beperkt door een toegangslijst uit een variabele zonder standaardwaarde; de subnet group wordt vastgelegd als niet overgenomen
BeheerderswachtwoordIngesteld in de TerraformNiet gekopieerd. STACKIT genereert het, het concept toont het als gevoelige uitvoer en clients krijgen de nieuwe waarde vóór de cutover
Retentie van back-ups7 of 14 dagen; niet ingesteld op het Aurora-clusterPostgreSQL Flex: 32 dagen, SQLServer Flex: 30 dagen. MariaDB kent geen instelling: STACKIT maakt elke 4 uur een back-up en bewaart die 14 dagen, en de back-uppagina beschrijft geen point-in-time restore
Point-in-time recoveryTransactielogs van RDS, herstel naar elk punt in het vensterPostgreSQL Flex herstelt een back-up of een tijdstip in een nieuwe instance (een clone), zonder in-place herstel; de run zegt dat de granulariteit niet wordt vermeld, dus test een herstel op het laatste punt dat u nodig hebt
Opslagallocated_storage in GiBNaar boven afgerond in GB; voor MariaDB en Valkey bepaalt het plan de opslag of de nodes, niet een attribuut
VerwijderenEen laatste snapshot bij verwijderen (skip_final_snapshot op de standaardwaarde false)Geen instelling voor een laatste snapshot: de run vraagt een persoon te beslissen hoe een laatste kopie wordt bewaard. Het overzicht van PostgreSQL Flex waarschuwt dat het verwijderen van een instance zonder instance-beveiliging direct en onomkeerbaar tot dataverlies leidt

De rijen komen uit de commentaren over niet overgenomen eigenschappen, herstel en het register in terraform/data.tf, waarbij het back-upritme van MariaDB en het clone-gedrag van PostgreSQL Flex zijn gecontroleerd aan de hand van de hieronder genoemde STACKIT-documentatie.

Hoe de data verhuist

De run noemt zes stateful eenheden in migration/data-movement.md. Voor elk vermeldt hij dat er geen methode is gekozen, omdat omvang, toegestane downtime en consistentie niet in de bron staan.

  1. Per eenheid een methode kiezen

    Voor PostgreSQL bevat het plan getypeerde stappen voor dump en restore, logische replicatie of een eigen tool. Voor SQL Server beschrijft de overdracht een native back-up van elke database op RDS, een kopie van de .bak-bestanden naar een STACKIT-bucket en een import in SQLServer Flex; de functiepagina van SQLServer Flex zegt dat een herstel alleen naar een nieuwe database gaat.

  2. Oefenen en de tijd meten

    Een preflightstap sluit open controles af (versies, extensies, rollen, netwerk); een proefrun verplaatst een kopie naar een scratchdatabase en legt de tijden vast. Het venster voor de schrijfstop volgt uit die tijden.

  3. Schrijfstop, synchroniseren, reconcile

    Schrijvers worden gestopt, een laatste sync draait, en aantallen, checksums en één applicatiequery worden vergeleken. Het resultaat is een vastgelegd GO of NO-GO. Bij NO-GO wijzen de clients nog naar de onaangeroerde bron.

  4. De verbinding omschakelen

    Clients wijzigen host, poort, databasenaam en inloggegevens. Waar geen enkele resource van de bron naar een database verwijst, noteert het plan dat de applicaties buiten de bron liggen en hun eigenaren ze opsommen.

  5. De weg terug bewaren

    Opruimstappen wachten op de rollbackbeslissing. Daarna is de weg terug de laatste snapshot van de bron, en het plan markeert de ontmanteling van de database als niet omkeerbaar.

Beslissingen van de architect

  • Engine voor MySQL- en Redis-omgevingen

    MariaDB voor MySQL, Valkey voor Redis: een compatibiliteitstest beslist, niet de klasse.

  • Document of relationeel voor DynamoDB

    MongoDB Flex of PostgreSQL Flex met JSONB; beide vergen een herschreven toegangslaag.

  • Bereikbaarheid van elk endpoint

    CIDR's in de toegangslijst, of een Network Area-scope waar uw account die heeft.

  • Niveau van hoge beschikbaarheid

    Enkele node of replica-flavor, afgeleid van de herstelobjectieven, niet alleen van de bronklasse.

  • Oracle Database

    Een nieuwe engine met conversie, of zelf beheerde Oracle onder uw eigen licentie.

  • Methode en venster voor dataverplaatsing

    Eén open beslissing in decisions.json dekt alle zes stateful eenheden, met één lid per eenheid; beantwoord die eenheid voor eenheid.

  • SQL Server-licentie

    De run legt vast dat de STACKIT-pagina's die hij las geen licentievoorwaarden voor SQLServer Flex noemen; leg in het contract vast of de licentie is inbegrepen of u uw eigen licentie gebruikt.

Vragen van databaseteams

Verhuist MySQL ongewijzigd naar MariaDB?

Niet altijd. STACKIT heeft geen MySQL-product, dus MySQL 8-schema's werken meestal op MariaDB, maar JSON-functies, randgevallen van window-functies en authenticatieplugins moeten vóór de cutover worden getest.

Kunnen we een SQL Server .bak-bestand terugzetten in SQLServer Flex?

Het plan van de run voor de SQL Server-eenheid is daarop gebouwd: een native back-up van elke database op RDS, de .bak-bestanden gekopieerd naar een STACKIT-bucket en daarna een import in een SQLServer Flex-instance, eerst geoefend op een scratchinstance. De functiepagina meldt dat een herstel alleen naar een nieuwe database gaat, nooit over een bestaande. De .bak bevat geen logins, jobs of linked servers; de preflight signaleert ze en een persoon maakt ze opnieuw aan.

Gaan databasewachtwoorden mee?

Nee. Het concept kopieert de wachtwoorden van de bron niet. STACKIT genereert de inloggegevens en de applicatie-eigenaren krijgen de nieuwe waarden voordat de verbinding wordt omgeschakeld.

Is Aurora een apart migratiepad?

De run koppelt een Aurora PostgreSQL-cluster net als elke PostgreSQL aan PostgreSQL Flex. Functies die alleen Aurora kent, hebben geen equivalent; de motivering van de eenheid noemt ze.

Bronnen

Uw volgende stap: STACKIT.

Vertel ons over uw omgeving, dan laten wij zien wat StackToIT daarvoor oplevert: doelarchitectuur, Terraform-artefacten en een gestructureerd migratieplan.

Laat uw gegevens achter, onze specialisten nemen contact met u op.

Liever zelf een e-mail sturen? connect@stacktoit.com

Wij gebruiken uw gegevens alleen om dit verzoek te beantwoorden en een mogelijke pilot te bespreken. Privacyverklaring