2012-04-13 12 views
2

Welche Optionen habe ich zum Importieren einer MySQL-Tabelle mit der InnoDB-Engine, in der die Tabelle bereits vorhanden ist, ohne den Lesezugriff auf die vorhandene Tabelle zu verlieren? Im Allgemeinen beziehe ich mich auf Situationen, in denen ALTER TABLE wirklich langsam ist, und ich möchte stattdessen die Tabelle ausgeben, den Speicherauszug ändern und dann importieren.Importieren eines MySQL InnoDB-Speicherauszugs ohne Sperren von Tabellen

Wenn ich mysqldump verwenden, um den Speicherauszug zu erstellen, dann wenn ich es wieder einfüge, löscht die Tabelle vor dem Einfügen, so Lesezugriff ist natürlich verloren, bis der Import abgeschlossen ist.

Kann ich einfach den Tabellennamen im Speicherauszug ändern, diesen importieren, und wenn das erledigt ist, die alte Tabelle löschen und die neue umbenennen? Gibt es einen besseren Weg? Danke im Voraus.

Antwort

1

Wenn Ihre Tabelle die gleiche Struktur hat, sehe ich keine Probleme. Sie müssen nur den "DROP TABLE" -Operator überspringen. Fast alle Dumper haben die Option, DROP TABLE/CREATE TABLE nicht in die Dumps aufzunehmen. Persönlich würde ich Sypex Dumper empfehlen.

Wenn Sie mögen, ohne Verriegelung Tabelle Tabellenstruktur ändern, ich denke, der beste Weg, pt-online-schema-change - ALTER tables without locking them

+0

Dank zu verwenden ist, werde ich einen Benchmark mit Sypex Dumper laufen. Kann nicht für $ 10 falsch gehen! – melkamo

+1

@melkamo Es hat kostenlose Ausgabe. Und es ist ausreichend für die meisten Bedürfnisse;) –