mysqlbinlog (バイナリログファイルを処理ユーティリティ)

no-defaults

サーバが生成するバイナリログファイルはバイナリフォーマットで書かれています。
これらのファイルをテキストフォーマットで確認するには、mysqlbinlogユーティリティを使用してください。
それに加えて、複製セットアップ内のスレーブサーバによって書き出されたリレイログファイルを読み取るのに
mysqlbinlogを使用することもできます。リレイログはバイナリログファイルと同じフォーマットです。

[root@localhost data]#mysqlbinlog --no-defaults mysql-bin.000008

http://dev.mysql.com/doc/refman/5.1/ja/mysqlbinlog.html

※–no-defaultsオプションはmy.cnfの中でDefaultの文字コードが設定されてある場合に必要。

[root@localhost data]# mysqlbinlog --no-defaults mysql-bin.000008
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
DELIMITER /*!*/;
# at 4
#090127 17:15:55 server id 1 end_log_pos 106 Start: binlog v 4, server v 5.1.25-rc-log created 090127 17:15:55 at startup
ROLLBACK/*!*/;
BINLOG ‘
u8J+SQ8BAA4xLjI1LXJjLWxvZwAAAAAAA
‘/*!*/;
# at 106
#090127 17:16:08 server id 1 end_log_pos 453 Query thread_id=2 exec_time=0 error_code=0
use DBNAME /*!*/;
SET TIMESTAMP=1233044168/*!*/;
SET @@session.pseudo_thread_id=2/*!*/;
SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1/*!*/;
SET @@session.sql_mode=0/*!*/;

■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
mysqlbinlogコマンドは特定の時間までリカバリーするときなどにも使われる、
mysqlの管理者は理解しておく必要がある。
※ Oracleのアーカイブログ適用と同じOracleを運用していた時には、
時間指定で戻した(mysqlオプション: –stop-datetime)経験はありませんが
特定のArchiveログの適用(mysqlオプション: –stop-position)する事は
頻繁に発生しておりました。

==========================================================
MYSQLBINLOGのヘルプ抜粋
==========================================================
mysqlbinlog Ver 3.3 for pc-linux-gnu at i686
By Monty and Sasha, for your professional use
This software comes with NO WARRANTY: This is free software,
and you are welcome to modify and redistribute it under the GPL license

Dumps a MySQL binary log in a format usable for viewing or for piping to
the mysql command line client

MYSQLのバイナリーログを読むViewとして利用する事が出来ます。

Usage: mysqlbinlog [options] log-files
-?, –help Display this help and exit.
–base64-output[=name]
Determine when the output statements should be
base64-encoded BINLOG statements: ‘never’ disables it and
works only for binlogs without row-based events; ‘auto’
is the default and prints base64 only when necessary
(i.e., for row-based events and format description
events); ‘always’ prints base64 whenever possible.
‘always’ is for debugging only and should not be used in
a production system. The default is ‘auto’.
–base64-output is a short form for
–base64-output=always.
–character-sets-dir=name
Directory where character sets are.
-d, –database=name List entries for just this database (local log only).

指定されたデータベースのログのみをsqlファイルに出力する。
例)
$ mysqlbinlog --database="TEST" \
/backup/mysql-bin.000019 > /backup/recovery.sql

–debug-check Check memory and open file usage at exit .
–debug-info Print some debug info at exit.
-D, –disable-log-bin
Disable binary log. This is useful, if you enabled
–to-last-log and are sending the output to the same
MySQL server. This way you could avoid an endless loop.
You would also like to use it when restoring after a
crash to avoid duplication of the statements you already
have. NOTE: you will need a SUPER privilege to use this
option.

バイナリログの出力を無効にする。

-F, –force-if-open Force if binlog was not closed properly.
-f, –force-read Force reading unknown binlog events.
-H, –hexdump Augment output with hexadecimal and ASCII event dump.
-h, –host=name Get the binlog from server.
-l, –local-load=name
Prepare local temporary files for LOAD DATA INFILE in the
specified directory.
-o, –offset=# Skip the first N entries.
-p, –password[=name]
Password to connect to remote server.
-P, –port=# Port number to use for connection or 0 for default to, in
order of preference, my.cnf, $MYSQL_TCP_PORT,
/etc/services, built-in default (3306).
-j, –position=# Deprecated. Use –start-position instead.
–protocol=name The protocol of connection (tcp,socket,pipe,memory).
-R, –read-from-remote-server
Read binary logs from a MySQL server
-r, –result-file=name
Direct output to a given file.
–server-id=# Extract only binlog entries created by the server having
the given id.
–set-charset=name Add ‘SET NAMES character_set’ to the output.
-s, –short-form Just show regular queries: no extra info and no row-based
events. This is for testing only, and should not be used
in production systems. If you want to suppress
base64-output, consider using –base64-output=never
instead.
-S, –socket=name Socket file to use for connection.
–start-datetime=name
Start reading the binlog at first event having a datetime
equal or posterior to the argument; the argument must be
a date and time in the local time zone, in any format
accepted by the MySQL server for DATETIME and TIMESTAMP
types, for example: 2004-12-25 11:25:56 (you should
probably use quotes for your shell to set it properly).

バイナリログからの開始日時を指定し、その時点からのログがsqlファイルに出力される。
例)
$ mysqlbinlog --start-datetime="2006-12-13 06:30:00" \
/backup/mysql-bin.000019 > /backup/recovery.sql

–start-position=# Start reading the binlog at position N. Applies to the
first binlog passed on the command line.

指定された位置からログを読み始める。
このオプションはコマンドラインで指定された最初のバイナリログファイルに適用される。
例)
$ mysqlbinlog --start-position=7743 \
/backup/mysql-bin.000017 /backup/mysql-bin.000018 > /backup/recovery.sql

–stop-datetime=name
Stop reading the binlog at first event having a datetime
equal or posterior to the argument; the argument must be
a date and time in the local time zone, in any format
accepted by the MySQL server for DATETIME and TIMESTAMP
types, for example: 2004-12-25 11:25:56 (you should
probably use quotes for your shell to set it properly).

バイナリログからの終了日時を指定し、その時点までのログがsqlファイルに出力される。
例)
$ mysqlbinlog --stop-datetime="2006-12-13 08:00:00" \
/backup/mysql-bin.000019 > /backup/recovery.sql

–stop-position=# Stop reading the binlog at position N. Applies to the
last binlog passed on the command line.

指定された位置までログを読み込む。
このオプションはコマンドラインで指定された最後のバイナリログファイルに適用される。
例)
$ mysqlbinlog --stop-position=15324 \
/backup/mysql-bin.000017 /backup/mysql-bin.000018 > /backup/recovery.sql

-t, –to-last-log Requires -R. Will not stop at the end of the requested
binlog but rather continue printing until the end of the
last binlog of the MySQL server. If you send the output
to the same MySQL server, that may lead to an endless
loop.
-u, –user=name Connect to the remote server as username.
-v, –verbose Reconstruct SQL statements out of row events. -v -v adds
comments on column data types
-V, –version Print version and exit.
–open_files_limit=#
Used to reserve file descriptors for usage by this
program

==========================================================

Comments are closed.

Post Navigation