[MySQL] Tabelle ersetzen im laufenden Betrieb

Shuro

Grünschnabel
Hallo,

Ich habe da ein kleines Problem, denn ich soll im laufenden Datenbank-Betrieb (am besten ohne Ausfallzeit) eine Tabelle, nennen wir sie 'test', austauschen durch eine identische Tabelle mit anderen Datensätzen, nennen wir diese 'test_neu'.

Diese Tabellen ('test' und 'test_neu') enthalten in etwa 450.000 Datensätze.

An sich ist das ja kein Problem, wären da nicht 2 Harken:
  1. Der Datenbank-Typ ist InnoDB
  2. In anderen Tabellen ist die Tabelle 'test' als foreign key angegeben

Zuerst hatte ich an einfaches Tabellen-Renamen gedacht, jedoch funktioniert das nicht wirklich, da in denn anderen Tabellen weiterhin die alte Tabelle (die nun 'test_old' heißt) als foreign key angegeben ist.

Über Konsole (via mv oder cp) geht es auch nicht da es InnoDB ist.

Darum würde ich euch gern um Hilfe und um konkrete Ratschläge bitten.

Danke im Voraus,
Shuro :)
 
Erstelle erst die neue Tabelle, nennen wir sie "Test_Neu", fülle Sie mit den Daten die Du brauchts.

Dann eine Transaktion starten
Tabelle Test leeren mit TRUNCATE TABLE Test;
Alle Daten aus Tabelle_Neu mit einer INSERT INTO Test_Neu SELECT * FROM Test; Abfrage nach Test kopieren
Transaktion committen

Wenn Du keine Transaktionen machen willst, mach das TRUNCATE und das INSERT SELECT in einer Anfrage oder mache ein LOCK TABLES vorher.
 
Erstelle erst die neue Tabelle, nennen wir sie "Test_Neu", fülle Sie mit den Daten die Du brauchts.

So hab ich es auch machen wollen.

Dann eine Transaktion starten
Tabelle Test leeren mit TRUNCATE TABLE Test;
Alle Daten aus Tabelle_Neu mit einer INSERT INTO Test_Neu SELECT * FROM Test; Abfrage nach Test kopieren
Transaktion committen

^^ Naja, das SQL am ende ist ein wenig verdreht. INSERT INTO Test SELECT * FROM Test_Neu; meinst du wohl.

Naja und bei 1 - 3 Mio Datensätzen entsteht dadurch ne menge Traffic. :-/ Sonnst hätte ich es so schon gemacht
Edit: Auserdem sollten die 1-3 Mio. Datensätze im laufenden Betrieb getauscht werden, d.h. es sollen keine Update-Downs entstehen.
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück