Wie kann ich eine MySQL-Datenbank auf ein anderes Laufwerk verschieben?

34

Ich verwende MySQL 5.5 auf einem lokalen Computer, um eine große Menge von Regierungsdaten zu analysieren. Ich habe eine lokale Datenbank erstellt, die sich auf meinem Standardlaufwerk befindet (Win7 C: Laufwerk). Ich möchte die Daten auf meinem E: -Laufwerk, einem großen externen eSATA-Laufwerk, speichern.

Welche Schritte soll ich unternehmen?


quelle
Kannst du den dB nicht als SQL-Datei exportieren, dann speichere die Datei und mache e: Wenn du den dB in Zukunft wiederherstellen willst, kannst du diese Datei importieren
@tq - Das geht nicht. Er möchte das MySQL-Server-Datenverzeichnis ändern. Wenn er es exportiert und importiert, befindet es sich immer noch auf demselben Laufwerk!
Ein Wort der Vorsicht, wenn Sie die Datenbankdateien auf ein externes Laufwerk verschieben, müssen Sie es an Ihrem Computer angeschlossen lassen, da sonst Ihre Datenbank abstürzt, da die Datendateien nicht gefunden werden können
Stephen Senkomago Musoke

Antworten:

35
  1. Fahren Sie MySQL herunter.
  2. Verschieben Sie alle Dateien in Ihrem aktuellen Datenverzeichnis an den neuen Speicherort (überprüfen Sie den Speicherort in Schritt 3 - datadirParameter).
  3. Suchen Sie die my.iniDatei (sie befindet sich im mysql-Installationsverzeichnis). Ändern Sie den datadirParameterwert, um auf die neue Position zu zeigen.
  4. Starten Sie MySQL.

quelle
Dies gab mir Fehler beim Versuch, MySQL zu starten (Berechtigungsprobleme). Ich habe mich für die Lösung entschieden , die ich hier veröffentliche , und ich hoffe, dass dies jemandem hilft, etwas Zeit zu sparen.
Snapfractalpop
1
@ Snapfractalpop Frage ist für Windows
Adam
@adam windows wird im Hauptteil der Frage erwähnt, aber es ist weder als reine Windows-Frage markiert, noch werden Fenster in der Überschrift erwähnt. Ich habe den Link in den Kommentaren gepostet, da es möglich ist, dass auch andere Nicht-Windows-Benutzer auf diese Frage stoßen.
Snapfractalpop
Ich stellte fest, dass ich /als Verzeichnistrennzeichen im Verzeichnispfad für und nicht \ verwenden musste datadir. Ich verwende WAMPserver unter Windows 10.
Steve
Das ProgramData-Verzeichnis ist möglicherweise in Ihrem Dateiexplorer ausgeblendet. Ich dachte, dass es nicht existiert, bis ich die Einstellung geändert habe, um versteckte Dateien anzuzeigen.
WestAce
6

Obwohl Sie nach Windows fragen, finden Sie hier einige gute Anweisungen für diejenigen, die hier nach Linux / Ubuntu-Anweisungen suchen:

Annahmen:

  • Sie haben MySQL-Daten auf einem externen / usb / alternativen Laufwerk /mountpoint/var/lib/mysql, möglicherweise von einem Computer, der abgestürzt ist, oder einer alten Installation
  • Sie möchten es lokal in Ihre neue Ubuntu-Installation verschieben /var/lib/mysql
  • Stop MySQL mit:
    sudo /etc/init.d/mysql stop.
  • Machen Sie eine Sicherungskopie des aktuellen (clean) MySQL - Datenverzeichnisses mit:
    sudo cp -Rp /var/lib/mysql /var/lib/mysql.backup.
  • Kopieren Sie dann das alte Datenverzeichnis vom alten Laufwerk mit:
    sudo cp -Rp /mountpoint/var/lib/mysql /var/lib/mysql
    wo mountpointist der Pfad zum Mount.
  • Starten Sie nun MySQL neu mit:
    sudo /etc/init.d/mysql start

Mit etwas Glück sollte MySQL neu gestartet werden und Sie sollten Ihre alten Datenbanken wieder haben.

Quelle [email protected]

Cyrille
quelle
3
(!) dies wird nicht funktionieren, da config immer noch auf den alten Speicherort zeigt
ADOConnection
4

