Guide de dépannage du service MariaDB
MariaDB est un système de gestion de bases de données relationnelles open-source, largement utilisé dans divers scénarios d'application. Bien que MariaDB fonctionne généralement de manière stable, vous pouvez parfois rencontrer des pannes de service ou des problèmes de performance. Cet article expliquera en détail comment dépanner le service MariaDB dans ServBay, y compris les problèmes courants, les étapes de diagnostic et les solutions. ServBay fonctionne sur un système d'exploitation macOS et est livré avec différentes versions de MariaDB. Par conséquent, dans certaines commandes, il est nécessaire de spécifier des fichiers de configuration et des répertoires spécifiques à la version.
Problèmes courants et solutions
1. Le service MariaDB ne peut pas démarrer
Causes possibles
- Fichier de configuration incorrect
- Port occupé
- Problèmes de permission
Solutions
Vérifier le fichier de configuration : Assurez-vous que le fichier de configuration
my.cnf
est syntaxiquement correct, le chemin est :bash/Applications/ServBay/etc/mariadb/11.3/my.cnf
1Utilisez la commande suivante pour valider le fichier de configuration :
bashmysqld --defaults-file=/Applications/ServBay/etc/mariadb/11.3/my.cnf --validate-config
1Vérifier l'occupation du port : Assurez-vous que le port utilisé par MariaDB (par défaut 3306) n'est pas occupé par un autre processus. Utilisez la commande suivante pour vérifier l'occupation du port :
bashlsof -i :3306
1Vérifier les permissions : Assurez-vous que les permissions du répertoire de données de MariaDB et du fichier de configuration sont correctes. Utilisez les commandes suivantes pour vérifier les permissions :
bashls -l /Applications/ServBay/db/mariadb/11.3 ls -l /Applications/ServBay/etc/mariadb/11.3/my.cnf
1
2Redémarrer le service : Essayez de redémarrer le service MariaDB :
bashservbayctl restart mariadb 11.3
1
2. Impossible de se connecter à MariaDB
Causes possibles
- Service MariaDB non démarré
- Pare-feu bloquant la connexion
- Problèmes de permissions utilisateur
Solutions
Vérifier l'état du service : Assurez-vous que le service MariaDB est en cours d'exécution :
bashservbayctl status mariadb 11.3
1Vérifier les paramètres du pare-feu : Assurez-vous que le pare-feu autorise le port MariaDB (par défaut 3306) :
bashsudo /usr/libexec/ApplicationFirewall/socketfilterfw --add /Applications/ServBay/bin/mysqld sudo /usr/libexec/ApplicationFirewall/socketfilterfw --unblockapp /Applications/ServBay/bin/mysqld
1
2Vérifier les permissions utilisateur : Assurez-vous que l'utilisateur dispose des permissions suffisantes pour se connecter à la base de données :
sqlSHOW GRANTS FOR 'your_username'@'localhost';
1Test de connexion : Utilisez la commande suivante pour tester la connexion :
bashmysql --defaults-file=/Applications/ServBay/etc/mariadb/11.3/my.cnf -u your_username -p -h localhost -P 3306
1
3. Problèmes de performance
Causes possibles
- Requêtes non optimisées
- Mauvaise configuration du cache
- Absence d'index
Solutions
Optimiser les requêtes : Utilisez
EXPLAIN
pour analyser les performances des requêtes et optimisez en conséquence :sqlEXPLAIN SELECT * FROM your_table_name WHERE column_name = 'value';
1Ajuster le cache : Ajustez les paramètres de cache dans
my.cnf
, par exemple :[mysqld] query_cache_size = 64M innodb_buffer_pool_size = 1G
1
2
3Créer des index : Assurez-vous que les colonnes fréquemment interrogées sont indexées :
sqlCREATE INDEX idx_column_name ON your_table_name(column_name);
1
4. Crash de la base de données
Causes possibles
- Problème matériel
- Conflit logiciel
- Mauvaise configuration
Solutions
Vérifier les journaux d'erreurs : Consultez les journaux d'erreurs de MariaDB pour trouver la cause spécifique du crash. Le chemin des journaux d'erreurs est :
bash/Applications/ServBay/logs/mariadb/11.3.err
1Réparer la base de données : Utilisez l'outil
mysqlcheck
pour réparer la base de données :bashmysqlcheck --defaults-file=/Applications/ServBay/etc/mariadb/11.3/my.cnf -u your_username -p --auto-repair --all-databases
1Restaurer les données : Si les fichiers de la base de données sont endommagés, vous pouvez restaurer les données à partir d'une sauvegarde. Le chemin des fichiers de sauvegarde est :
bash/Applications/ServBay/backup/mariadb/11.3
1
5. Problèmes de sauvegarde et de restauration
Causes possibles
- Fichier de sauvegarde corrompu
- Commande de restauration incorrecte
Solutions
Vérifier le fichier de sauvegarde : Assurez-vous que le fichier de sauvegarde est complet et non corrompu. Utilisez la commande suivante pour vérifier la taille et l'intégrité du fichier de sauvegarde :
bashls -lh /Applications/ServBay/backup/mariadb/11.3/your_backup.sql
1Restaurer correctement la base de données : Utilisez l'outil
mysql
pour restaurer correctement la base de données :bashmysql --defaults-file=/Applications/ServBay/etc/mariadb/11.3/my.cnf -u your_username -p your_database < /Applications/ServBay/backup/mariadb/11.3/your_backup.sql
1
Problème spécifique : ib_logfile0 was not found
et InnoDB: Missing FILE_CHECKPOINT(47594) at 47594
Causes possibles
- Bug de MariaDB 11.5.1
Journaux d'erreurs
240618 22:37:46 mysqld_safe Starting mariadbd daemon with databases from /Applications/ServBay/db/mariadb/11.5
2024-06-18 22:37:46 0 [Note] Starting MariaDB 11.5.1-MariaDB-log source revision 65079ece42f383bdeb9b3f913a833a6f0123919d as process 3323
2024-06-18 22:37:46 0 [Warning] Setting lower_case_table_names=2 because file system for /Applications/ServBay/db/mariadb/11.5/ is case insensitive
2024-06-18 22:37:47 0 [Warning] --innodb-file-per-table is deprecated and will be removed in a future release
2024-06-18 22:37:47 0 [Note] InnoDB: Compressed tables use zlib 1.3.1
2024-06-18 22:37:47 0 [Note] InnoDB: Number of transaction pools: 1
2024-06-18 22:37:47 0 [Note] InnoDB: Using crc32 + pclmulqdq instructions
2024-06-18 22:37:47 0 [Note] InnoDB: Initializing buffer pool, total size = 4.000GiB, chunk size = 64.000MiB
2024-06-18 22:37:47 0 [Note] InnoDB: Completed initialization of buffer pool
2024-06-18 22:37:47 0 [ERROR] InnoDB: File /Applications/ServBay/db/mariadb/11.5/ib_logfile0 was not found
2024-06-18 22:37:47 0 [ERROR] InnoDB: Plugin initialization aborted with error Generic error
2024-06-18 22:37:47 0 [Note] InnoDB: Starting shutdown...
2024-06-18 22:37:47 0 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
2024-06-18 22:37:47 0 [Note] Plugin 'FEEDBACK' is disabled.
2024-06-18 22:37:47 0 [Note] Plugin 'wsrep-provider' is disabled.
2024-06-18 22:37:47 0 [ERROR] Unknown/unsupported storage engine: InnoDB
2024-06-18 22:37:47 0 [ERROR] Aborting
240618 22:37:48 mysqld_safe mysqld from pid file /Applications/ServBay/tmp/mariadb-11.5.pid ended
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
240618 23:22:28 mysqld_safe Starting mariadbd daemon with databases from /Applications/ServBay/db/mariadb/11.5
2024-06-18 23:22:28 0 [Note] Starting MariaDB 11.5.1-MariaDB-log source revision 65079ece42f383bdeb9b3f913a833a6f0123919d as process 6667
2024-06-18 23:22:28 0 [Warning] Setting lower_case_table_names=2 because file system for /Applications/ServBay/db/mariadb/11.5/ is case insensitive
2024-06-18 23:22:29 0 [Warning] --innodb-file-per-table is deprecated and will be removed in a future release
2024-06-18 23:22:29 0 [Note] InnoDB: Compressed tables use zlib 1.3.1
2024-06-18 23:22:29 0 [Note] InnoDB: Number of transaction pools: 1
2024-06-18 23:22:29 0 [Note] InnoDB: Using crc32 + pclmulqdq instructions
2024-06-18 23:22:29 0 [Note] InnoDB: Initializing buffer pool, total size = 4.000GiB, chunk size = 64.000MiB
2024-06-18 23:22:29 0 [Note] InnoDB: Completed initialization of buffer pool
2024-06-18 23:22:29 0 [ERROR] InnoDB: Missing FILE_CHECKPOINT(47594) at 47594
2024-06-18 23:22:29 0 [ERROR] InnoDB: Log scan aborted at LSN 47594
2024-06-18 23:22:29 0 [ERROR] InnoDB: Plugin initialization aborted with error Generic error
2024-06-18 23:22:29 0 [Note] InnoDB: Starting shutdown...
2024-06-18 23:22:29 0 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
2024-06-18 23:22:29 0 [Note] Plugin 'FEEDBACK' is disabled.
2024-06-18 23:22:29 0 [Note] Plugin 'wsrep-provider' is disabled.
2024-06-18 23:22:29 0 [ERROR] Unknown/unsupported storage engine: InnoDB
2024-06-18 23:22:29 0 [ERROR] Aborting
240618 23:22:29 mysqld_safe mysqld from pid file /Applications/ServBay/tmp/mariadb-11.5.pid ended
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Solutions
Référez-vous à l'article modifier les paramètres de MariaDB, trouvez my.cnf
, puis suivez les étapes détaillées ci-dessous :
Ajouter
innodb_force_recovery = 6
dans la section[mysqld]
dumy.cnf
Éditez le fichier de configuration
my.cnf
, trouvez[mysqld]
, et ajoutez la ligne suivante :iniinnodb_force_recovery = 6
1Démarrer MariaDB
Utilisez la commande suivante pour démarrer MariaDB :
bashservbayctl start mariadb 11.5
1Sauvegarder MariaDB
Utilisez la commande
mysqldump
pour sauvegarder toutes les bases de données :bashmysqldump -uroot -p --all-databases --opt > /Applications/ServBay/backup/mariadb/11.5/mariadb_backup.sql
1Désactiver le service MariaDB
Dans le panneau de gestion de ServBay, désactivez le service MariaDB 11.5
Supprimer
innodb_force_recovery = 6
dumy.cnf
Éditez le fichier de configuration
my.cnf
et supprimez la ligne suivante :iniinnodb_force_recovery = 6
1Renommer le répertoire
11.5
Renommez le répertoire de données de MariaDB
11.5
en11.5.bak
:bashmv /Applications/ServBay/db/mariadb/11.5 /Applications/ServBay/db/mariadb/11.5.bak
1Changer de version de MariaDB
Remplacez MariaDB 11.5.1 par une version sans problème, comme 11.5.0 ou une autre version telle que 11.3, 11.4.
Restaurer la sauvegarde MariaDB
Utilisez la commande
mysql
pour restaurer les bases de données :bashmysql -uroot -p < /Applications/ServBay/backup/mariadb/11.5/mariadb_backup.sql
1
Résumé
MariaDB est un système de gestion de bases de données puissant et flexible, mais divers problèmes peuvent survenir lors de son utilisation. Grâce à cet article, vous pouvez apprendre à dépanner le service MariaDB, y compris le diagnostic et les solutions aux problèmes courants. Nous espérons que cet article vous sera utile. Si vous avez des questions ou avez besoin d'une aide supplémentaire, n'hésitez pas à nous contacter.