[LINUX] Que faire si votre disque s'épuise en raison des journaux binaires MySQL

introduction

Cet article décrit ce qu'il faut faire si vous utilisez MySQL et que votre disque est épuisé en raison de journaux binaires.

La zone de données utilisée par MySQL a été épuisée, l'utilisation du disque est devenue 100% et MySQL n'a pas pu démarrer.

Après avoir enquêté sur la cause, il a été confirmé qu'une grande quantité de journaux binaires de 1,1 G était sortie dans le répertoire sous / data / mysql / utilisé comme zone de données.

Je veux puger et supprimer le journal binaire, mais je ne peux même pas me connecter à mysql car je ne peux pas non plus démarrer MySQL. Nous décrirons le support provisoire et permanent de tels cas.

solution temporaire

Tout d'abord, supprimez le journal binaire le plus ancien avec la commande rm et exécutez la commande df pour confirmer que l'espace libre a été sécurisé.

# rm /data/mysql/binlog.000169

/dev/sdb1        50G   49G  1.1G  98% /data

Puis lancez mysql. Confirmez qu'il a démarré normalement et connectez-vous à mysql.

# systemctl start mysql # systemctl status mysql # mysql -u root -p

Exécutez la commande suivante pour vérifier l'état du journal binaire.

mysql> SHOW MASTER STATUS\g;
+---------------+----------+--------------+------------------+-------------------+
| File          | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+---------------+----------+--------------+------------------+-------------------+
| binlog.000215 |      155 |              |                  |                   |
+---------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)

--Liste des journaux binaires

mysql> SHOW MASTER LOGS;
+---------------+------------+-----------+
| Log_name      | File_size  | Encrypted |
+---------------+------------+-----------+
| binlog.000170 | 1073742751 | No        |
| binlog.000171 | 1073751257 | No        |
| binlog.000172 | 1073757631 | No        |
| binlog.000173 | 1073755121 | No        |
| binlog.000174 | 1073752838 | No        |
| binlog.000175 | 1073743951 | No        |
| binlog.000176 | 1073748347 | No        |
| binlog.000177 | 1073751179 | No        |
| binlog.000178 | 1073763386 | No        |
| binlog.000179 | 1073765359 | No        |
| binlog.000180 | 1073745938 | No        |
| binlog.000181 | 1073763697 | No        |
| binlog.000182 | 1073744490 | No        |
| binlog.000183 | 1073761859 | No        |
| binlog.000184 | 1073775954 | No        |
| binlog.000185 | 1073757908 | No        |
| binlog.000186 | 1073773373 | No        |
| binlog.000187 | 1073755666 | No        |
| binlog.000188 | 1073743518 | No        |
| binlog.000189 | 1073782889 | No        |
| binlog.000190 | 1073756995 | No        |
| binlog.000191 | 1073770640 | No        |
| binlog.000192 | 1073743582 | No        |
| binlog.000193 | 1073757032 | No        |
| binlog.000194 | 1073754014 | No        |
| binlog.000195 | 1073757718 | No        |
| binlog.000196 | 1073746065 | No        |
| binlog.000197 | 1073745350 | No        |
| binlog.000198 | 1073751875 | No        |
| binlog.000199 | 1073745702 | No        |
| binlog.000200 | 1073754484 | No        |
| binlog.000201 | 1073762857 | No        |
| binlog.000202 | 1073761196 | No        |
| binlog.000203 | 1073755084 | No        |
| binlog.000204 | 1073836164 | No        |
| binlog.000205 | 1073745617 | No        |
| binlog.000206 | 1073753921 | No        |
| binlog.000207 | 1073771413 | No        |
| binlog.000208 | 1073764906 | No        |
| binlog.000209 | 1073767754 | No        |
| binlog.000210 | 1073781899 | No        |
| binlog.000211 | 1073744615 | No        |
| binlog.000212 | 1073744221 | No        |
| binlog.000213 | 1073770872 | No        |
| binlog.000214 |  323286661 | No        |
| binlog.000215 |     398814 | No        |
| binlog.000216 |     896660 | No        |
+---------------+------------+-----------+
47 rows in set (0.03 sec)

Supprimez les journaux binaires inutiles accumulés comme mesure temporaire. pour supprimer le fichier avant le binlog spécifié.

--Supprimer le journal binaire

mysql> PURGE MASTER LOGS TO 'binlog.000212';
Query OK, 0 rows affected, 1 warning (0.00 sec)

Exécutez à nouveau la commande df et confirmez que l'utilisation du disque a diminué.

/dev/sdb1        50G  4.0G   46G   8% /data

Support permanent

