MySQLのバイナリログ(/var/lib/mysql/binlog)を適切に削除する方法
2024/05/23
レンタルしているVPS内のファイルを整理していると「/var/lib/mysql/binlog.xxxxxx」というファイルがあり、1ファイルあたり1GB近くと容量を圧迫しているので出来ることなら削除したかった。調べてみるとMySQLのバイナリログらしく、rmコマンド等で削除するとまずいらしい。以下に適切な対応方法のメモ。
対応方法
SSH接続して以下を実行。日時部分は適宜変更する。
#MySQLにrootで接続 mysql -u root -p #以下SQL文を実行 mysql> PURGE MASTER LOGS BEFORE '2022-12-31 23:59:59';
上記の場合だと「2022-12-31 23:59:59」以前のログが削除される。
リファレンス
https://dev.mysql.com/doc/refman/8.0/ja/purge-binary-logs.html
注意点
MySQL8.0.3以降の場合、ログ設定の「expire_logs_days」は非推奨のためか設定及び再起動を行うとMySQLが立ち上がらなかった。
代わりに設定するのであれば「binlog_expire_logs_seconds」を用いるのが良さそう。ただ、こちらは「expire_logs_days」と違ってデフォルトで30日設定になるようなので特に変更する必要は無さそう。
関連記事
-
-
MySQLでdatetime型データの〇日後を取得する方法(DATEDIFF)
MySQLでdatetime型データがあり、何日経過しているかを取得し、〇日経過 ...
-
-
MySQLで全角半角を区別せずに検索する方法(collate utf8_unicode_ci)
あるシステムでMySQLの検索時に「WHERE test_column coll ...
-
-
MySQLでREGEXPについて
SQL文にREGEXPというのを見てこれ何? となったのでメモ。 ■参考サイト ...
-
-
PHPからMySQLにシリアライズしたデータを格納
アンケートフォームみたいなのがあって、 今後も定期開催し、尚且つ質問内容は増減す ...
-
-
MySQLにてSELECT時にdate型のカラムから年齢を計算し取得する方法
MySQLにdate型のカラムに誕生年月日が格納されており、そこから年齢を計算し ...