Ich muss häufig eine Datenbank auf meinem MySQL-Server zu einer Spiegeldatenbank auf dem gleichen MySQL-Server duplizieren.So spiegeln Sie eine MySQL-Datenbank mit nur einem Server
Ich schreibe ein Bash-Skript, das einen Spiegel meiner Webanwendung (PHP/MySQL) auf einer separaten Subdomain erstellt. Benutzer können diesen Spiegel verwenden, um alle möglichen verrückten Dinge auszuprobieren, ohne die Produktionsumgebung zu beeinträchtigen. Das Skript sollte jede Nacht automatisch ausgeführt werden.
Duplizieren des Quellcodes ist einfach. Ich benutze einfach rsync -a
, um alles aus dem Verzeichnis mit der Produktionsumgebung in das Spiegelverzeichnis zu kopieren und einen Patch anzuwenden, um einige Konfigurationsdateien zu aktualisieren. Das Problem besteht darin, die Datenbank zu duplizieren, die fast 3 GB groß ist.
Wenn ich mysqldump live_db | mysql mirror_db
verwende, dauert es ewig, die Datenbank zu duplizieren. Außerdem erreicht die CPU-Nutzung während dieser Zeit einen Spitzenwert von 100% und meine Webanwendung wird unbrauchbar langsam.
Datenbankreplikation scheint keine Option zu sein, da ich nur einen MySQL-Server habe. Die Replikation benötigt zwei Server.
Was ist der beste Weg, um die Produktionsdatenbank zu duplizieren? Es muss nicht schnell sein, aber es sollte die Leistung des Systems nicht zu sehr beeinträchtigen. Benutzer sollten weiterhin in der Lage sein, meine Webanwendung zu verwenden, während das Spiegelskript im Hintergrund ausgeführt wird.
Wäre es in Ihrem Szenario möglich, eine zweite mysql-Serverinstanz auf demselben Server auszuführen? – VolkerK
In der Theorie könnte das VolkerK funktionieren, aber das wäre ein richtig großer Aufwand. Die Umwandlung eines Ersatzrechners in einen zweiten Server wäre schneller. –