La cause directe de l'événement est conforme aux [Spécifications] MySQL (https://dev.mysql.com/doc/refman/8.0/en/replication-options-binary-log.html#sysvar_log_bin), avec les paramètres par défaut du journal binaire. Les journaux binaires ont continué à s'accumuler car la sortie était valide.

Dans les versions précédentes de MySQL, la journalisation binaire était désactivée par défaut et activée si vous spécifiiez l'option --log-bin. À partir de MySQL 8.0, la journalisation binaire est activée par défaut, que vous spécifiez ou non l'option --log-bin.

Définissez la rotation des journaux comme une réponse permanente et modifiez le paramètre afin que les journaux binaires ne soient pas accumulés. Après avoir modifié les paramètres, redémarrez MySQL.

# vi /etc/mysql/mysql.conf.d/mysqld.cnf

# binlog rotation
expire_logs_days = 7

Dans le cas ci-dessus, la rotation des journaux aura lieu dans 7 jours.

en conclusion

La cause première est une considération insuffisante au moment de la conception.

Recommended Posts

Que faire si votre disque s'épuise en raison des journaux binaires MySQL
Remède facile lorsque vous perdez votre paire de clés EC2
Que faire si yum casse
Que faire si vous ne pouvez pas construire un projet avec Maven
Que faire si pipreqs aboutit à UnicodeDecodeError
Que faire si mod_fcgid ne peut pas résoudre UnicodeEncodeError
Que faire si les rails ne fonctionnent pas
Que faire si pip ne peut pas être installé
Que faire si l'autocomplete-python d'atome ne fonctionne pas
Que faire si Docker-sync cesse soudainement de fonctionner
Que faire lorsqu'une erreur "service inconnu" est renvoyée par le serveur gRPC
Que faire si ubuntu dit que le mot de passe est trop court pour être modifié [commande passwd] [ubuntu]
Que faire si votre Jupyter Notebook pour les débutants demande un mot de passe ou un jeton
Que faire si vous ne pouvez pas installer mysqlclient
Aucun module nommé Que faire si vous obtenez "libs.resources"
ModuleNotFoundError: No module Que faire si vous obtenez 'sensorflow.contrib'
Que faire si l'installation de SciPy échoue sur CentOS
Que faire si une erreur de décodage Unicode se produit dans pip
Que faire si l'installation de pip ne parvient pas à installer les bibliothèques dépendantes
Que faire si sys / cdefs.h n'existe pas
Que faire si pyenv n'est pas activé (zsh)
Que faire si Jupyter Notebook sur WSL ne démarre pas automatiquement dans le navigateur
Que faire lorsque Modem Manager sous Linux interfère avec l'écriture de keymaps sur votre propre clavier
Que faire lorsque ʻarguments [0] .scrollIntoView (); `échoue dans python sélénium
Que faire si la dépendance du package ne peut pas être réparée
Que faire si pip donne une DistributionError dans Homebrew
Que faire si Combinaisons devient «couverture inconnue»
Que faire si vous ne pouvez pas trier les fichiers avec des indices
Que faire si une erreur 0xC0000005 se produit dans tf.train.start_queue_runners ()
Que faire si l'installation du package échoue lors du déploiement sur heroku
Que faire si `pip install matplot lib` échoue sur Mac
Que faire si vous ne pouvez pas vous connecter en tant que root
Que faire si vous ne pouvez pas utiliser le WiFi sous Linux
Que faire si Linux VLC ne peut plus tourner
Que faire si l'installation de pip mysqlclient échoue sur MacOS
Que faire si vous chattez ou suivez un fichier binaire et que le terminal est brouillé
CommandNotFoundError: Votre shell n'a pas été correctement configuré pour utiliser Que faire si vous obtenez "Honda activate"
Que faire lorsque vous obtenez des correspondances de fichier binaire (entrée standard) après la greffe d'un fichier texte
Que faire si Python ne fonctionne pas sur Git pour Windows
Que faire si vous ne pouvez pas installer pyaudio avec pip #Python
Que faire si vous obtenez moins zéro en Python
Que faire si Intellisense ne fonctionne pas avec Anaconda + VSCode + Tensorflow2.1
Que faire lorsque python dit "erreur fatale: fichier 'stdio.h' introuvable"
Que faire si vous obtenez une erreur de décodage Unicode avec l'installation de pip
Que faire si un avertissement de plate-forme non sécurisée apparaît lors de l'exécution de Python
Que faire si «Sans nom: 0» est ajouté dans to_csv-> read_csv des pandas
Que faire lorsque l'inode est épuisé sur EC2 Linux
Que faire si PyAudio ne peut pas être installé sur Python 3.7, 3.8, 3.9 sous Windows
Que faire si vous ne pouvez pas utiliser la poubelle dans Lubuntu 18.04.
Django: que faire si TemplateDoesNotExist dans / admin / après la configuration des modèles