データベースにインポートMySQLのバイナリログ

スクリプトへのI.はじめに
言語:bashスクリプト、awkは、sedの
機能:MySQLのバイナリログログフォーマットした後、データをロードするデータベースを直接インポートし、SQLでのbinlogログの分析を行います。
利点:効率はまだすることができ、進歩的な分析を通じてawkは。その理由は、タイプテーブルはDDL解析システムの利用で、バイナリログログを解析することにより、予期しないシステムのすべての種類で見つけることができ、分析の秒TPSレベルで行うことができます。
3つのスクリプトが取得binlog_analyze.tar.gz抽出した後
、直接データベース形式にデータを読み込むログにテキストを変換するために使用ビンログは:binlog_analyze.awk
binlog_analyze.sed:あなたはログインbinlogの形式のテキストを、いくつかの窓や改行を削除余分なタブが
run.shの:スクリプトは、ユーザーが直接呼び出して、上記の2つのスクリプトをカプセル化します。

第二に、スクリプトを使用
するスクリプトに与えられた権限を実行し、このディレクトリを入力します。
指定した1つのまたは複数のバイナリログを変換する必要があり、生成された結果は、同じサイズとバイナリログについては、.SQLを終了する、ターゲットディレクトリに置かれます。
./Run.sh ../db03-bin/db03-bin.000042 ../db03-bin/db03-bin.000043#
OK:../db03-bin/db03-bin.000042は、MySQLのレプリケーションは、ISログ!
OK :!MySQLのレプリケーションは、ログ../db03-bin/db03-bin.000043 IS
INGビンログフォーマットを..................

各ファイルの*の代わりに、ターゲットファイル、ディレクトリトラバーサルのターゲット、ターゲットディレクトリで別の用途、我々が扱う
#./run.sh ../db03-bin/*

../db03-bin/* LL
-rwxr XR-X-27-8月1日午後4時15アンディアンディ1073741986 DB03-bin.000033
-rwxr XR-X-27-8月1日ルート1325409484ルートDB03 bin.000033 16時51。 txt.awk.sql
-rwxr XR-X-27-8月1日アンディアンディ1073741881 16:12 DB03-bin.000034
-rwxr XR-X-27-8月1日ルート1310773234ルート-DB03のbin.000034.txt.awk 17:03。 SQL
生成されたファイルをデータベースに直接インポートすることができます。

データベースに第三に、ファイル

create database binlog_statis;
use binlog-statis;
DROP TABLE IF EXISTS bin_log;
CREATE TABLE `bin_log` (
`at_pos` INT(11) NOT NULL,
`at_time` TIMESTAMP NOT NULL ,
`server_id` INT(11) NOT NULL,
`end_log_pos` INT(11) NOT NULL,
`thread_type` VARCHAR(500) DEFAULT NULL,
`dml_type` VARCHAR(50) DEFAULT NULL,
`dml_table` VARCHAR(500) DEFAULT NULL,
`dml_sql` VARCHAR(5000) DEFAULT NULL
) ENGINE=myisam DEFAULT CHARSET=utf8;
mysql> LOAD DATA INFILE ‘/home/andy/db03-bin/db03-bin.000033.txt.awk.sql’ INTO TABLE binlog_statis.`bin_log` fields TERMINATED BY “|||||”;
Query OK, 3957099 rows affected, 700 warnings (51.89 sec)
Records: 3957099 Deleted: 0 Skipped: 0 Warnings: 700
mysql> LOAD DATA INFILE ‘/home/andy/db03-bin/db03-bin.000034.txt.awk.sql’ INTO TABLE binlog_statis.`bin_log` fields TERMINATED BY “|||||”;
Query OK, 3299350 rows affected, 1334 warnings (48.79 sec)
Records: 3299350 Deleted: 0 Skipped: 0 Warnings: 1334

ビンログ

ここでの警告は後に、あなた自身、そしてあなたができるサイクルの日、週、月をインポートする主な要因の長いSQL文、その上で分析を行うための一般的なインポートデータの期間、プラスインデックスに、制御することはできません。

インポートが完了した後、あなたが分析を開始することができ
、他のモニタリングによると#を、一定の期間が高いバースト取引、あなたは分析が第二に正確であることができます原因を、指定された期間でDDLを問い合わせることができることがわかりました。

ここではいくつかの一般的な分析ステートメントを使用すると、このテーブルを介して、より意味のあるデータを掘ることができる場合、私に知らせてください、です。
#TPSは、一定の期間の分あたりの数を計算します

SELECT
SUBSTR(at_time, 1, 16),
COUNT(*)
FROM
`bin_log`
WHERE dml_table <> ’0′
AND at_time > ’2012-08-18 12:00:00′
AND at_time < '2012-08-20 12:00:00'
GROUP BY SUBSTR(at_time, 1, 16)
ORDER BY SUBSTR(at_time, 1, 16) ;

#は、COM内部グローバルステータス出力の数パーセントに類似の期間、削除、実行、挿入、更新、の数を表示しますが、この時間は制限される場合があります。

SELECT
dml_type,
COUNT(*)
FROM
`bin_log`
WHERE at_time > ’2012-08-18 12:00:00′
AND at_time < '2012-08-20 12:00:00'
GROUP BY dml_type ;

#は、各テーブルの動作周波数を一定の期間を見ます

SELECT
dml_table,
COUNT(*)
FROM
`bin_log`
WHERE at_time > ’2012-08-18 12:00:00′
AND at_time < '2012-08-20 12:00:00'
AND dml_table <> ’0′
GROUP BY dml_table ;

#時間を表示し、テーブルの動作条件の様々な、あなたは明らかにDDL操作の種類の主な仕事の表を参照してくださいすることができます

SELECT
dml_table,
dml_type,
COUNT(*)
FROM
`bin_log`
WHERE at_time > ’2012-08-18 12:00:00′
AND at_time < '2012-08-20 12:00:00'
AND dml_table <> ’0′
GROUP BY dml_table,dml_type ;

#、訪問の期間中に10分間隔の表を見ます

SELECT
dml_table,
SUBSTR(at_time, 1, 15),
COUNT(*)
FROM
`bin_log`
WHERE at_time > ’2012-09-10 12:00:00′
AND at_time < '2012-09-12 12:00:00'
AND dml_table = '`promotionurlreferer`'
GROUP BY dml_table,SUBSTR(at_time, 1, 15);

第四に、スクリプトをダウンロード
binlog_analyze-0.1.tarの
から転送します。http://isadba.com/ P = 354?

ます。https://my.oschina.net/766/blog/211530で再現

おすすめ

転載: blog.csdn.net/weixin_34232363/article/details/91548012