Comment déplacer des fichiers de données MySQL sur une partition différente?

27

Mon disque dur est partitionné avec deux partitions, donc je peux facilement réinstaller Ubuntu et essayer différentes versions sans perdre les données de mon répertoire personnel. Il est configuré comme ceci:

20GB  -> /     (root)
180GB -> /home 

Je fais beaucoup de travail de développement, donc mon dossier /var/www est symétrisé sur /home/valorin/workspace .

Mais je veux faire cela aussi avec mes fichiers de données MySQL, car je suis agacé que chaque fois que je réinstalle ma machine, je dois faire un SQLdump complet et ensuite restaurer toutes les bases de données avant de pouvoir faire plus de travail. / p>

Quelle est la meilleure façon de le faire sans casser MySQL?

    
posée Stephen RC 29.07.2010 - 01:56
la source

5 réponses

31

Eh bien, en fait, il existe une réponse spécifique à Ubuntu à cette question.

Comme mentionné par le lien Gergoes, il s’agit essentiellement de modifier /etc/mysql/my.cnf et de définir une nouvelle valeur pour datadir = dans le [ mysqld] section. Jusqu'à présent, la partie non spécifique de la réponse.

En supposant que vous exécutiez une version quelque peu moderne d’Ubuntu, vous pourriez très bien installer AppArmor par défaut, avec un profil pour / usr / sbin / mysqld en mode forcé. Ce profil par défaut n'acceptera probablement pas votre nouveau datadir.

Supposons que votre nouveau datadir sera / home / data / mysql .

Si vous ouvrez le fichier /etc/apparmor.d/usr.sbin.mysqld , vous trouverez parmi les règles les deux lignes suivantes.

/var/lib/mysql/ r,
/var/lib/mysql/** rwk,

En supposant notre exemple ci-dessus, ils devront être remplacés ou (probablement préférablement) complétés par ces deux lignes.

/home/data/mysql/ r,
/home/data/mysql/** rwk,

Avant de pouvoir démarrer notre serveur MySQL, avec son nouveau datadir, nous devrons également recharger explicitement notre nouveau profil apparmor.

$ sudo apparmor_parser -r /etc/apparmor.d/usr.sbin.mysqld
    
réponse donnée andol 29.07.2010 - 19:26
la source
4

Le super utilisateur a des instructions détaillées pour résoudre ce problème

Voici un autre ensemble d’instructions pour faire la même chose lien

Ici, il est republié. Allez-y voter l'original si vous le pouvez sur super utilisateur.

Après une certaine confusion générale concernant les autorisations, je me suis rendu compte que le problème n’était pas que je n’avais pas les droits et les droits nécessaires, mais que AppArmor empêchait MySQL de lire et d’écrire dans le nouvel emplacement.

Voici ma solution:

D'abord, arrêtez MySQL pour que rien de bizarre ne se passe quand vous tripotez:

$ sudo stop mysql

Ensuite, déplacez tous les répertoires de la base de données vers leur nouveau répertoire:

$ sudo mv /var/lib/mysql/<all folders> /new-mysql-dir/

Ne déplacez pas les fichiers, ils seront générés par mysql, déplacez simplement les dossiers (qui sont les bases de données).

Ensuite, demandez poliment à AppArmor d’autoriser mysql à utiliser le nouveau dossier:

$ sudo vim /etc/apparmor.d/usr.sbin.mysqld

ajouter des lignes:

/new-mysql-dir/ r,
/new-mysql-dir/** rwk,

Puis dites à mysql que le datadir a été déplacé:

$ sudo vim /etc/mysql/my.cnf 

changez la ligne:

datadir=/var/lib/mysql

à:

datadir=/my-new-db-dir/

REMARQUE: en fonction de la configuration de votre base de données, vous devrez peut-être également modifier innodb-data-home-dir, etc.

Puis redémarrez AppArmor pour lire les nouveaux paramètres:

$ sudo /etc/init.d/apparmor restart

Et redémarrez MySQL en utilisant le nouveau datadir:

$ sudo start mysql

J'espère que ça aide!

    
réponse donnée nelaaro 24.03.2011 - 11:48
la source
0

Ce n'est vraiment pas spécifique à Ubuntu. Néanmoins, voici quelque chose qui pourrait vous aider: lien

    
réponse donnée Nathan Osman 29.07.2010 - 01:57
la source
0

Pour ceux qui comme moi travaillent avec VirtualBox et doivent déplacer le datadir MySQL vers un dossier partagé sur le système hôte, suivez le didacticiel simple à l'adresse lien

    
réponse donnée Vacilando 31.05.2014 - 16:13
la source
-1

Cela ne fonctionnera pas comme ça.

l'utilisateur mysql doit avoir le droit d'écrire dans le nouveau répertoire:

sudo chown -R mysql:mysql /newdatadir
sudo chmod -R 754 /newdatadir
sudo chmod 754 /newdatadir/..
    
réponse donnée Marin Marušić 11.04.2013 - 19:51
la source

Lire d'autres questions sur les étiquettes