MySQL 5.5.x のログ管理(バックアップ)

ログ管理(バックアップ)の基本は、ログの肥大化防止と保全です。ここでも、それらを第一に考えての管理方法(バックアップ方法)を採ることにします。もちろん、MySQL 5.5のマニュアルにも記載されている方法をベースにしたものです。

MySQL 5.5.xには下表(バージョン5.1の日本語マニュアルを元に筆者が加筆)に示すログがあります。バージョン5.5の場合も、バージョン5.1と同様です。
バイナリログについては、DBテーブルとデータのリカバリに必要となるもので、別記事『MySQL 5.5.9 のバックアップ/リカバリ』をご覧下さい。

ログ ファイル 説明
エラー ログ mysqldの起動、実行、および停止で発生した問題。mysqld_safeに関するログもある。
一般クエリ ログ クライアントとの接続と実行したクエリ。
バイナリ ログ データ変更のステートメント。レプリケーションにも使用。
スロー クエリ ログ long_query_time秒(デフォルトは10秒)より時間を要したクエリ、またはインデックスを使用しなかったクエリ。

また、ここでは、my.cnf中のログ関連の設定が次の通りであることを前提としています。

【/etc/my.cnfからログ関連設定を抜粋】

[mysqld]
log-error = /var/log/mysql/mysqld-error.log
general_log = 1
general_log_file = /var/log/mysql/mysql.log
slow_query_log = 1
slow_query_log_file = /var/log/mysql/slow.log
[mysqld_safe]
log-error = /var/log/mysql/mysqld_safe-error.log
1.手入力での管理(バックアップ)

あくまでも個別に実施する場合の実行手順です。

一般クエリログ(The General Query Log)

[root ~]# mv /var/log/mysql/mysql.log バックアップ先ディレクトリ/mysql_`date +%Y%m%d%H%M`.log
[root ~]# mysqladmin flush-logs

エラーログ(The Error Log)

[root ~]# mv /var/log/mysql/mysqld-error.log バックアップ先ディレクトリ/mysqld-error_`date +%Y%m%d%H%M`.log
[root ~]# mv /var/log/mysql/mysqld_safe-error.log バックアップ先ディレクトリ/mysqld_safe-error_`date +%Y%m%d%H%M`.log
[root ~]# mysqladmin flush-logs

スロークエリログ(The Slow Query Log)

[root ~]# mv /var/log/mysql/slow.log バックアップ先ディレクトリ/slow_`date +%Y%m%d%H%M`.log
[root ~]# mysqladmin flush-logs
2.cronでの定期的管理(バックアップ)

日次で、一般クエリログ、エラーログ、スロークエリログのバックアップを行うように設定します。
バックアップ先ディレクトリを/root/backup/mysqlとした例です。

[root ~]# vim /etc/cron.daily/mysql
#!/bin/sh
mv /var/log/mysql/mysql.log /root/backup/mysql/mysql_`date +%Y%m%d%H%M`.log
mv /var/log/mysql/mysqld-error.log /root/backup/mysql/mysqld-error_`date +%Y%m%d%H%M`.log
mv /var/log/mysql/mysqld_safe-error.log /root/backup/mysql/mysqld_safe-error_`date +%Y%m%d%H%M`.log
mv /var/log/mysql/slow.log /root/backup/mysql/slow_`date +%Y%m%d%H%M`.log
mysqladmin flush-logs

これで、CentOSのデフォルトだと毎日午前3時24分頃にバックアップが実行されるようになります。

Comments are closed.