MySQLデータベースサーバーは、データベースへのトランザクションごとにバイナリログファイルを生成します。ただし、管理者がmy.cny構成ファイルの「log-bin」パラメータを無効にしたりコメントアウトしたりしない場合に限ります。バイナリログファイルはバイナリ形式で書き込まれます。バイナリログ、またはlogbinとも呼ばれるものは、主にMySQLデータベースのレプリケーションの目的で使用されますが、mysqlbinlogユーティリティが役立つテキスト形式のバイナリログの内容を調べたり読み取ったりする必要がある場合があります。
通常はhost_name-bin.xxxxxx形式の名前を持ち、/ var / lib / mysqlディレクトリに保存されているバイナリログファイルは、読み取り不可能なバイナリ形式であるため、開いてすぐに読み取ることができませんでした。バイナリログをテキスト形式で読み取るには、mysqlbinlogコマンドを使用できます。このコマンドは、レプリケーション設定でスレーブサーバーによって書き込まれたリレーログファイルも読み取ることができます。リレーログの形式は、バイナリログファイルと同じです。
mysqlbinlogユーティリティを使用するのは簡単です。SSH経由でシェルにrootとしてログインした後(そうでない場合はユーザー名とパスワードを指定する必要があります)、次のコマンド構文を使用してmysqlbinlogを呼び出すだけです。
mysqlbinlog [options] log_file ...
したがって、binlog.000001という名前のバイナリログファイルの内容を読み取って表示するには、次のコマンドを使用します。
mysqlbinlog binlog.000001
バイナリログファイルとそのデータは非常に膨大になる可能性が高いため、画面上で何かを読み取ることはほとんど不可能です。ただし、次のコマンドを使用して、mysqlbinlogの出力をファイルにパイプして、後でテキストエディタで参照できるように開くことができます。
mysqlbinlog binlog.000001 > filename.txt
バイナリログから取得されるデータの量を減らすために、返されるデータを制限するために使用できるいくつかのオプションがあります。便利なものを以下に示します:
–start-datetime =datetime
タイムスタンプがdatetime引数以降の最初のイベントでバイナリログの読み取りを開始します。日時の値は、mysqlbinlogを実行するマシンのローカルタイムゾーンを基準にしています。値は、DATETIMEまたはTIMESTAMPデータ型で受け入れられる形式である必要があります。例:
mysqlbinlog --start-datetime="2005-12-25 11:25:56" binlog.000001
–stop-datetime =datetime
日時引数と同じかそれ以降のタイムスタンプを持つ最初のイベントで、バイナリログの読み取りを停止します。このオプションは、ポイントインタイムリカバリに役立ちます。日時の値については、–start-datetimeオプションの説明を参照してください。
–start-position =N
N引数に等しい位置を持つ最初のイベントでバイナリログの読み取りを開始します。このオプションは、コマンドラインで指定された最初のログファイルに適用されます。
–stop-position =N
N引数以上の位置を持つ最初のイベントで、バイナリログの読み取りを停止します。このオプションは、コマンドラインで指定された最後のログファイルに適用されます。
mysqlbinlogの使用法の詳細については、こちらをご覧ください。