Recherche de site Web

10 questions d'entretien sur les bases de données MySQL pour les administrateurs Linux


Dans nos articles précédents, nous avons couvert les questions d'entretien MySQL pour les débutants et les utilisateurs intermédiaires, et la réponse a été écrasante. Aujourd'hui, nous adoptons une approche différente – nous concentrant spécifiquement sur les questions d'entretien de base de données MySQL adaptées aux utilisateurs Linux.

Maintenant, certains d'entre vous pourraient se demander pourquoi nous séparons les utilisateurs de Linux des autres. Eh bien, la raison est simple. Dans la plupart des environnements de production, MySQL fonctionne sur des serveurs Linux, et les intervieweurs s'attendent à ce que vous connaissiez plus que de simples requêtes SQL.

Ils veulent voir si vous comprenez comment MySQL interagit avec le système d'exploitation Linux, comment résoudre les problèmes de performance au niveau du système d'exploitation et comment gérer les bases de données via la ligne de commande.

Nous avons reçu plusieurs courriels de nos lecteurs demandant des questions qui combinent à la fois les connaissances en MySQL et en Linux. Un lecteur a spécifiquement mentionné : “Vos questions sont bonnes, mais elles ne couvrent pas le côté administration système de MySQL qui est crucial pour les rôles de DBA.” Bon point. C'est exactement ce que nous abordons aujourd'hui.

Ces questions sont conçues pour ceux d'entre vous qui se préparent à des postes de Administrateur de Bases de Données, des rôles de DevOps ou des entretiens de Développeur Backend où une maîtrise de Linux est attendue.

Que vous soyez un débutant essayant d'obtenir votre premier emploi ou un professionnel expérimenté cherchant à changer d'entreprise, ces questions vous aideront à mieux vous préparer.

1. Comment installer MySQL sur un système Linux, et quelle est la différence entre l'installation via un gestionnaire de paquets et la compilation à partir des sources ?

Ceci est souvent la première question que posent les intervieweurs pour évaluer votre expérience pratique. Lorsque vous installez MySQL en utilisant un gestionnaire de paquets comme apt (Ubuntu/Debian) ou yum (CentOS/RHEL), vous obtenez des binaires précompilés qui sont faciles à installer et à mettre à jour.

sudo apt-get install mysql-server  # For Ubuntu/Debian
sudo yum install mysql-server      # For CentOS/RHEL

La compilation à partir du source, en revanche, vous donne plus de contrôle sur les fonctionnalités et l'optimisation mais nécessite plus de temps et de compétences. Vous téléchargez le code source, le configurez avec des options spécifiques, le compilez, puis l'installez.

La plupart des environnements de production préfèrent les gestionnaires de paquets pour la facilité de maintenance, mais connaître la compilation à partir des sources montre que vous comprenez MySQL à un niveau plus profond.

2. Où se trouvent les fichiers de configuration MySQL sous Linux, et quel fichier a la priorité ?

C'est une question délicate car l'emplacement varie en fonction de votre distribution Linux. En général, MySQL lit la configuration à partir de plusieurs emplacements dans cet ordre :

/etc/my.cnf
/etc/mysql/my.cnf
~/.my.cnf (user-specific configuration)

Les fichiers ultérieurs peuvent remplacer les paramètres des fichiers précédents. Dans Ubuntu, vous trouverez souvent la configuration principale à /etc/mysql/mysql.conf.d/mysqld.cnf. Savoir cela vous aide à résoudre rapidement les problèmes de configuration, surtout lorsque les paramètres ne semblent pas s'appliquer même après avoir édité un fichier de configuration.

3. Comment vérifier si le service MySQL fonctionne sur Linux ?

Il existe plusieurs façons de vérifier cela, et les intervieweurs veulent voir si vous connaissez plus d'une méthode :

sudo systemctl status mysql       # For systemd-based systems
sudo service mysql status         # Traditional method
ps aux | grep mysqld              # Check running processes
netstat -tlnp | grep 3306         # Check if MySQL port is listening

Chaque commande vous donne des informations différentes. La commande ps montre le processus MySQL réel, tandis que netstat confirme que le port est ouvert et en attente de connexions.

4. Quelle est la différence entre arrêter MySQL avec systemctl et tuer le processus mysqld ?

Maintenant, cette question distingue ceux qui ont réellement géré des bases de données en production de ceux qui n'ont travaillé qu'en développement. Utiliser systemctl stop mysql ou service mysql stop envoie un signal d'arrêt progressif à MySQL, lui permettant de fermer correctement toutes les connexions, d'écrire les données sur le disque et de s'arrêter proprement.

