Come posso spostare un database MySQL su un'altra unità?


34

Sto usando MySQL 5.5 su un computer locale per analizzare una grande quantità di dati governativi. Ho creato un database locale che risiede sul mio disco predefinito (Win7 C: drive). Vorrei archiviare i dati sul mio disco E: un disco esterno eSATA di grandi dimensioni.

Quali passi devo prendere?

mysql 

non puoi esportare il dB come file sql, quindi salvare il file do e: quindi in futuro se vuoi ripristinare il dB puoi importare questo file

@tq - Non funzionerà. Vuole cambiare la directory dei dati del server MySQL. Se lo esporta e lo importa, sarà ancora sullo stesso disco!

Un avvertimento quando si spostano i file di database sull'unità esterna, sarà necessario tenerlo collegato al computer, altrimenti il ​​database si
arresterà in modo

Risposte:


35
  1. Spegni mysql.
  2. Sposta tutti i file nella directory dei dati corrente nella nuova posizione (controlla la posizione nel passaggio 3 - datadirparametro).
  3. Individua il my.inifile (si trova nella directory di installazione di mysql). Modificare il datadirvalore del parametro per puntare alla nuova posizione.
  4. Inizia mysql.

Questo mi ha dato errori durante il tentativo di avviare mysql (problemi con le autorizzazioni). Ho optato per la soluzione che inserisco qui , che spero aiuti a salvare qualcuno un po 'di tempo.
snapfractalpop

1
La domanda di @snapfractalpop è per windows
adam,

@adam windows è menzionato nel corpo della domanda, ma non è etichettato come una sola domanda di windows, né windows è menzionato nel titolo. Ho inserito il link nei commenti perché è possibile che anche altri utenti non Windows possano imbattersi in questa domanda.
snapfractalpop

Ho scoperto che dovevo usare /e non \ come separatori di directory nel percorso di directory per datadir. Sto usando WAMPserver su Windows 10.
Steve,

La directory ProgramData potrebbe essere nascosta in Esplora file. Ho pensato che non esistesse fino a quando non ho modificato l'impostazione per mostrare i file nascosti.
WestAce,

6

Anche se stai chiedendo Windows, ecco alcune buone indicazioni per chi finisce qui alla ricerca di indicazioni per Linux / Ubuntu:

ipotesi:

  • Hai dati mysql su un disco esterno / usb / alternativo /mountpoint/var/lib/mysql, forse da un computer che è morto o vecchia installazione
  • Desideri spostarlo nella tua nuova installazione di Ubuntu localmente /var/lib/mysql
  • Arresto MySQL con:
    sudo /etc/init.d/mysql stop.
  • Eseguire un backup della corrente (pulito) directory dei dati MySQL con:
    sudo cp -Rp /var/lib/mysql /var/lib/mysql.backup.
  • Quindi copia la vecchia directory di dati dalla vecchia unità con:
    sudo cp -Rp /mountpoint/var/lib/mysql /var/lib/mysql
    dove si mountpointtrova il percorso del mount.
  • Ora riavvia MySQL con:
    sudo /etc/init.d/mysql start

Con un po 'di fortuna, MySQL dovrebbe riavviarsi e dovresti riavere i tuoi vecchi database.

Fonte mb_webguy@ubuntuforums.org


3
(!) questo non funzionerà perché la configurazione punta ancora alla vecchia posizione
ADOConnection,

4

Soluzione 1:

  1. Prima di tutto, esegui il backup dei tuoi dati usando `mysqldump.
  2. Se installi Mysql Server dal pacchetto ufficiale, puoi farlo eseguendo il programma MySQLINstanceConfig.exe dalla directory bin del tuo server.
  3. Importa dati

MySQLINstanceConfig.exe

Seconda soluzione (non consigliata, ma funziona sulla stessa macchina)

  1. Arresta il server Mysql.
  2. Copia i dati dalla tua directory di dati nella tua nuova directory
  3. Apri il file my.cnf (Nel mio caso "C: \ ProgramData \ MySQL \ MySQL Server 5.5 \ my.ini")
  4. trova riga come datadir = "C: \ ProgramData \ MySQL \ MySQL Server 5.5 \ data \" e cambia il percorso nella nuova posizione
  5. Avvia il tuo server

Dalla versione 5.6 MySQLInstanceConfig.exe non è più distribuito. Questa funzionalità è stata sostituita dall'installer. http://bugs.mysql.com/bug.php?id=66306


Esiste un programma Linux equivalente per lo spostamento dei dati
Ron Piggott,

Dopo aver spostato i dati con il secondo approccio, non sono stato in grado di avviare MariaDB (versione 5.5). Dopo aver concesso all'utente del servizio l'accesso al nuovo datadir, il servizio si avvia e sono pronto a collegarmi al DB. Tuttavia l'accesso a qualsiasi tavolo ancora non riesce: [ERROR] Cannot find or open table <db>/<table> from the internal data dictionary of InnoDB though the .frm file for the table exists.. Come posso garantire che le autorizzazioni siano impostate correttamente?
Bram,

2

Per Windows, a partire da MySQL Installer 1.4.6 (2015-04-07) , la posizione dei dati può essere specificata in una chiave di registro che specifica la posizione del my.inifile, quindi se i dati sono stati inizialmente installati in una posizione non predefinita il my.inifile non sarà in C:\ProgramData\MySQL\MySQL Server x.x\.

La posizione dei valori del registro sono (almeno a partire da MySQL 5.6):

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

Locationè un punto REG_SZche punta alla cartella in cui si trovano i file dell'applicazione MySQL; di default:C:\Program Files\MySQL\MySQL Server x.x\

DataLocationè un punto REG_SZche punta alla cartella in cui my.inisi trova; di default anche:C:\Program Files\MySQL\MySQL Server x.x\

Inoltre, il my.inipercorso del file è incluso nel comando di servizio in questa chiave di registro: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\MySQLXXnel ImagePath REG_EXPAND_SZvalore.

Il valore predefinito di questa stringa è: "C:/Program Files/MySQL/MySQL Server 5.6/bin\mysqld" --defaults-file="C:\Program Files\MySQL\MySQL Server x.x\my.ini" MySQLXX

Quindi la linea di fondo è che per spostare i file di dati in questo scenario devi seguire i passaggi pubblicati da @ITCuties con alcune aggiunte.

Ecco i passaggi completi:

  1. Spegni mysql.
  2. Cerca il DataLocationvalore di registro sopra riportato per trovare il my.inipercorso del file corrente e, se desideri spostare anche il my.inifile, aggiorna il DataLocationpercorso e sposta il my.inifile in questo nuovo percorso.
  3. Se si sta modificando il percorso del my.inifile, è necessario aggiornare il percorso nella chiave di registro dei comandi di servizio elencata sopra.
  4. Apri il my.inifile, trova il datadirparametro. Spostare i file da questo datadirpercorso nel percorso in cui si desidera risiedere i dati, quindi aggiornare anche il datadirparametro con questo nuovo percorso.
  5. Inizia mysql.
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.