Kapitel 6: Schema-Vergleich und Synchronisation
Info: Dieses Kapitel erläutert das Auffinden von Schema-Unterschieden zwischen zwei Datenbanken, die visuelle Differenz-Matrix sowie richtliniengesteuerte Backup- und Rollback-Schutzmechanismen.
In diesem Kapitel:
- 6.1 Auffinden von Schema-Unterschieden
- 6.2 Visuelle Differenz-Matrix
- 6.3 Schutz- und Sicherheitsmechanismen
- Verwandte Themen
6.1 Auffinden von Schema-Unterschieden
Entwicklungs- und Produktivdatenbanken weichen im Laufe der Zeit oft unbemerkt voneinander ab (Schema Drift). SQLOZ identifiziert strukturelle Abweichungen zwischen zwei Instanzen und sichert die Synchronisation ab:
- Wählen Sie im oberen Menü Werkzeuge → Schemata vergleichen….
- Quelle (Source): Die Referenzdatenbank (z. B.
local_dev). - Ziel (Target): Die zu aktualisierende Datenbank (z. B.
production_db). - Klicken Sie auf Vergleichen.
6.2 Visuelle Differenz-Matrix
Die ermittelten Differenzen werden in einer farbcodierten Matrix gegenübergestellt:
| Farbe | Bedeutung | Generierte DDL-Aktion |
|---|---|---|
| 🟢 Grün | In Quelle vorhanden, fehlt im Ziel | CREATE TABLE / ADD COLUMN |
| 🟡 Gelb | In beiden vorhanden, aber abweichender Typ/Index | ALTER TABLE |
| 🔴 Rot | In Quelle gelöscht, im Ziel noch vorhanden | DROP |
Beispiel:
QUELLE (local_dev) | ZIEL (prod_db) | AKTION
payments | ❌ (fehlt) | ➕ CREATE TABLE payments
users.phone_verified (BOOLEAN) | users.phone_verified (TINYINT) | 🔄 MODIFY COLUMN
6.3 Schutz- und Sicherheitsmechanismen
Vor dem Klick auf Synchronisation anwenden prüft SQLOZ das Fehlerrisiko:
- Automatisches Tabellen-Backup (
_sqloz_bak_...): Diese Option steht für MySQL/MariaDB-Ziele zur Verfügung. Vor destruktiven DDL-Operationen (DROP TABLE,DROP COLUMN,MODIFY COLUMN) werden die betroffenen Zieldaten auf dem Server in einer Tabelle mit Zeitstempel gesichert:CREATE TABLE IF NOT EXISTS `_sqloz_bak_<timestamp>_users` AS SELECT * FROM `users`; - Rollback- und Datenrettungsskript (MySQL/MariaDB): Wurde die automatische Sicherung durchgeführt, generiert SQLOZ ausführbaren Rollback-Code sowie auskommentierte Datenwiederherstellungsanweisungen:
-- INSERT IGNORE INTO `users` SELECT * FROM `_sqloz_bak_<timestamp>_users`; - Schutz vor destruktiven Löschvorgängen: Müssen Tabellen oder Spalten im Ziel entfernt werden, verlangt SQLOZ eine ausdrückliche Bestätigung, bevor Befehle gesendet werden.
Warnung: Bei PostgreSQL- oder SQLite-Instanzen wird keine automatische Backup-Tabelle erstellt. Führen Sie vor Schema-Änderungen an diesen Engines stets eine eigene, verifizierte Datenbanksicherung durch.