Tuer le processus avec kill -9 est comme tirer la prise de courant – c'est une terminaison immédiate qui peut corrompre vos fichiers de base de données, surtout si des transactions étaient en cours. Cependant, kill -15 (SIGTERM) est acceptable car il permet à MySQL de s'arrêter proprement, de la même manière que la commande service.

5. Comment trouver les journaux d'erreurs MySQL sous Linux ?

Les journaux d'erreurs sont vos meilleurs alliés lors du dépannage et l'emplacement par défaut est généralement /var/log/mysql/error.log, mais vous pouvez le vérifier en consultant votre configuration MySQL ou en exécutant cette requête dans MySQL :

SHOW VARIABLES LIKE 'log_error';

Du côté de Linux, vous pouvez suivre le fichier journal pour voir les erreurs en temps réel :

sudo tail -f /var/log/mysql/error.log

Certains de nos lecteurs ont mentionné que lors de leurs entretiens, on leur a demandé de diagnostiquer un problème MySQL en utilisant uniquement le journal des erreurs. Ainsi, savoir lire et interpréter ces journaux est crucial.

6. Comment vérifier l'utilisation du disque de MySQL sur Linux ?

Vous devez savoir où MySQL stocke ses données (généralement /var/lib/mysql/) et comment vérifier l'utilisation du disque :

sudo du -sh /var/lib/mysql/              # Total MySQL data size
sudo du -sh /var/lib/mysql/*             # Size per database
df -h                                    # Overall disk usage

À l'intérieur de MySQL, vous pouvez également interroger le schéma d'information :

SELECT table_schema AS "Database", 
       ROUND(SUM(data_length + index_length) / 1024 / 1024, 2) AS "Size (MB)" 
FROM information_schema.tables 
GROUP BY table_schema;

7. Quelle est l'importance du fichier socket MySQL, et où se trouve-t-il ?

Le fichier de socket (généralement /var/run/mysqld/mysqld.sock ou /tmp/mysql.sock) est utilisé pour les connexions locales entre le client MySQL et le serveur sur la même machine, ce qui est plus rapide que les connexions TCP/IP car cela n'implique pas de surcharge réseau.

Si ce fichier est manquant ou a des permissions incorrectes, vous obtiendrez l'infâme erreur « Impossible de se connecter au serveur MySQL local via le socket ». Nous avons vu de nombreux développeurs rencontrer ce problème après le redémarrage du système ou des changements de permissions.

8. Comment sauvegarder une base de données MySQL depuis la ligne de commande Linux ?

La méthode la plus courante est d'utiliser la commande mysqldump :

mysqldump -u username -p database_name > backup.sql

Pour toutes les bases de données :

mysqldump -u username -p --all-databases > all_databases.sql

Mais les DBA expérimentés connaissent également les sauvegardes physiques utilisant des outils comme Percona XtraBackup, qui permettent des sauvegardes à chaud sans verrouiller les tables. Certains intervieweurs approfondissent et posent des questions sur les scripts de sauvegarde automatisés utilisant des tâches cron, ce qui nous amène à la question suivante.

9. Comment planifieriez-vous des sauvegardes automatiques de MySQL en utilisant cron ?

Vous créeriez un script de sauvegarde et le programmeriez avec cron :

crontab -e

Puis ajoutez une ligne comme :

0 2 * * * /usr/bin/mysqldump -u root -pYourPassword --all-databases > /backup/mysql_$(date +\%Y\%m\%d).sql

Cela exécute une sauvegarde tous les jours à 2 heures du matin. Cependant, une bonne réponse mentionne également que stocker les mots de passe dans les tâches cron est un risque de sécurité, et vous devriez utiliser le fichier ~/.my.cnf avec des permissions appropriées à la place.

10. Comment surveillez-vous les performances de MySQL sur Linux ?

Les intervieweurs adorent cette question car elle teste plusieurs compétences. Au niveau du système d'exploitation, vous pouvez utiliser :

top                    # Check CPU and memory usage
iostat                 # Check disk I/O
vmstat                 # Check system performance

Pour la surveillance spécifique à MySQL :

SHOW PROCESSLIST;                    # See running queries
SHOW STATUS;                         # Server status variables
SHOW ENGINE INNODB STATUS;           # InnoDB specific stats

Les outils comme mytop, innotop ou pt-query-digest de Percona Toolkit méritent également d'être mentionnés.

Nous avons remarqué que de nombreux candidats connaissent les commandes SQL mais ont du mal avec les outils de surveillance côté Linux. Les deux sont également importants dans les environnements de production.