Binlogを「クエリ」して、特定の日付にデータベースで何が実行されたかを確認する方法を見つけようとしています。たとえば、mysqlbinlog binlogを実行すると、処理は永久に実行され、特にbinlogが巨大な場合は、そこで何が正確に実行されたかを確認する必要があります。ありがとうございました!
mysqlbinlog 日時スタンプを与えることができます
これがサンプルのdatadirフォルダーです
[root@********* mysql]# ls -l /var/lib/mysql/mysql-bin.*
-rw-rw---- 1 mysql mysql 1073742028 Aug 13 03:29 /var/lib/mysql/mysql-bin.003111
-rw-rw---- 1 mysql mysql 1073741943 Aug 15 13:37 /var/lib/mysql/mysql-bin.003112
-rw-rw---- 1 mysql mysql 434864318 Aug 16 16:00 /var/lib/mysql/mysql-bin.003113
-rw-rw---- 1 mysql mysql 57 Aug 15 13:37 /var/lib/mysql/mysql-bin.index
午前10時45分から午前2時25分までのすべての実行を確認したいとしますPM 8月14日。8月14日はすべて/var/lib/mysql/mysql-bin.003112
。以下を実行します。
mysqlbinlog --start-datetime="2012-08-14 10:45:00" --stop-datetime="2012-08-14 14:25:00" /var/lib/mysql/mysql-bin.003112 > SQL.txt
範囲が8月13日午後5時から8月14日午前2時までの場合、2つのバイナリログにまたがる必要があります。したがって、次を実行します。
mysqlbinlog --start-datetime="2012-08-13 17:00:00" --stop-datetime="2012-08-14 02:00:00" /var/lib/mysql/mysql-bin.003111 /var/lib/mysql/mysql-bin.003112 > SQL.txt
試してみる !!!
私がそれをする最も速い方法、
mysqlbinlog | grep'YYYY-MM-DD HH:MM '
最大binlogサイズを高い値に設定している場合、またはまったく設定していない場合(デフォルトは2 GBだと思います)、それがmysqlbinlogが変換するのに時間がかかる理由であり、それがまさにその方法です。
binログファイルを巨大にし、解析に時間がかかるもう1つの理由は、使用しているレプリケーションモードです。行ベースのファイルは大きくなります。