Migrieren eines MySQL-Servers von einer Box zu einer anderen

8

Die Datenbanken sind unerschwinglich groß (& gt; 400 MB), so dass dump & gt; SCP & gt; Quelle erweist sich als Stunden und Stunden Arbeit.

Gibt es einen leichteren Weg? Kann ich mich direkt mit der DB verbinden und vom neuen Server importieren?

    
Brad Wright 29.03.2009, 16:34
quelle

9 Antworten

12

Sie können einfach den gesamten / data Ordner kopieren.

Sehen Sie sich Hochleistung MySQL - Übertragung großer Dateien

    
cherouvim 29.03.2009, 16:37
quelle
6

Verwenden Sie ssh, um Ihre Daten direkt über das Internet zu leiten. Stellen Sie zuerst die SSH-Schlüssel für die Anmeldung ohne Passwort ein. Als nächstes versuchen Sie etwas wie folgt:

%Vor%

Anmerkungen:

  • Die Grundidee ist, dass Sie einfach die Standardausgabe direkt in einen Befehl auf der anderen Seite ausgeben, für den SSH perfekt ist.
  • Wenn Sie keine Verschlüsselung benötigen, können Sie netcat verwenden, aber es ist es wahrscheinlich nicht wert
  • Die SQL-Textdaten gehen über den komprimierten Draht!
  • Offensichtlich ändern Sie db_user in Benutzerbenutzer und some_database in Ihre Datenbank. someuser ist der (Linux) Systembenutzer , nicht der MySQL-Benutzer.
  • Sie müssen auch --password den langen Weg benutzen, weil Sie mit mysql prompt viel Kopfschmerzen haben werden.
JasonSmith 29.03.2009 17:52
quelle
4

Sie könnten eine MySQL-Slave-Replikation einrichten und MySQL die Daten kopieren lassen und dann den Slave zum neuen Master machen

    
webclimber 29.03.2009 16:39
quelle
2

400M ist wirklich keine große Datenbank; Die Übertragung auf ein anderes Gerät dauert nur wenige Minuten über ein 100Mbit-Netzwerk. Wenn Sie keine 100M-Netzwerke zwischen Ihren Computern haben, sind Sie in großen Schwierigkeiten!

Wenn sie die exakt gleiche Version von MySQL haben und identische (oder ähnliche ENOUGH) my.cnf haben und Sie wollen nur eine Kopie der gesamten Daten, ist es sicher, das gesamte Datenverzeichnis des Servers zu kopieren (während beide Instanzen) sind offensichtlich gestoppt). Sie müssen natürlich zuerst das Datenverzeichnis des Zielrechners löschen, aber das interessiert Sie wahrscheinlich nicht.

Die Sicherung / Wiederherstellung wird normalerweise dadurch verlangsamt, dass die Wiederherstellung die Tabellenstruktur und nicht die Dateikopie neu erstellen muss. Durch das direkte Kopieren der Dateien vermeiden Sie dies (vorbehaltlich der oben genannten Einschränkungen).

    
MarkR 29.03.2009 17:38
quelle
2

Wenn Sie einen Server migrieren:

Die Dump-Dateien können sehr groß sein, daher ist es besser, sie vor dem Senden zu komprimieren oder das -C-Flag von scp zu verwenden. Unsere Methode zur Übertragung von Dateien besteht darin, einen vollständigen Speicherauszug zu erstellen, in dem die inkrementellen Protokolle gelöscht werden (verwenden Sie --master-data = 2 --flush logs, bitte prüfen Sie, ob Sie keine Slave-Hosts durcheinander bringen, wenn Sie sie haben). Dann kopieren wir den Dump und spielen ihn ab. Danach spülen wir die Logs erneut (mysqladmin flush-logs), nehmen das letzte inkrementelle Log (das nicht sehr groß sein sollte) und spielen es nur ab. Machen Sie das so lange, bis das letzte inkrementelle Protokoll sehr klein ist, so dass Sie die Datenbank auf dem Originalrechner anhalten, das letzte inkrementelle Protokoll kopieren und dann abspielen können - es sollte nur ein paar Minuten dauern.

Wenn Sie nur Daten von einem Server auf einen anderen kopieren möchten:

%Vor%

Sie müssen die Datenbankbenutzer richtig einstellen und Zugriff auf externe Hosts bereitstellen.

    
David Rabinowitz 29.03.2009 20:59
quelle
1

Versuchen Sie, den Speicherauszug auf dem neuen Server mit der mysql-Konsole zu importieren, nicht mit einer Hilfssoftware

    
Gabriel Solomon 29.03.2009 16:45
quelle
0

Ich habe keine Erfahrung damit, dies mit mysql zu tun, aber für mich scheint der Flaschenhals die eigentlichen Daten zu übertragen?

4oo MB ist nicht das viel. Aber wenn Dump - & gt; SCP ist langsam, ich glaube nicht, eine Verbindung zum Db-Server aus der Entfernung Box wäre schneller?

Ich würde vorschlagen, zu dumpen, zu komprimieren, dann über das Netzwerk zu kopieren oder auf Festplatte zu brennen und die Daten manuell zu übertragen. Das Komprimieren eines solchen Dumps wird höchstwahrscheinlich eine ziemlich gute Komprimierungsrate ergeben, da es sehr wahrscheinlich viele repetetive Daten gibt.

    
Brimstedt 29.03.2009 16:38
quelle
0

Wenn Sie nur alle Datenbanken des Servers kopieren, kopieren Sie das gesamte Verzeichnis /data .

Wenn Sie nur eine oder mehrere Datenbanken kopieren und sie zu einem vorhandenen mysql-Server hinzufügen:

  1. Erstellen Sie die leere Datenbank auf dem neuen Server, richten Sie die Berechtigungen für Benutzer ein.
  2. Kopieren Sie den Ordner für die Datenbank in /data/databasename auf den neuen Server /data/databasename
Fire Crow 29.03.2009 17:23
quelle
0

Ich benutze gerne BigDump: Staggered Mysql Dump Importer nach dem Exportieren meiner Datenbank vom alten Server.

Ссылка

Beachten Sie jedoch, dass wenn Sie die Exportoptionen (dh die maximale Länge der erstellten Abfragen) nicht auf die Last setzen, die Ihr neuer Server verarbeiten kann, wird sie einfach fehlschlagen und Sie müssen es erneut versuchen verschiedene Parameter. Persönlich setze ich meins auf ungefähr 25.000, aber das bin nur ich. Testen Sie es ein wenig und Sie werden den Dreh raus bekommen.

    
Devontrae 11.12.2013 14:08
quelle

Tags und Links