Comment puis-je déplacer une base de données MySQL vers un autre lecteur?

34

J'utilise MySQL 5.5 sur une machine locale pour analyser une grande quantité de données gouvernementales. J'ai créé une base de données locale qui réside sur mon lecteur par défaut (lecteur Win7 C:). Je souhaite stocker les données sur mon lecteur E:, un grand lecteur externe eSATA.

Quelles mesures dois-je prendre?


la source
vous ne pouvez pas exporter le dB en tant que fichier SQL, puis enregistrez le fichier, puis à l'avenir, si vous souhaitez restaurer le dB, vous pouvez importer ce fichier
@tq - Cela ne fonctionnera pas. Il veut changer le répertoire de données du serveur MySQL. S'il l'exporte et l'importe, ce sera toujours sur le même lecteur!
Attention, lorsque vous déplacez les fichiers de la base de données sur le lecteur externe, vous devez le garder branché sur votre ordinateur, sinon votre base de données va planter, car elle ne pourra pas trouver les fichiers de données
Stephen Senkomago Musoke

Réponses:

35
  1. Arrêtez mysql.
  2. Déplacez tous les fichiers de votre répertoire de données actuel vers le nouvel emplacement (consultez l'emplacement à l'étape 3 - datadirParamètre).
  3. Localisez le my.inifichier (il se trouve dans le répertoire d'installation de mysql). Modifiez la datadirvaleur du paramètre pour pointer vers le nouvel emplacement.
  4. Commencez mysql.

la source
Cela m'a donné des erreurs en essayant de démarrer mysql (problèmes d'autorisations). J'ai choisi la solution que je publie ici , ce qui, je l'espère, permettra à quelqu'un de gagner du temps.
snapfractalpop
1
@snapfractalpop la question s'adresse à windows
adam le
@adam windows est mentionné dans le corps de la question, mais elle n'est pas étiquetée comme une question réservée à Windows, et les fenêtres ne sont pas mentionnées dans le titre. J'ai posté le lien dans les commentaires car il est possible que d'autres utilisateurs non-Windows tombent également sur cette question.
snapfractalpop
J'ai trouvé que je devais utiliser /et non comme séparateurs de répertoire dans le chemin de répertoire pour datadir. J'utilise WAMPserver sur Windows 10.
Steve
Le répertoire ProgramData peut être masqué dans votre explorateur de fichiers. Je pensais que cela n'existait pas jusqu'à ce que je modifie les paramètres pour afficher les fichiers cachés.
WestAce
6

Bien que vous demandiez des fenêtres, voici quelques indications utiles pour ceux qui se retrouvent ici à la recherche d’instructions linux / ubuntu:

Hypothèses:

  • Vous avez des données mysql sur un lecteur externe / usb / alternate /mountpoint/var/lib/mysql, peut-être à partir d'un ordinateur mort ou d'une ancienne installation
  • Vous souhaitez le déplacer localement vers votre nouvelle installation Ubuntu /var/lib/mysql
  • Arrêtez MySQL avec:
    sudo /etc/init.d/mysql stop.
  • Faites une sauvegarde du répertoire de données MySQL actuelle (propre) avec:
    sudo cp -Rp /var/lib/mysql /var/lib/mysql.backup.
  • Copiez ensuite l'ancien répertoire de données de l'ancien lecteur avec:
    sudo cp -Rp /mountpoint/var/lib/mysql /var/lib/mysql
    mountpointest le chemin d'accès au montage.
  • Maintenant, redémarrez MySQL avec:
    sudo /etc/init.d/mysql start

Avec un peu de chance, MySQL devrait redémarrer et vous devriez récupérer vos anciennes bases de données.

Source [email protected]

Cyrille
la source
3
(!) Cela ne fonctionnera pas car config pointe toujours vers l'ancien emplacement
ADOConnection
4