Lösung 1:

  1. Sichern Sie zunächst Ihre Daten mit mysqldump.
  2. Wenn Sie Mysql Server aus dem offiziellen Paket installieren, können Sie das Programm MySQLINstanceConfig.exe aus dem bin-Verzeichnis Ihres Servers ausführen.
  3. Daten importieren

MySQLINstanceConfig.exe

Zweite Lösung (nicht empfohlen, funktioniert aber auf demselben Computer)

  1. Stoppen Sie den MySQL-Server.
  2. Kopieren Sie Daten aus Ihrem Datenverzeichnis in Ihr neues Verzeichnis
  3. Öffnen Sie die Datei my.cnf (in meinem Fall "C: \ ProgramData \ MySQL \ MySQL Server 5.5 \ my.ini")
  4. Suchen Sie die Zeile datadir = "C: \ ProgramData \ MySQL \ MySQL Server 5.5 \ data \" und ändern Sie den Pfad zu Ihrem neuen Speicherort
  5. Starten Sie Ihren Server

Ab Version 5.6 wird MySQLInstanceConfig.exe nicht mehr verteilt. Diese Funktionalität wird vom Installationsprogramm ersetzt. http://bugs.mysql.com/bug.php?id=66306

rkosegi
quelle
Gibt es ein gleichwertiges Linux-Programm zum Verschieben der Daten
Ron Piggott
Nachdem ich die Daten mit der zweiten Methode verschoben hatte, konnte ich MariaDB (Version 5.5) nicht starten. Nachdem der Dienstbenutzer Zugriff auf das neue Datenverzeichnis erhalten hat, wird der Dienst gestartet und ich muss mich mit der Datenbank verbinden. Jedoch Zugriff versagt jede Tabelle noch: [ERROR] Cannot find or open table <db>/<table> from the internal data dictionary of InnoDB though the .frm file for the table exists.. Wie kann ich sicherstellen, dass die Berechtigungen richtig eingestellt sind?
Bram
2

Ab MySQL Installer 1.4.6 (2015-04-07) für Windows kann der Speicherort der Daten in einem Registrierungsschlüssel angegeben werden, der den Speicherort der my.iniDatei angibt. Wenn die Daten also ursprünglich an einem anderen als dem Standardspeicherort installiert wurden Die my.iniDatei wird nicht in sein C:\ProgramData\MySQL\MySQL Server x.x\.

Die Position der Registrierungswerte ist (mindestens ab MySQL 5.6):

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\MySQL AB\MySQL Server x.x\

Locationist ein REG_SZOrdner, der auf den Ordner verweist, in dem sich die MySQL-Anwendungsdateien befinden. standardmäßig:C:\Program Files\MySQL\MySQL Server x.x\

DataLocationist ein REG_SZ, der auf den Ordner verweist, in dem my.inisich befindet; standardmäßig auch:C:\Program Files\MySQL\MySQL Server x.x\

Der my.iniDateipfad ist auch im Dienstbefehl unter diesem Registrierungsschlüssel enthalten: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\MySQLXXim ImagePath REG_EXPAND_SZWert.

Der Standardwert dieser Zeichenfolge ist: "C:/Program Files/MySQL/MySQL Server 5.6/bin\mysqld" --defaults-file="C:\Program Files\MySQL\MySQL Server x.x\my.ini" MySQLXX

Die Quintessenz ist also, dass Sie zum Verschieben von Datendateien in diesem Szenario die von @ITCuties bereitgestellten Schritte mit einigen Ergänzungen befolgen müssen.

Hier sind die vollständigen Schritte:

  1. Fahren Sie MySQL herunter.
  2. Suchen Sie den obigen DataLocationRegistrierungswert, um den aktuellen my.iniSpeicherort der Datei zu ermitteln. Wenn Sie die my.iniDatei auch verschieben möchten, aktualisieren Sie den DataLocationPfad und verschieben Sie die my.iniDatei in diesen neuen Pfad.
  3. Wenn Sie den Speicherort der my.iniDatei ändern , müssen Sie den Pfad im oben aufgeführten Registrierungsschlüssel für den Dienstbefehl aktualisieren.
  4. Öffnen Sie die my.iniDatei und suchen Sie den datadirParameter. Verschieben Sie die Dateien von diesem datadirPfad in den Pfad, in dem sich die Daten befinden sollen, und aktualisieren Sie dann auch den datadirParameter mit diesem neuen Pfad.
  5. Starten Sie MySQL.
nextgentech
quelle