Ich habe einen MySQL-Datenbankserver für die Ubuntu 10.04-Produktion, bei dem die Gesamtgröße der Datenbank 260 GB beträgt, während die Größe der Root-Partition selbst 300 GB beträgt, in der die Datenbank gespeichert ist. Dies bedeutet im Wesentlichen, dass etwa 96% von / voll sind und kein Speicherplatz mehr zum Speichern von Dump / Backup vorhanden ist usw. Derzeit ist keine andere Festplatte an den Server angeschlossen.
Meine Aufgabe ist es, diese Datenbank auf einen anderen Server zu migrieren, der sich in einem anderen Rechenzentrum befindet. Die Frage ist, wie dies mit minimalen Ausfallzeiten effizient durchgeführt werden kann.
Ich denke in der Schlange von:
- Fordern Sie an, ein zusätzliches Laufwerk an den Server anzuschließen und einen Speicherauszug auf diesem Laufwerk zu erstellen. [EDIT: Es ist jetzt nicht möglich.]
- Übertragen Sie den Speicherauszug auf einen neuen Server, stellen Sie ihn wieder her und erstellen Sie einen neuen Server-Slave des vorhandenen Servers, um die Daten synchron zu halten
- Wenn eine Migration erforderlich ist, unterbrechen Sie die Replikation, aktualisieren Sie die Slave-Konfiguration, um Lese- / Schreibanforderungen zu akzeptieren, und machen Sie den alten Server schreibgeschützt, damit keine Schreibanforderungen auftreten, und weisen Sie die App-Entwickler an, die Konfiguration mit der neuen IP-Adresse für db zu aktualisieren.
Was sind Ihre Vorschläge, um diesen oder einen anderen besseren Ansatz für diese Aufgabe zu verbessern?
Ein Speicherauszug und eine Wiederherstellung einer Datenbank dieser Größe würden Stunden dauern. Ich würde, abhängig von den Versionen von MySQL, solange die Versionsnummer erhöht wird und es keine Sprünge in der Hauptversionsnummer gibt. Sie sollten in der Lage sein, die unformatierten Datenbankdateien in / var / lib / mysql auf den neuen Server zu stellen, die Berechtigungen festzulegen und den Server mit dem Schalter --skip-grant-tables zu starten. Fügen Sie die erforderlichen Berechtigungen für Benutzer hinzu, die die neue IP-Adresse widerspiegeln, und starten Sie dann normal neu.
Ich würde auf die Größe Ihrer Datenbank eingehen, da diese zu groß ist, um effizient zu sein.
quelle
Sie können diese Schritte ausführen, um diese riesige InnoDB-Datenbank zu migrieren.
Diese Aufgabe dauert mehrere Stunden. Um die Auswirkungen des Hotcopy-Skripts auf den Live-Server zu minimieren, legen Sie mit renice eine niedrige Priorität fest
$ renice -n 5 -p <SCRIPT-PID>
Während dieses Vorgangs kann es zu Langsamkeit kommen, aber definitiv zu keinen Ausfallzeiten. Percona XtraBackup erstellt eine Hotcopy, die im Vergleich zu mysqldump schneller und weniger ressourcenintensiv ist. Dies ist ideal für eine riesige InnoDB-Datenbank.
Abhängig von den Verwendungsmustern und Statistiken können Sie diesen Prozess ausführen, wenn auf dem Server nur minimaler Datenverkehr vorhanden ist. Vielleicht ist es eine gute Idee, dies über das Wochenende zu tun? Das Obige ist nur ein Überblick über den Prozess. Möglicherweise müssen Sie die Percona XtraBackup- und SSHFS-Dokumentation durchgehen.
quelle
Sie können die Datenbank einfach direkt auf den Remote-Server sichern ...
... SQL sollte sich gut komprimieren lassen, damit Sie dies mit einer dieser Optionen viel schneller erledigen können, obwohl dies auch von der Menge an RAM abhängt, die Sie in der Box haben ...
quelle