オンラインログの分析
このセクションでは、OBServerノードのIPアドレスを10.10.10.1、ポートを2881と仮定し、ユーザーroot@mysqlが2024-01-09 16:23:00から現在までの間に生成したログを分析し、その結果を/data/logminer_output/ファイルに書き込む例を説明します。具体的な操作コマンドは以下のとおりです:
[admin@test001 ~]$ oblogminer -c "10.10.10.1:2881" -u "root@mysql" -p "***" -s "2024-01-09 16:23:00" -o "file:///data/logminer_output/"
アーカイブログの分析
このセクションでは、アーカイブディレクトリ /data/log_archive/ 配下の2024-01-09 16:23:00から2024-01-10 10:00:00までのログを分析し、その結果を /data/logminer_output/ に書き込む例を説明します。具体的な操作コマンドは以下のとおりです:
[admin@test001 ~]$ oblogminer -a "file:///data/log_archive/" -s "2024-01-09 16:23:00" -e "2024-01-10 10:00:00" -o "file:///data/logminer_output/"
解析結果の例
コマンドを実行すると、設定された出力ファイルディレクトリに以下のファイルが生成されます:
./logminer_output/
├── 0.csv
├── CHECKPOINT
├── COMMIT_INDEX
├── CONFIG
└── META
└── 0.meta
ディレクトリの紹介
このセクションでは、ディレクトリ内のさまざまなファイルの役割について簡単に説明します。
0.csv:出力されるデータファイルで、デフォルトではCSV形式で保存されます。コマンドで
-f/--record_formatを指定することで、データファイルの形式を変更できます。ファイル名は0から連続して増加する整数です。1つのデータファイルの出力が終わると、METAディレクトリにそのデータファイルに対応するmetaファイルが書き込まれます。このmetaファイルの名前はデータファイル名と同じです。CHECKPOINT:分析の進捗状況を記録します。
COMMIT_INDEX:インデックスファイルで、データファイルに対応するタイムスタンプが記録されています。
CONFIG:今回のログ分析の設定情報を記録します。
META:各データファイルの出力後、METAディレクトリに対応するデータファイルのメタファイルを書き込みます。ファイル名はデータファイル名と同じで、拡張子は
.metaです。対応するデータファイルのタイムスタンプとデータサイズが記録されます。内容例は以下のとおりです:MIN_COMMIT_TS=1704788579999999 MAX_COMMIT_TS=1704788633200501 DATA_LEN=1066
データファイルの形式
コマンド実行時に -f/--record_format を指定することで、データファイルの形式を設定できます。設定可能な形式は以下のとおりです:CSV、JSON、REDO_ONLY、または UNDO_ONLY。各形式のデータファイルについて説明します。
CSV形式
データファイルの拡張子は
.csvです。内容の例を以下に示します。具体的なフィールドの意味については、後述の フィールドの説明 を参照してください。TENANT_ID,TRANS_ID,PRIMARY_KEY,TENANT_NAME,DATABASE_NAME,TABLE_NAME,OPERATION,OPERATION_CODE,COMMIT_SCN,COMMIT_TIMESTAMP,SQL_REDO,SQL_UNDO,ORG_CLUSTER_ID 1004,0,"","mysql","test","","DDL",4,1704788606147445567,"2024-01-09 16:23:26.147445","create table t(a int, b varchar(100))","",1 1004,42590,"","","","","BEGIN",5,1704788614963917100,"2024-01-09 16:23:34.963917","","",1 1004,42590,"","mysql","test","t","INSERT",1,1704788614963917100,"2024-01-09 16:23:34.963917","INSERT INTO `test`.`t` (`a`, `b`) VALUES (1, 'abc');","DELETE FROM `test`.`t` WHERE `a`=1 AND `b`='abc' LIMIT 1;",1 1004,42590,"","","","","COMMIT",6,1704788614963917100,"2024-01-09 16:23:34.963917","","",1 1004,42604,"","","","","BEGIN",5,1704788619155575003,"2024-01-09 16:23:39.155575","","",1 1004,42604,"","mysql","test","t","DELETE",3,1704788619155575003,"2024-01-09 16:23:39.155575","DELETE FROM `test`.`t` WHERE `a`=1 AND `b`='abc' LIMIT 1;","INSERT INTO `test`.`t` (`a`, `b`) VALUES (1, 'abc');",1 1004,42604,"","","","","COMMIT",6,1704788619155575003,"2024-01-09 16:23:39.155575","","",1JSON形式
データファイルの拡張子は
.jsonです。各行が1件のレコードであり、改行文字(\n)で区切られています。JSON形式のデータファイルの内容例を以下に示します。具体的なフィールドの意味については、後述の フィールドの説明 を参照してください。{"TENANT_ID":1002,"TRANS_ID":4415602,"PRIMARY_KEY":"","TENANT_NAME":"","DATABASE_NAME":"","TABLE_NAME":"","OPERATION":"BEGIN","OPERATION_CODE":5,"COMMIT_SCN":1708391913195415000,"COMMIT_TIMESTAMP":"2024-02-20 01:18:33.195415","SQL_REDO":"","SQL_UNDO":"","ORG_CLUSTER_ID":1} {"TENANT_ID":1002,"TRANS_ID":4415602,"PRIMARY_KEY":"","TENANT_NAME":"mysql","DATABASE_NAME":"test","TABLE_NAME":"t1","OPERATION":"INSERT","OPERATION_CODE":1,"COMMIT_SCN":1708391913195415000,"COMMIT_TIMESTAMP":"2024-02-20 01:18:33.195415","SQL_REDO":"INSERT INTO `test`.`t1` (`id`, `name`) VALUES (1, 'aaaa');","SQL_UNDO":"DELETE FROM `test`.`t1` WHERE `id`=1 AND `name`='aaaa' LIMIT 1;","ORG_CLUSTER_ID":1} {"TENANT_ID":1002,"TRANS_ID":4415602,"PRIMARY_KEY":"","TENANT_NAME":"","DATABASE_NAME":"","TABLE_NAME":"","OPERATION":"COMMIT","OPERATION_CODE":6,"COMMIT_SCN":1708391913195415000,"COMMIT_TIMESTAMP":"2024-02-20 01:18:33.195415","SQL_REDO":"","SQL_UNDO":"","ORG_CLUSTER_ID":1}REDO_ONLY形式
SQL_REDO結果のみを出力します。データファイルの拡張子は
.sqlです。UNDO_ONLY形式
SQL_UNDO結果のみを出力します。データファイルの拡張子は
.sqlです。
フィールドの詳細については以下のとおりです:
フィールド |
型 |
説明 |
|---|---|---|
| TENANT_ID | 数値 | テナントID |
| TRANS_ID | 数値 | 変更を行ったトランザクションID。TRANS_IDはテナント内で一意のトランザクションを識別します |
| PRIMARY_KEY | 文字列 | 変更行のすべての主キー列情報。デフォルトでは / で区切ります |
| TENANT_NAME | 文字列 | テナント名 |
| DATABASE_NAME | 文字列 | データベース名 |
| TABLE_NAME | 文字列 | テーブル名 |
| OPERATION | 文字列 | ユーザーSQL操作タイプ。取り得る値は以下のとおりです:
|
| OPERATION_CODE | 数値 | OPERATIONに対応する操作コード:
|
| COMMIT_SCN | 数値 | トランザクションコミットバージョン番号 |
| COMMIT_TIMESTAMP | 日付 | トランザクションコミット時間 |
| SQL_REDO | 文字列 | clogログデータに基づいて再構築されたSQL。ユーザーがデータベースで実行したSQLに相当します |
| SQL_UNDO | 文字列 | データフラッシュバック用の逆方向ロールバックSQL。DDLトランザクションはSQL_UNDOを生成しません |
| ORG_CLUSTER_ID | 数値 | set ob_org_cluster_id=*** コマンドで設定された cluster id 情報 |