mysqlbinlog
        ユーティリティを使用して、バイナリログファイル(see
        項4.10.4. 「バイナリログ」)を調べることができます。
      
shell> mysqlbinlog hostname-bin.001
        上記の例では、バイナリログ
        hostname-bin.001
        に含まれるすべてのクエリが、クエリにかかった時間、クエリを発行したスレッドの
        ID、クエリ発行時のタイムスタンプなどの情報とともに出力されます。
      
        mysqlbinlog の出力を
        mysql
        クライアントに送信できます。これは、古いバックアップでリカバリするときに使用します(see
        項4.5.1. 「データベースのバックアップ」)。
      
shell> mysqlbinlog hostname-bin.001 | mysql
または
shell> mysqlbinlog hostname-bin.[0-9]* | mysql
        また、mysqlbinlog
        の出力をテキストファイルにリダイレクトし、そのテキストファイルを編集(何らかの理由で実行したくないクエリを削除)し、テキストファイルから
        mysql
        に対してクエリを実行することもできます。
      
        mysqlbinlog には
        position=#
        オプションがあり、バイナリログでのオフセットが
        #
        以上のクエリだけを出力することができます。
      
MySQL サーバで実行するバイナリログが複数ある場合、単一の MySQL 接続で実行する方が安全です。以下は、安全でない例です。
shell>mysqlbinlog hostname-bin.001 | mysql # DANGER!!shell>mysqlbinlog hostname-bin.002 | mysql # DANGER!!
        最初のバイナリログに CREATE TEMPORARY
        TABLE が含まれ、2
        番目のバイナリログにこのテンポラリテーブルを使用するクエリが含まれていると、問題が発生します。最初の
        mysql
        が終了すると、テンポラリテーブルが破棄されるので、2
        番目の mysql は ``unknown table''
        を報告することになります。これが、すべてのバイナリログを単一の接続で実行すべき理由です。テンポラリテーブルを使用する場合には特に気を付けてください。2
        つの方法があります。
      
shell> mysqlbinlog hostname-bin.001 hostname-bin.002 | mysql
shell>mysqlbinlog hostname-bin.001 > /tmp/queries.sqlshell>mysqlbinlog hostname-bin.002 >> /tmp/queries.sqlshell>mysql -e "source /tmp/queries.sql"
        MySQL 4.0.14 以降、mysqlbinlog
        は、バイナリログから LOAD DATA
        INFILE を実行するための
        mysql
        に対する適切な入力を提供できるようになっています。ロードするデータがバイナリログに含まれるため(これは
        MySQL 4.0 の場合です。MySQL 3.23
        ではロードされたデータがバイナリログに書き込まれないため、バイナリログの内容を実行するにはオリジナルファイルが必要でした)、mysqlbinlog
        はこのデータをテンポラリファイルにコピーして
        LOAD DATA INFILE
        コマンドを出力し、mysql
        にこのテンポラリファイルをロードさせます。テンポラリファイルが作成されるデフォルトのディレクトリはテンポラリディレクトリです。これは、mysqlbinlog
        の local-load
        オプションで変更できます。
      
        MySQL 4.1
        より前は、同じ名前のテンポラリテーブルを使用する複数の異なるスレッドのクエリがバイナリログに含まれていました。そのため、これらのクエリが混ざっている場合、mysqlbinlog
        は mysql
        に対して適切な出力を提供できませんでした。これは、MySQL
        4.1 で解決されています。
      
        また、mysqlbinlog
        --read-from-remote-server
        を使用して、リモート MySQL
        サーバから直接バイナリログを読み取ることも可能です。ただし、より簡単に、稼動中の
        MySQL
        サーバにバイナリログを適用できるようにするため、これはいずれ廃止する予定です。
      
        詳細については、mysqlbinlog --help
        を実行してください。
      
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.

