MySQL und MariaDB zu Supabase migrieren: von MySQL zu PostgreSQL
Timo Wevelsiep•Aktualisiert: 25.08.2026Hinweis zum Inhalt: Versionen, Befehle und Preise können sich ändern. Bitte prüfen Sie kritische Schritte vor dem produktiven Einsatz eigenständig. Dieser Leitfaden ersetzt keine individuelle Beratung.
Der Wechsel von MySQL zu PostgreSQL sollte vor dem Cutover vollständig geprobt werden. WZ-IT bietet die Supabase-Migration ab 3.490 € nach Prüfung von Schema, Daten und Anwendung an.
Eine Migration von MySQL oder MariaDB zu Supabase wechselt nicht nur den Anbieter, sondern auch das Datenbanksystem. Supabase basiert auf PostgreSQL. Tabellen und viele Standarddatentypen lassen sich konvertieren, während SQL-Dialekt, Routinen, Zeichensätze und Anwendungsannahmen eigenständig geprüft werden müssen.
Das Ziel ist deshalb keine möglichst schnelle Kopie, sondern eine reproduzierbare PostgreSQL-Struktur mit überprüften Daten und einer kompatiblen Anwendung.
Warum die Migration mehr als Datenexport ist
MySQL, MariaDB und PostgreSQL unterscheiden sich unter anderem bei:
- Auto-Increment und Sequenzen
- Boolean- und Integer-Verhalten
ENUM,SETund Domain-ModellenUNSIGNED-ZahlenDATETIME,TIMESTAMPund Zeitzonen- Zero Dates und ungültigen Datumswerten
- JSON-Funktionen und Operatoren
- Kollationen, Sortierung und Groß-/Kleinschreibung
- Stored Procedures, Functions, Trigger und Events
- Upserts, Quotes und herstellerspezifischer SQL-Syntax
Ein Import kann technisch erfolgreich enden und trotzdem fachlich falsche Werte, Sortierungen oder Anwendungsfehler erzeugen. Deshalb wird die Abnahme auf Daten- und Verhaltensebene durchgeführt.
Bestand strukturiert aufnehmen
| Bereich | Typische Fragen |
|---|---|
| Engine | MySQL oder MariaDB, Version und Storage Engines |
| Datenmodell | Tabellen, Schlüssel, Constraints, Views und Partitionierung |
| Typen | Unsigned, Enum, JSON, Decimal, Binary und Datum/Zeit |
| Zeichensätze | UTF-8-Varianten, Kollationen und Sortierlogik |
| Logik | Procedures, Functions, Trigger und Events |
| Anwendung | Treiber, ORM, rohe SQL-Abfragen und Migrationstool |
| Betrieb | Größe, Schreiblast, Wartungsfenster und Rückfallziel |
Zusätzlich werden Datenqualitätsprobleme gesucht, die MySQL toleriert, PostgreSQL aber ablehnt. Dazu gehören ungültige Datumswerte, abgeschnittene Texte oder Fremdschlüsselverletzungen.
Zielmodell für PostgreSQL festlegen
Die Konvertierung sollte bewusst dokumentiert werden. Beispiele:
| MySQL/MariaDB | Mögliches PostgreSQL-Ziel |
|---|---|
AUTO_INCREMENT |
Identity-Spalte oder Sequence |
TINYINT(1) |
boolean nach Datenprüfung |
UNSIGNED BIGINT |
größerer Typ oder Constraint |
ENUM |
PostgreSQL Enum, Lookup-Tabelle oder Check Constraint |
DATETIME |
timestamp mit klarer Zeitzonenentscheidung |
JSON |
meist jsonb nach Abfrageprüfung |
| MySQL Event | pg_cron, Worker oder externe Automation |
Die richtige Abbildung hängt vom fachlichen Zweck ab. Eine automatische Konvertierung ist ein Ausgangspunkt, keine fertige Architekturentscheidung.
pgloader oder kontrollierter ETL-Prozess
Die offizielle Supabase-Anleitung nennt einen geführten Colab-Workflow und pgloader. pgloader kann Schema und Daten direkt von MySQL nach PostgreSQL übertragen und viele Typen automatisch abbilden.
Ein eigener ETL- oder Exportprozess ist sinnvoll, wenn:
- nur ausgewählte Daten migriert werden
- Werte vor dem Import bereinigt werden müssen
- große Tabellen inkrementell übertragen werden
- komplexe Typ- und Namensregeln gelten
- jede Transformation nachvollziehbar protokolliert werden soll
Das Verfahren wird nach einer repräsentativen Testmigration festgelegt.
Routinen und Anwendungslogik
Stored Procedures und Functions werden nicht einfach durch einen Datenimport portiert. MySQL- oder MariaDB-Code muss nach PL/pgSQL, SQL, Edge Functions oder einen externen Anwendungsdienst übertragen werden.
Zu prüfen sind außerdem:
- Raw SQL im Quellcode
- ORM-Dialekt und generierte Migrationen
- Transaktionsisolation und Locking
- Case Sensitivity von Tabellen- und Spaltennamen
- Pagination, Volltextsuche und JSON-Abfragen
- Fehlercodes und Retry-Verhalten
Eine Staging-Version der Anwendung läuft vor dem Cutover vollständig gegen Supabase.
Stille Semantikfehler verhindern
Einige Unterschiede erzeugen keinen offensichtlichen Importfehler, verändern aber das Ergebnis. Leere Zeichenketten und NULL, Groß- und Kleinschreibung, implizite Typkonvertierungen, Divisionen, Zeitzonen sowie die Sortierung von Umlauten müssen mit echten Anwendungsdaten verglichen werden. Gleiches gilt für ON UPDATE-Zeitstempel, automatische Default-Werte und Abfragen, die sich auf eine bestimmte MySQL-SQL-Mode-Einstellung verlassen.
Für kritische Tabellen werden deshalb nicht nur Zeilenzahlen, sondern fachliche Invarianten definiert. Beispiele sind eindeutige Kundennummern, unveränderte Salden, konsistente Statusübergänge und vollständige Beziehungen. Diese Prüfungen laufen nach der Testmigration und erneut unmittelbar vor der Freigabe.
Supabase-Dienste sind ein separater Schritt
Nach der Datenbankmigration kann die Anwendung weiterhin per PostgreSQL-Treiber arbeiten. Supabase Auth, Storage, Realtime, Data API und RLS werden nur eingeführt, wenn sie fachlich benötigt werden.
Besonders RLS verändert das Berechtigungsmodell. Bestehende Anwendungsrollen müssen auf Nutzer-JWTs, anon, authenticated und serverseitige Zugriffe abgebildet und mit Negativtests geprüft werden.
Testmigration und Cutover
Die Testmigration umfasst mindestens:
- Tabellen- und Zeilenzahlen
- Prüfsummen oder Stichproben kritischer Daten
- Dezimal-, Datums-, Unicode- und Binärwerte
- Primär- und Fremdschlüssel
- Sequenzen und neue Inserts
- Views, Trigger und Ersatz für Routinen
- zentrale Lese-, Schreib- und Reporting-Abfragen
- Laufzeit und Belastung der Quelle
Für den finalen Transfer wird eine Schreibpause oder ein gesonderter Delta-Prozess geplant. Der Ablauf folgt der Supabase-Migrationscheckliste, während die PostgreSQL-zu-Supabase-Anleitung die Zielseite vertieft.
Nach Abnahme kann WZ-IT Supabase als Managed Service weiterbetreiben.
Quellen
Lieber betreiben lassen?
Sie möchten Supabase nicht selbst betreiben? WZ-IT übernimmt Einrichtung, Betrieb und Wartung - datenschutzorientiert aus Deutschland.
Anfrage
Supabase migrieren, absichern oder betreiben
Wir migrieren Supabase-Projekte und bestehende Backends wie Firebase, Lovable, PostgreSQL, MySQL oder Auth0, bauen die Zielumgebung auf und übernehmen auf Wunsch den laufenden Betrieb.
Häufig gestellte Fragen
Antworten auf die wichtigsten Fragen
Nein. Supabase verwendet PostgreSQL. Datentypen, SQL-Syntax, Routinen, Auto-Increment, Zeichensätze und Anwendungsabfragen müssen auf Kompatibilität geprüft und teilweise umgebaut werden.
Ja, grundsätzlich über denselben Zielpfad nach PostgreSQL. MariaDB-Version, verwendete Engines, Datentypen und eigene Funktionen beeinflussen die Konvertierung.
Supabase nennt pgloader und einen geführten Migrationsweg. Je nach Größe und Schema kann ein eigener ETL-Prozess besser prüfbar sein. Das Werkzeug wird nach dem Testlauf festgelegt.
Häufig ja. MySQL-spezifische Funktionen, Quotes, Upserts, Datumslogik, Kollationen und ORM-Migrationen verhalten sich in PostgreSQL anders.
Eine Supabase-Migration beginnt bei 3.490 Euro netto. Die notwendige Schema- und Anwendungsanpassung bestimmt bei einer heterogenen Migration den konkreten Umfang.
Mehr zu Supabase
- Was ist Supabase?
- Supabase Cloud vs. Self-Hosted
- Supabase Self-Hosting: Vorteile & Nachteile
- Supabase-Kosten: Cloud vs. Self-Hosted
- Supabase Cloud zu Self-Hosted migrieren
- Supabase-Projekt, Region oder Organisation migrieren
- PostgreSQL zu Supabase migrieren
- AWS RDS und Aurora zu Supabase migrieren
- Heroku Postgres zu Supabase migrieren
- Neon und Vercel Postgres zu Supabase migrieren
- MySQL und MariaDB zu Supabase migrieren
- Microsoft SQL Server und Azure SQL zu Supabase migrieren
- Firebase zu Supabase migrieren
- Lovable Cloud zu Supabase migrieren
- Auth0 zu Supabase Auth migrieren
- Supabase-Migrationscheckliste
- Supabase vollständig sichern
- Supabase Self-Hosted aktualisieren
- Supabase RLS prüfen
- Supabase auf Hetzner betreiben
- Supabase mit Coolify installieren





