2017-05-11 3 views
1

Wir verwenden MySQL (Innodb) zum Speichern unserer Daten. Wir haben Integrationstests, die mysql-Datenbank (über den Docker-Container) hochfahren und eine Verbindung zur Datenbank herstellen. Wir verwenden MyISAM für die Test-DB (Grund wird unten erläutert).Wie klon ich mysql innodb Datenbank schnell

Der erste Test lädt das SQL-Schema in eine Vorlagen-DB und nachfolgende Tests klonen die Datenbank einfach mit der Dateikopie. Da MyISAM mit der Dateikopie gut funktioniert, kopieren wir einfach das gesamte Datenbankverzeichnis in ein neues und haben für jeden Test eine neue geklonte Datenbank. Dies funktioniert vor allem bei unseren Integrationstests innerhalb weniger Sekunden.

Wenn wir jedoch weitere Tests hinzufügen, entdecken wir weiterhin Probleme aufgrund von Unterschieden zwischen InnoDB und MyISAM (Indexgröße, Fremdschlüsseleinschränkung, um nur einige zu nennen). Wir möchten die Test-DB verschieben, um InnoDB zu verwenden, wollen aber den schnellen Klon-Vorgang beibehalten. Das Ausführen von mysqldump und Wiederherstellen dauert 30+ Sekunden im Vergleich zu 100ms, die heute benötigt werden.

Meine Frage ist, gibt es eine Möglichkeit, die InnoDB super schnell zu klonen?

+1

"Da MyISAM funktioniert gut mit Dateikopie ..." MyISAM ist eine wirklich primitive Datenbank-Engine und wenn Sie Ihre InnoDB-Anwendung im MyISAM-Modus testen, könnten Sie auch nicht testen. Diese Engines verhalten sich deutlich unterschiedlich. – tadman

Antwort

0

Eine der schnelleren Möglichkeiten zum Sichern einer InnoDB-Datenbank ist ein Tool wie innobackupex.

Sie können auch Ihre DB, wenn Sie zuerst FLUSH TABLES, alles auf die Festplatte in einer Weise, die konsistent sein sollte, wenn Snapshotsted. Einige Dienste (z. B. Amazon EC2) ermöglichen das Imaging laufender Instanzen, die Sie später unabhängig voneinander starten oder als Backup-Wiederherstellungspunkt verwenden können.

+0

Ich möchte kein Backup. Ich möchte die Datenbank innerhalb derselben Instanz in eine neue benannte Datenbank klonen. –

+1

Ein Klon ist einfach ein Backup, das auf einem anderen System wiederhergestellt wurde. – tadman