mysqlのバイナリログが削除できないときにやったこと
はじめに
Dockerで開発中に以下のエラーに遭遇
General error: 3 Error writing file '/tmp/MYtPTBrC' (OS errno 28 - No space left on device)
はじめましてのエラーだったから解決方法の備忘録
発生環境
Docker / mysql:8.0.26
OS
# cat /etc/os-release PRETTY_NAME="Debian GNU/Linux 10 (buster)" NAME="Debian GNU/Linux" VERSION_ID="10" VERSION="10 (buster)" VERSION_CODENAME=buster ID=debian HOME_URL="https://www.debian.org/" SUPPORT_URL="https://www.debian.org/support" BUG_REPORT_URL="https://bugs.debian.org/"
MySQL
# mysql --version mysql Ver 8.0.26 for Linux on x86_64 (MySQL Community Server - GPL)
原因調査
ググった感じmysqlのバイナリログの肥大化が原因っぽい
mysqlに入ってログの確認
mysql> show master logs; +---------------+------------+-----------+ | Log_name | File_size | Encrypted | +---------------+------------+-----------+ | binlog.000001 | 3117966 | No | | binlog.000002 | 1073800265 | No | | binlog.000003 | 1073776277 | No | | binlog.000004 | 862945125 | No | +---------------+------------+-----------+ 4 rows in set (0.00 sec)
ログを削除する
mysql> purge master logs to 'binlog.000001'; ERROR 3 (HY000): Error writing file './binlog.index_crash_safe' (OS errno 28 - No space left on device)
消えないんだが〜〜〜?????
てかmysqlのデータって/var/lib/mysql/
の中にあるんじゃね と思いながら確認
# ls /var/lib/mysql/ | grep binlog binlog.000001 binlog.000002 binlog.000003 binlog.000004
いた・・・!
後は削除してあげればOK
rm /var/lib/mysql/binlog.*
(開発環境は削除でいいけど本番環境は退避とかのほうがいいかも)