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.
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
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.
La cause première est une considération insuffisante au moment de la conception.
Recommended Posts