Répertoire d'articles
- Dépannage MySQL et optimisation de l'environnement de production
Dépannage MySQL et optimisation de l'environnement de production
1. Implémentation de cas: échecs courants de l'instance unique MySQL
Défaut 1
1. Phénomène d'échec
ERREUR 2002 (HY000): impossible de se connecter au serveur MySQL local via le socket "/data/mysq/mysql.sock '(2)
2. Analyse des problèmes
La base de données n'est pas démarrée ou le port de la base de données est bloqué par le pare-feu
3. Solution
Démarrez la base de données ou ouvrez le port d'écoute de la base de données sur le pare-feu
Défaut deux
1. Phénomène d'échec
ERREUR 1045 (28000): Accès refusé pour l'utilisateur 'root @' localhost (en utilisant le mot de passe: NON)
2. Analyse des problèmes
Mot de passe incorrect ou pas d'accès
3. Solution
Modifiez le fichier de configuration principal de my.cnf et ajoutez des tables skip-grant sous [mysqld]
- update met à jour le champ authentication_string de la table utilisateur
- Réautoriser.
Défaut trois
1. Phénomène d'échec
Le problème de connexion à distance lente à la base de données se produit parfois lors de l'utilisation d'une connexion à distance à la base de données
2. Analyse des problèmes
Résolution DNS lente, trop de connexions client
3. Solution
- Modifiez le fichier de configuration principal my.cnf (ajoutez le paramètre skip-name-resolution)
- L'autorisation de base de données interdit l'utilisation de noms d'hôte
Défaut quatre
1. Phénomène d'échec
Impossible d'ouvrir le fichier: 'xxX_ forums.MYI'. (numéro d'erreur: 145)
2. Analyse des problèmes
- Le serveur est arrêté anormalement, l'espace où se trouve la base de données est plein ou une autre raison inconnue endommage la table de la base de données
- Le groupe d'appartenance du fichier a changé en raison de la copie de la base de données
3. Solution
- Réparer la table de données (myisamchk, phpMyAdmin)
- Modifier le groupe du fichier
Défaut cinq
1. Phénomène d'échec
ERREUR 1129 (HY000): l'hôte xxx.oxx.xxx.xxx est bloqué en raison de nombreuses erreurs de connexion; débloquer avec 'mysqladmin flush-hosts'
2. Analyse des problèmes
Nombre maximal d'erreurs de connexion dépassé
3. Solution
- Vider le cache (mot-clé flush-hosts)
- Modifier mysq | fichier de configuration (max_ connect_ errors = 1000)
Défaut six
1. Phénomène d'échec
Trop de connections
2. Analyse des problèmes
Le nombre de connexions dépasse la limite de connexion maximale de MySQL
3. Solution
- Modifier le fichier de configuration MySQL (max_ connections = 10000)
- Modifiez temporairement les paramètres: set GLOBAL max_ connections = 10000;
Défaut sept
1. Phénomène d'échec
Attention: le fichier de configuration accessible en écriture mondiale /etc/my.cnf est ignoré ERREUR! MySQL est en cours d'exécution mais le fichier PID est introuvable
2. Analyse des problèmes
Problème d'autorisation du fichier de configuration MySQL /etc/my.cn
3. Solution
chmod 644 /etc/my.cnf
Défaut huit
1. Phénomène d'échec
InnoDB: Erreur: page 14178 numéro de séquence du journal 29455369832
InnoDB: est dans le futur! Numéro de séquence du journal système actuel 29455369832
2. Analyse des problèmes
Le fichier de données Innodb est endommagé
3. Solution
Modifiez le fichier de configuration my.cnf (innodb_ force_recovery = 4)
Sauvegarder les fichiers de données après le démarrage de la base de données
Utilisez des fichiers de sauvegarde pour restaurer les données
2. Implémentation de cas: échecs courants de l'environnement maître-esclave MySQL
Défaut un
1. Phénomène d'échec
Slave_ I0_ L'exécution à partir de la bibliothèque est NON
Le thread d'E / S esclave s'arrête car le maître et l'esclave ont des identifiants de serveur MySQL égaux; ces identifiants doivent être différents pour que la réplication fonctionne (ou l'option --replicate-same-server-id doit être utilisée sur l'esclave mais cela n'a pas toujours de sens; veuillez consulter le manuel avant de l'utiliser).
2. Analyse des problèmes:
La valeur de l'id du serveur de la bibliothèque principale et de la bibliothèque esclave est la même
3. Solution
- Modifiez la valeur de l'ID serveur de la bibliothèque esclave pour qu'elle soit différente de la bibliothèque principale
- Redémarrez la base de données et synchronisez à nouveau
Défaut deux
1. Phénomène d'échec:
Slave_ I0_ L'exécution à partir de la bibliothèque est NON
2. Analyse des problèmes:
La clé primaire est en conflit ou la base de données principale supprime ou met à jour les données, l'enregistrement est introuvable dans la base de données et les données sont modifiées.
3. Solution
- 方法 一
mysql> arrêter l'esclave;
mysql> set GLOBAL SQL_SLAVE_ SKIP_COUNTER = 1;
mysql> démarrer l'esclave; - Méthode deux
set global read_ only = true;
Défaut trois
1. Phénomène d'échec
Erreur lors de l'initialisation de la position du journal du relais: erreur 1/0 lors de la lecture de l'en-tête à partir du journal binaire
2. Analyse des problèmes
Le bac relais du journal de relais de la bibliothèque est endommagé
3. Solution
Réparez manuellement, trouvez à nouveau le binlog synchronisé et les points de position, puis resynchronisez
mysql> CHANGE MASTER TO MASTER_LOG_FILE = 'mysql-bin.xx', MASTER_LOG_POS = xxx;
3. Implémentation de cas: optimisation MySQL
1. Optimisation matérielle
- CPU: Il est recommandé d'utiliser un processeur symétrique multicanal à architecture SMP
- RAM: RAM physique supérieure à 4 Go
- Disque: matrice de disques RAID-0 + 1 ou disque SSD
2. Optimisation du fichier de configuration MySQL
- Ajuster les éléments de configuration
3. Optimisation SQL
- Essayez d'utiliser un arc de câble | Vérifiez
- Optimiser la pagination
- Optimisation GROUP BY
4. Optimisation de l'architecture MySQL
- Choix d'architecture: maître-esclave, maître-maître, un maître-multi-esclave, multi-maître-multi-esclave