MySQL 資料一覧

バイナリログの管理

2007/12/23更新

対応バージョン: 5.0.51

バイナリログは、ローテーションして使われる複数のログファイルとそれを管理するインデックスファイルとで構成される。

ファイルは/usr/local/mysql/var配下に格納され、それぞれ以下のようなファイル名で管理される。

ログファイル(複数)

データベースに対して実施した作業がタイムスタンプとともに格納されている。

後述のmysqlbinlogコマンドで内容を参照することが可能。

mysql-bin.000001
mysql-bin.000002
      :

インデックスファイル

ログファイルの名前が1行ずつ記述されている。

mysql-bin.index

バイナリログの使用状況は以下のクエリによって確認できる。

# mysql -u root -E -e "SHOW BINLOG EVENTS"
*************************** 1. row ***************************
   Log_name: mysql-bin.000001
        Pos: 4
 Event_type: Format_desc
  Server_id: 1
End_log_pos: 98
       Info: Server ver: 5.0.51-log, Binlog ver: 4
*************************** 2. row ***************************
   Log_name: mysql-bin.000001
        Pos: 98
 Event_type: Query
  Server_id: 1
End_log_pos: 1712
       Info: use `mysql`; CREATE TABLE IF NOT EXISTS db (Host char(60) ...(略)
:
*************************** 33. row ***************************
   Log_name: mysql-bin.000001
        Pos: 14838
 Event_type: Query
  Server_id: 1
End_log_pos: 14921
       Info: use `mysql`; DROP TABLE tmp_user
*************************** 34. row ***************************
   Log_name: mysql-bin.000001
        Pos: 14921
 Event_type: Stop
  Server_id: 1
End_log_pos: 14940
       Info: 

バイナリログの個別ファイル内の詳細情報はmysqlbinlogにて確認できる。

# mysqlbinlog mysql-bin.000001 | cat -n
 1  /*!40019 SET @@session.max_insert_delayed_threads=0*/;
 2  /*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
 3  DELIMITER /*!*/;
 4  # at 4
 5  #071223  0:53:01 server id 1  end_log_pos 98    Start: binlog v 4, server v 5.0.51-log created 071223  0:53:01 at startup
 6  ROLLBACK/*!*/;
 7  # at 98
 8  #071223  0:53:01 server id 1  end_log_pos 1712  Query   thread_id=1     exec_time=0   error_code=0
 9  use mysql/*!*/;
10  SET TIMESTAMP=1198338781/*!*/;
11  SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1/*!*/;
12  SET @@session.sql_mode=0/*!*/;
13  /*!\C utf8 *//*!*/;
14  SET @@session.character_set_client=33,@@session.collation_connection=33,@@session.collation_server=33/*!*/;
15  CREATE TABLE IF NOT EXISTS db (Host char(60) binary DEFAULT '' ...
    :

このようにバイナリログではデータベースに加えられた作業を全て位置情報(pos)及びタイムスタンプとともに記録しているので、前回バックアップ時以降のロールフォワードや任意の時点への復旧などが簡単に行える。