Modification du répertoire de données MySQL dans un environnement UNIX ou similaire
Pour modifier votre répertoire de données MySQL, procédez comme suit :
-
Connectez-vous au serveur en utilisant PuTTY ou votre client préféré.
Si vous utilisez une partition dédiée pour le répertoire de données, veillez à monter la nouvelle partition à la place du répertoire de données d'origine après avoir copié les données. Le montage d'une nouvelle partition enregistre les modifications de configuration non standard avec lesquelles certaines applications pourraient ne pas fonctionner.
-
Arrêtez
mysqld
(démon MySQL). Le processus de démarrage et d'arrêt du démon peut varier selon les systèmes d'exploitation et les distributions. MySQL doit être arrêté lors de l'exécution de tout processus affectant directement les fichiers bruts./etc/init.d/mysql stop
OU
/etc/init.d/mysqld, /etc/init.d/mysql-server, /usr/loca/etc/init.d/mysql, /opt/lamp…
-
Sauvegardez votre base de données avant d'apporter des modifications. Assurez-vous que le démon MySQL n'est pas en cours d'exécution lorsque vous effectuez des copies directes des fichiers de base de données bruts.
Si vous utilisez cPanel sur le serveur, arrêtez cPanel (TailWatch et chkservd) avant le redémarrage du démon. Vous pouvez créer un fichier temporaire /etc/chkserv.d/mysqlisevil
pour empêcher chkservd
de redémarrer le
service. Si vous n'avez pas l'habitude de rsync, vous pouvez utiliser un autre outil pour créer votre sauvegarde.
rsync -vaP /var/lib/mysql/ /var/lib/mysql.'date +%s'
-
Créez le répertoire de données et indiquez l'utilisateur propriétaire MySQL (ou tout autre utilisateur spécifié dans le fichier d'options globales 'my.cnf'). Dans cet exemple, l'emplacement
/var/lib/mysql-data
est utilisé, mais vous pouvez employer tout emplacement qui vous convient. Si vous ajoutez un disque ou une unité logique à cette fin, vous devez également ajouter l'entrée dans/etc/fstab
et monter le répertoire avant de continuer.chown mysql:mysql /var/lib/mysql-data
-
Faites une copie finale du répertoire d'origine dans le nouveau MySQL répertoire de données (assurez-vous de conserver la fin
/
à la fin du premier répertoire):rsync -vaP /var/lib/mysql/ /var/lib/mysql-data
-
Assurez-vous que le nouveau répertoire de données est détenu par le propriétaire adéquat, c'est-à-dire l'utilisateur et le groupe MySQL par défaut ou l'utilisateur qui est spécifié dans votre fichier d'options globales 'my.cnf'. Si vous ne savez pas, vous pouvez utiliser la commande suivante pour attribuer de manière récursive l'intégralité de la hiérarchie à l'utilisateur et au groupe MySQL.
chown -R mysql:mysql /var/lib/mysql-data
L'utilisateur MySQL doit disposer des droits complets (rwx) sur les dossiers de base de données et des droits de lecture/écriture sur les fichiers log, bin, data, index et form.
En général, les dossiers de base de données ont le droit 700 (drwx------) et appartiennent à mysql:mysql lorsqu'ils se trouvent dans un environnement d'hébergement partagé. L'autorisation peut être configurée de manière plus libérale avec 755 (drwxr-xr-x) dans un environnement dédié.
-
Mettez à jour votre fichier de configuration '/etc/my.cnf' de sorte qu'il pointe sur le nouveau répertoire de données.
Veillez à sauvegarder tous les éléments avant d'éditer le fichier de configuration.
cp -vp /etc/my.cnf /etc/my.cnf.'date +%s'
vi /etc/my.cnf
-
Remplacez toutes les instances de '/var/lib/mysql' par '/var/lib/mysql-data'. S'il n'existe pas d'entrée
datadir
, placez la chaîne dans la section [mysqld].[mysqld]
user = mysql
datadir = /var/lib/mysql-data
socket = /var/lib/mysql-datal/mysql.sock
-
Certaines applications disposent d'une configuration personnalisée et ce document ne les couvre pas. Certains scripts échouent si le répertoire de données n'est pas /var/lib/mysql. Ainsi, un lien symbolique est utilisé pour pointer vers le nouvel emplacement.
mv -v /var/lib/mysql /var/lib/mysql.orig
ln -s /var/lib/mysql-data /var/lib/mysql
Si vous ne voulez pas créer le lien, veillez à changer 'mysql.default'_socket et 'mysqli.default'_socket dans 'php.ini' et à complètement arrêter Apache puis à le redémarrer.
- Démarrez le démon MySQL.
/etc/init.d/mysql start
- Vérifiez que MySQL fonctionne. Si MySQL ne répond pas, consultez le journal des erreurs. Au besoin, annulez les modifications.
mysqladmin ping