Solution 1:

  1. Tout d'abord, sauvegardez vos données en utilisant `mysqldump.
  2. Si vous installez Mysql Server à partir du paquetage officiel, vous pouvez le faire en exécutant le programme MySQLINstanceConfig.exe à partir du répertoire bin de votre serveur.
  3. Importer des données

MySQLINstanceConfig.exe

Deuxième solution (non recommandé, mais fonctionne sur la même machine)

  1. Arrêtez le serveur Mysql.
  2. Copiez les données de votre répertoire de données dans votre nouveau répertoire.
  3. Ouvrir le fichier my.cnf (dans mon cas, "C: \ ProgramData \ MySQL \ MySQL Server 5.5 \ my.ini")
  4. trouver une ligne comme datadir = "C: \ ProgramData \ MySQL \ Serveur MySQL 5.5 \ data \" et changer le chemin d'accès vers votre nouvel emplacement
  5. Démarrez votre serveur

A partir de la version 5.6, MySQLInstanceConfig.exe n'est plus distribué. Cette fonctionnalité est en train d'être remplacée par le programme d'installation. http://bugs.mysql.com/bug.php?id=66306

rkosegi
la source
Existe-t-il un programme Linux équivalent pour déplacer les données
Ron Piggott le
Après avoir déplacé les données avec la deuxième approche, je n'ai pas pu démarrer MariaDB (version 5.5). Après avoir accordé à l'utilisateur du service l'accès au nouveau datadir, le service démarre et je peux me connecter à la base de données. Cependant l' accès à une table ne parvient toujours pas: [ERROR] Cannot find or open table <db>/<table> from the internal data dictionary of InnoDB though the .frm file for the table exists.. Comment puis-je m'assurer que les autorisations sont définies correctement?
Bram
2

Pour Windows, à partir du programme d' installation MySQL 1.4.6 (2015-04-07) , l'emplacement des données peut être spécifié dans une clé de registre spécifiant l'emplacement du my.inifichier. Ainsi, les données ont été initialement installées dans un emplacement autre que celui par défaut. le my.inifichier ne sera pas C:\ProgramData\MySQL\MySQL Server x.x\.

L'emplacement des valeurs du registre est (au moins à partir de MySQL 5.6):

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

Locationest un REG_SZfichier qui pointe vers le dossier où se trouvent les fichiers de l'application MySQL; par défaut:C:\Program Files\MySQL\MySQL Server x.x\

DataLocationest un REG_SZqui pointe vers le dossier où my.inise trouve; par défaut aussi:C:\Program Files\MySQL\MySQL Server x.x\

De plus, le my.inichemin du fichier est inclus dans la commande de service sous cette clé de registre: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\MySQLXXdans la ImagePath REG_EXPAND_SZvaleur.

La valeur par défaut de cette chaîne est: "C:/Program Files/MySQL/MySQL Server 5.6/bin\mysqld" --defaults-file="C:\Program Files\MySQL\MySQL Server x.x\my.ini" MySQLXX

L'essentiel est donc que pour déplacer des fichiers de données dans ce scénario, vous devez suivre les étapes postées par @ITCuties avec quelques ajouts.

Voici les étapes complètes:

  1. Arrêtez mysql.
  2. Recherchez la DataLocationvaleur de registre ci-dessus pour trouver l' my.iniemplacement du fichier actuel et, si vous souhaitez également déplacer le my.inifichier, mettez à jour le DataLocationchemin et déplacez le my.inifichier vers ce nouveau chemin.
  3. Si vous modifiez l'emplacement du my.inifichier, vous devez mettre à jour le chemin d'accès dans la clé de registre de commande de service répertoriée ci-dessus.
  4. Ouvrez le my.inifichier, localisez le datadirparamètre. Déplacez les fichiers de ce datadirchemin vers le chemin dans lequel vous voulez que les données résident, puis mettez également à jour le datadirparamètre avec ce nouveau chemin.
  5. Commencez mysql.
nextgentech
la source