No description, website, or topics provided.
C++ CMake
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
build
src
.gitignore
AUTHORS
CMakeLists.txt
COPYING
ChangeLog
INSTALL
NEWS
README
mysqlbinlogex.spec
test_commands.txt

README

・mysqlbinlogexについて

 mysqlのバイナリログは、以下の問題があります。(俺的に・・)

 ・すぐサイズが大きくなるため、1つのDBのログを追うために、相当時間がかかる。
 ・mysqlbinlogコマンドから出るデータは、1行になっていないため、grepとかしづらい。
 ・バイナリデータ突っ込んだりしている場合は、文字化けて、続きが読めなくなったりする。
 ・mysqlbinlogコマンドも、1Gクラスのログだと、とにかく遅い。
 ・ログを追ったり調査するだけの人間からすると、無意味なログが多すぎる。


 そのため、やっつけですが、以下の仕様で、バイナリログを閲覧するアプリを作ってみました。

 ・高速化のため、バイナリログを直接読み込む
 ・ログはgrepとか行いやすいように、「1行1クエリ」にする。(クエリ内改行は、スペース置換)
 ・クエリは、utf8mb4文字列以外であれば「?」に置換して、化けないようにする。
 ・DB(スキーマ)ごとにログをフォルダに振り分けて保存してくれる。
 ・時間フィルタとかも使いたい。

 
 上記の内容を実現したため、リードオンリーなログになりますが、ログを掘る必要のある方には、
 非常に有用なのではないかと思い、今後進化させていきたいので、公開しました。
 
 是非、バグや機能追加等のプルリクエストをお待ちしています。


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

とても簡単な使用方法:

mysqlbinlogex:
 -i : (必須)入力ファイル指定。mysqlのバイナリログ。5.5系と5.6系でチェック済(crc32対応)
 -o : (任意)出力先フォルダ。指定しなかったら、stdoutに書き出し。指定した場合は以下の動作。
    1.「指定されたフォルダ名」の下に、「データベース名称」のフォルダを作成。
    2.(指定されたフォルダ名)/(データベース名称)の中に、「(入力ファイル名).txt」というログファイルを書き出し。
    3.同一ファイル名がある場合は、上書き。
 -d : (任意)データベース名称フィルタ指定。指定されたDBに対して動作したログのみを表示。
 -s : (任意)表示開始日時フィルタ指定。対応フォーマットは、以下。hh:ii:ssを省略時は00:00:00
   'YY/mm/dd hh:ii:ss', 'YYYY/mm/dd hh:ii:ss', 'YY-mm-dd hh:ii:ss', 'YYYY-mm-dd hh:ii:ss'
   'YY/mm/dd_hh:ii:ss', 'YYYY/mm/dd_hh:ii:ss', 'YY-mm-dd_hh:ii:ss', 'YYYY-mm-dd_hh:ii:ss'
   'YY/mm/dd', 'YYYY/mm/dd', 'YY-mm-dd', 'YYYY-mm-dd'
 -e : (任意)表示終了日時フィルタ指定。対応フォーマットは、以下。hh:ii:ssを省略時は00:00:00
 -h : 簡単なヘルプ。

mysqltxtlog:
 *** このコマンドは、mysqlbinlogexにて吐き出されたテキストログファイルをフィルタリング閲覧するのに使います。
 *** 上のコマンドだけで、事足りるのですが、-oを指定してログ分割を自動的に行わせている場合、各分割ログを日時フィルタ
 *** して見たい、という要望があったのでついでに作りました。
 -i : (必須)入力ファイル指定。mysqlbinlogexにて吐き出されたテキストログ。
 -d : (任意)データベース名称フィルタ指定。指定されたDBに対して動作したログのみを表示。
 -s : (任意)表示開始日時フィルタ指定。対応フォーマットは、以下。hh:ii:ssを省略時は00:00:00
   'YY/mm/dd hh:ii:ss', 'YYYY/mm/dd hh:ii:ss', 'YY-mm-dd hh:ii:ss', 'YYYY-mm-dd hh:ii:ss'
   'YY/mm/dd_hh:ii:ss', 'YYYY/mm/dd_hh:ii:ss', 'YY-mm-dd_hh:ii:ss', 'YYYY-mm-dd_hh:ii:ss'
   'YY/mm/dd', 'YYYY/mm/dd', 'YY-mm-dd', 'YYYY-mm-dd'
 -e : (任意)表示終了日時フィルタ指定。対応フォーマットは、以下。hh:ii:ssを省略時は00:00:00
 -h : 簡単なヘルプ。

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

現在の検証OS:Cent5系、RHEL5系(ほぼ一緒か・・)