Création d’un serveur NFS pour les bases de données

Dans cet article on va voir comment faire un serveur NFS (Network File System) et on va utiliser ce partage NFS pour stocker nos bases de données MySQL.

Pour ça nous disposons de trois machines, une machine qui servira de serveur NFS, une machine pour le serveur MySQL et enfin une troisième qui sera un simple client nous permettant de faire quelque test. Les trois machines sont sous Debian 9.

Mon serveur NFS se nomme nfsrv et a pour IP 192.168.1.30 ; mon serveur MySQL se nomme nfseqel et a pour IP 192.168.1.30 et mon client se nomme nfsclient avec l’adresse IP 192.168.1.31.

I) Installation du serveur NFS

On commence par installer le paquet nfs-kernel-server, une fois installer on lance le service éponyme (service nfs-kernel-server start).

Ensuite on crée un dossier /srv/nfs (mkdir /srv/nfs) qui sera le dossier partagé. Puis on modifie le fichier /etc/exports, ce fichier est le fichier qui définit nos partages NFS. Ajouter un partage NFS se présente toujours de la même manière d’abord le répertoire à partager ensuite la liste des machines qui peuvent y accéder et enfin entre parenthèse les options.

Sur ce screenshot de notre fichier /etc/exports on partage le dossier /srv/nfs à toutes les machines du réseau 192.168.1.0/24 avec les droits de lecture/écriture (rw) et enfin l’option root_squash est une sécurité permettant de diminuer les droits de root distant (le root distant et non pas le root de la machine local), enfin on a une règle qui dit que tous les autres (ceux qui ne font pas partie du réseau précédent) sont en lecture seul (ro), quand on met les options sans préciser de machine ça veut dire tout le monde.

Attention, après la création d’un nouveau partage NFS il faut redémarrer le service nfs-kernel-server

II) Configuration du client

Sur notre client on va commencer par installer le paquet nfs-common, ce paquet est indispensable pour que la commande mount puisse monter des systèmes de fichier de type nfs.

On crée un dossier /media/nfs sur le client, un dossier qui servira de point de montage pour le NFS. (mkdir /media/nfs).

Maintenant on peut monter le partage NFS avec la commande mount -t nfs @IPsrv:chemin_partage_srv pointdemontage_client.

Attention les droits dépendent du dossier sur le serveur NFS.

C’est bien beau mais si on redémarre on doit remonter notre partage NFS, on peut automatiser le montage du partage NFS grâce au fichier /etc/fstab, on ajoute une ligne du type machine:partage pointdemontage typedefichier liste_options_montage.

Pour prendre en compte la modification de la fstab on fait un mount -a qui va nous permettre de recharger nos points de montage.

III) Serveur MySQL

Sur le serveur MySQL on installe le paquet mysql-server. On va ouvrir le fichier /etc/passwd pour récupérer le nom d’utilisateur des bases de données ainsi que son UID et son GID. Comme le serveur NFS et le serveur MySQL ont besoin d’avoir les mêmes utilisateurs pour les droits du dossier partagé.

L’utilisateur mysql a l’UID 107 et le GID 111.

Le point de montage sera /media/bdd, on crée donc le dossier en question. Ensuite on ajoute dans le fichier /etc/fstab une ligne pour monter automatiquement le partage.

On va modifier le fichier /etc/mysql/mariadb.conf.d/50-server.cnf l’option datadir sert à indiquer l’emplacement de stockage des bases de données. C’est cette option que l’on va modifier pour correspondre à notre point de montage. On modifie également la ligne bind-address= 127.0.0.1 en bind-address= 0.0.0.0, cette option sert à indiquer les adresses autoriser à accéder à mysql, 0.0.0.0 veut dire tout le monde.

IV) Mise en place du partage NFS

Maintenant on va passer sur le serveur NFS, nous reviendrons sur le serveur MySQL après.

Sur le serveur NFS nous allons commencer par créer le partage NFS dans le fichier /etc/exports, et nous créons le dossier en question (mkdir /bdd).

Nous créons l’utilisateur mysql (adduser mysql), une fois crée on modifie le fichier /etc/passwd pour être comme celle du serveur MySQL (même UID et GID). Ci-dessous un screenshot de mon passwd sur mon serveur NFS.

Attention mon utilisateur sshd avait l’UID 107, celui que je devais attribuer à mon utilisateur mysql j’ai donc dû changer l’UID de l’utilisateur sshd.

Puis nous modifions le GID du groupe mysql pour ce faire nous modifions le fichier /etc/group et nous indiquons le bon groupe. Ci-dessous un screenshot du fichier /etc/group sur mon serveur NFS.

Maintenant qu’on s’est occupé de l’utilisateur on peut attribuer le dossier /bdd à l’utilisateur mysql et au groupe mysql via la commande chown.

On peut voir le propriétaire du dossier /bdd avant et après le chown. Ces droits ainsi que le propriétaire sont identique à ceux du fichier datadir par défaut et on redémarre le service nfs-kernel-server.

Mais on va modifier les droits du dossier et faire un chmod 777 /bdd, on met tous les droits pour tout le monde le temps de copier le datadir par défaut, comme on ne fait pas la copie avec l’utilisateur mysql mais avec root.

V) Retour sur le serveur MySQL

On doit retourner sur le serveur MySQL et on va commencer par recharger le fichier /etc/fstab grâce à la commande mount -a.

Une fois nos points de montage rechargé nous allons maintenant copier tous le contenu du datadir originel vers notre nouveau datadir. Sachant que notre nouveau datadir est /media/bdd et que le datadir par défaut était /var/lib/mysql.

On utilise l’option -r pour copier récursivement (dossier et tous ce qui est en dessous), et l’option p qui permet de conserver les droits et les propriétaires durant la copie. On vérifie que tout est copié dans le dossier /media/bdd et que tout est bien dans le dossier /bdd sur le serveur NFS.

Remarque : On n’oublie pas de retourner sur le serveur NFS pour restaurer les droits du partage. (chmod 755 /bdd)

Ensuite on redémarre le service mysql (service mysql restart).

On se connecte sur mysql et on crée une nouvelle base de données nommée « identity » ensuite on la sélectionne puis on crée une table appelée « persons » et on définit des colonnes. On peut voir tout ça sur la capture ci-dessous.

On ajoute des informations dans cette table.

Et on vérifie que l’ajout s’est bien effectué et que les informations sont présentes.

On va maintenant vérifier que tout fonctionne, on va vérifier dans le dossier /media/bdd sur le serveur MySQL que la base de données est bien dans ce dossier (on vérifie que l’option datadir a bien été prise en compte).

Enfin on vérifie que la base de données est également présente sur le serveur NFS dans le dossier /bdd (vérification du bon déroulement du partage NFS).

Nous avons une base de données MySQL sur un partage NFS fonctionnel !

sources : deimos.fr ; memo-linux.com ; manpages.ubuntu.com ; askubuntu.com ; w3school.com pour le SQL ; site officiel d’ubuntu

 

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.