Comment changer un répertoire de données MySQL vers un nouvel emplacement sur CentOS 7

introduction

Les bases de données grandissent avec le temps, dépassant parfois l’espace sur le système de fichiers. Vous pouvez également rencontrer des conflits d’entrées / sorties s’ils se trouvent sur la même partition que le reste du système d’exploitation. Le RAID, le stockage de bloc réseau et d’autres périphériques peuvent offrir une redondance et d’autres fonctionnalités souhaitables. Que vous ajoutiez plus d’espace, recherchiez des moyens d’optimiser les performances ou cherchant à tirer parti d’autres fonctionnalités de stockage, ce didacticiel vous guidera tout au long du processus de déplacement du répertoire de données de MySQL.

Conditions préalables

Pour compléter ce guide, vous aurez besoin de:

  • * Un serveur CentOS 7 avec un utilisateur non root avec les privilèges + sudo + et MySQL installé *. Pour en savoir plus sur la configuration d’un utilisateur avec ces privilèges, consultez notre guide Initial Server avec CentOS 7. . Si vous n’avez pas encore installé MySQL, le guide Pour installer MySQL sur CentOS 7 peut vous aider. .

Dans cet exemple, nous déplaçons les données vers un périphérique de stockage de bloc monté sur + / mnt / volume-nyc1-01 +. Vous pouvez apprendre à en configurer un dans le guide Comment utiliser Block Storage sur DigitalOcean.

Quel que soit le stockage sous-jacent que vous utilisez, ce guide peut vous aider à déplacer le répertoire de données vers un nouvel emplacement.

Étape 1 - Déplacement du répertoire de données MySQL

Pour préparer le déplacement du répertoire de données de MySQL, vérifions l’emplacement actuel en lançant une session interactive MySQL à l’aide des informations d’administration.

mysql -u root -p

Lorsque vous y êtes invité, indiquez le mot de passe root MySQL. Ensuite, à partir de l’invite MySQL, sélectionnez le répertoire de données:

select @@datadir;
Output+-----------------+
| @@datadir       |
+-----------------+
|  |
+-----------------+
1 row in set (0.00 sec)

Cette sortie confirme que MySQL est configuré pour utiliser le répertoire de données par défaut, + / var / lib / mysql /, +, de sorte que ce répertoire est celui que nous devons déplacer. Une fois que vous avez confirmé cela, tapez + exit + et appuyez sur «ENTER» pour quitter le moniteur:

exit

Pour assurer l’intégrité des données, nous allons arrêter MySQL avant d’apporter des modifications au répertoire de données:

sudo systemctl stop mysqld

+ systemctl + n’affiche pas le résultat de toutes les commandes de gestion des services. Si vous voulez être sûr d’avoir réussi, utilisez la commande suivante:

sudo systemctl status mysqld

Vous pouvez être sûr qu’il est arrêté si la dernière ligne de la sortie vous indique que le serveur est arrêté:

Output. . .
Jul 18 11:24:20 ubuntu-512mb-nyc1-01 systemd[1]: Stopped MySQL Community Server.

Maintenant que le serveur est arrêté, nous allons copier le répertoire de base de données existant dans le nouvel emplacement avec + rsync +. L’utilisation de l’indicateur + -a + préserve les autorisations et les autres propriétés du répertoire, tandis que` + +v + `fournit une sortie détaillée pour vous permettre de suivre l’évolution.

sudo rsync -av /var/lib/mysql

Une fois que le fichier + rsync + est terminé, renommez le dossier actuel avec une extension .bak et conservez-le jusqu’à ce que nous ayons confirmé que le déplacement a été effectué avec succès. En le renommant, nous éviterons la confusion qui pourrait résulter de fichiers situés à la fois dans le nouvel et dans l’ancien emplacement:

sudo mv /var/lib/mysql /var/lib/mysql.bak

Nous sommes maintenant prêts à porter notre attention sur la configuration.

Étape 2 - Pointage vers le nouvel emplacement de données

MySQL dispose de plusieurs moyens pour remplacer les valeurs de configuration. Par défaut, + datadir est défini sur` + / var / lib / mysql + dans le fichier + / etc / my.cnf`. Editez ce fichier pour refléter le nouveau répertoire de données:

sudo vi /etc/my.cnf

Recherchez la ligne dans le bloc + [mysqld] + qui commence par + datadir = +, qui est séparée de l’en-tête du bloc avec plusieurs commentaires. Modifiez le chemin qui suit pour refléter le nouvel emplacement. De plus, étant donné que le socket se trouvait auparavant dans le répertoire de données, nous devrons le mettre à jour vers le nouvel emplacement:

/etc/my.cnf

[mysqld]
. . .
datadir=/mysql
socket=/mysql/mysql.sock
. . .

Après la mise à jour des lignes existantes, nous devrons ajouter une configuration pour le client + mysql. Insérez les paramètres suivants au bas du fichier pour que les directives ne soient pas divisées dans le bloc + [mysqld] +:

/etc/my.cnf

Lorsque vous avez terminé, appuyez sur + ESCAPE +, puis tapez +: wq! + Pour enregistrer et quitter le fichier.

Étape 3 - Redémarrage de MySQL

Maintenant que nous avons mis à jour la configuration pour utiliser le nouvel emplacement, nous sommes prêts à démarrer MySQL et à vérifier notre travail.

sudo systemctl start mysqld
sudo systemctl status mysqld

Pour vous assurer que le nouveau répertoire de données est bien utilisé, démarrez le moniteur MySQL.

mysql -u root -p

Regardez à nouveau la valeur du répertoire de données:

select @@datadir;
Output+----------------------------+
| @@datadir                  |
+----------------------------+
|  |
+----------------------------+
1 row in set (0.01 sec)

Maintenant que vous avez redémarré MySQL et confirmé qu’il utilise le nouvel emplacement, saisissez cette opportunité pour vous assurer que votre base de données est entièrement fonctionnelle. Une fois que vous avez vérifié l’intégrité des données existantes, vous pouvez supprimer le répertoire de données de sauvegarde avec + sudo rm -Rf / var / lib / mysql.bak +.

Conclusion

Dans ce didacticiel, nous avons déplacé le répertoire de données de MySQL vers un nouvel emplacement et mis à jour SELinux afin de prendre en compte les modifications. Bien que nous utilisions un périphérique de stockage en bloc, les instructions fournies ici devraient permettre de redéfinir l’emplacement du répertoire de données, quelle que soit la technologie sous-jacente.

Pour plus d’informations sur la gestion des répertoires de données MySQL, consultez les sections suivantes de la documentation officielle de MySQL:

Related