MySQLのバイナリログを見てみる
VirtualBoxにCentOSをとりあえずインストール
の続き
MySQLのバイナリログを見てみる。
MySQLのインストール
とりあえずMySQLをインストールする。
$ sudo yum -y install mysql-server $ sudo service mysqld start $ sudo chkconfig mysqld on
バイナリログを出力する
今はまだバイナリログは出力されていない。
$ ls /var/lib/mysql/ ib_logfile0 ib_logfile1 ibdata1 mysql mysql.sock test
log-binを追加してバイナリログを出力するよう設定する。
$ sudo vi /etc/my.cnf [mysqld] ・・・ log-bin ←追加
$ sudo service mysqld restart
バイナリログのファイル「mysqld-bin.000001」が生成された。
$ ls /var/lib/mysql/ ib_logfile0 ib_logfile1 ibdata1 mysql mysql.sock mysqld-bin.000001 mysqld-bin.index test
バイナリログの中身を確認する
バイナリログの中身はmysqlbinlogで確認できる。
$ cd /var/lib/mysql $ sudo mysqlbinlog mysqld-bin.000001 /*!40019 SET @@session.max_insert_delayed_threads=0*/; /*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/; DELIMITER /*!*/; # at 4 #140705 21:44:46 server id 1 end_log_pos 106 Start: binlog v 4, server v 5.1.73-log created 140705 21:44:46 at startup # Warning: this binlog is either in use or was not closed properly. ROLLBACK/*!*/; BINLOG ' PvO3Uw8BAAAAZgAAAGoAAAABAAQANS4xLjczLWxvZwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAA+87dTEzgNAAgAEgAEBAQEEgAAUwAEGggAAAAICAgC '/*!*/; DELIMITER ; # End of log file ROLLBACK /* added by mysqlbinlog */; /*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
sudoを付けないと、下記のような出力になる。 $ mysqlbinlog mysqld-bin.000001 /*!40019 SET @@session.max_insert_delayed_threads=0*/; /*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/; DELIMITER /*!*/; mysqlbinlog: File 'mysqld-bin.000001' not found (Errcode: 13) DELIMITER ; # End of log file ROLLBACK /* added by mysqlbinlog */; /*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
データベースを更新してみる。
$ mysql -u root mysql> create database sample; mysql> quit
更新のSQLが記録されているのが確認できる。
$ sudo mysqlbinlog mysqld-bin.000001 ・・・ # at 106 #140705 21:47:25 server id 1 end_log_pos 193 Query thread_id=2 exec_time=0 error_code=0 SET TIMESTAMP=1404564445/*!*/; SET @@session.pseudo_thread_id=2/*!*/; SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/; SET @@session.sql_mode=0/*!*/; SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/; /*!\C latin1 *//*!*/; SET @@session.character_set_client=8,@@session.collation_connection=8,@@session.collation_server=8/*!*/; SET @@session.lc_time_names=0/*!*/; SET @@session.collation_database=DEFAULT/*!*/; create database sample /*!*/; DELIMITER ; # End of log file ROLLBACK /* added by mysqlbinlog */; /*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
ちなみに、この時点のPositionは下記のようになっている。
$ mysql -u root mysql> create database sample; mysql> show master status; +-------------------+----------+--------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +-------------------+----------+--------------+------------------+ | mysqld-bin.000001 | 193 | | | +-------------------+----------+--------------+------------------+
バイナリログの番号
現状、mysqld-bin.000001だけだが、
$ ls ib_logfile0 ib_logfile1 ibdata1 mysql mysql.sock mysqld-bin.000001 mysqld-bin.index sample test
再起動すると、
$ sudo service mysqld restart
mysqld-bin.000002が生成される。
$ ls ib_logfile0 ib_logfile1 ibdata1 mysql mysql.sock mysqld-bin.000001 mysqld-bin.000002 mysqld-bin.index sample test
この番号は、MySQLが再起動したり、
設定のmax_binlog_size(デフォルト1GB)のサイズに達したりすると
次の番号に切り替わるみたい。