F MySQLについてのトランザクション・ログ監査データ収集

この章では、MySQLデータベース用Oracle GoldenGate (Oracle AVDF 20.11以降)を構成する方法、およびAudit Vault Serverコンソールでトランザクション・ログ監査証跡を作成する方法について説明します。

F.1 MySQL用のOracle GoldenGateを使用したトランザクション・ログ監査証跡の概要

MySQLにおける変更データ・キャプチャ(CDC)では、MySQLサーバーの表内のデータに関して実行された挿入、更新および削除操作が記録されます。

トランザクション・ログ・コレクタでは、Oracle GoldenGateのExtractプロセス(CDCキャプチャ)を利用してCDC表データがXMLファイルにプルされます。Oracle AVDFのMySQL用トランザクション・ログ・コレクタでは、生成されたXMLファイルからトランザクション・ログ・レコードが収集されます。これらのログはAudit Vault Serverに転送され、変更の前と後の値が「データ変更前後の値」レポートに示されます。DMLの変更は、「データ変更前後の値のレポート」で確認できます。

Oracle AVDF 20.10以降、「データ変更前後の値」レポートにはキー列に関する追加情報が含まれています。デフォルトでは、GoldenGateは表の主キー列をキー列として使用します。表に主キーが定義されていない場合や、別の列をキー列として使用する場合は、GoldenGateのパラメータ・ファイルでキー列を指定するオプションを使用できます。

図F-1 トランザクション・ログの収集プロセス

図F-1の説明が続きます
「図F-1 トランザクション・ログの収集プロセス」の説明

ノート:

Oracle GoldenGate for MySQLでは、プログラム名、データベース・ユーザー名、OSユーザー名、OS端末、クライアント・ホスト名、クライアントID、プロセスID、データベース内でコミットされたトランザクションのプロキシ・セッションIDなど、特定の詳細は取得されません。その結果、この制限により、Oracle AVDFの「データ変更前後の値」レポートにこれらのフィールドの空の値が表示されます。

F.2 サイズ設定のガイドライン

MySQL用のOracle GoldenGateを構成するには、次のサイズ設定ガイドラインに従います。

前提条件

Oracle GoldenGateドキュメント内の必要事項にある、システムおよびサイズ設定の要件に従います。

一般的なサイズ設定のガイドライン

  • メモリーおよびCPUについては、Extractごとに32 GBのメモリーおよび2つのCPUから始めます。これは、それがマルチスレッド・プロセスであり、大規模なトランザクションを処理するときに大量のメモリーを使用するためです。トランザクションの量およびパターンに応じて、Oracle GoldenGateドキュメント内のガイドラインに従って適切にリソースをスケール・アップします。
  • ディスク領域については、2 TBから始め、Extractでソース・データベースから取得されるデータの量に基づいて、それを変更します。Extractでは、処理するためにバッファに格納するトランザクションが大きい場合は、証跡ファイル用にストレージが、キャッシュ・ファイル用に一時ディスク領域が使用されます。

大規模なトランザクションに起因する一時ディスク領域の要求でキャッシュがいっぱいになり、それが、トランザクションでキャッシュされたデータまたは一時ファイルに波及する場合があります。適宜リサイクルできるように、アーカイブ・ポリシーを構成しファイルの保存期間を定義します。

大規模トランザクションを処理するために十分な物理メモリーを維持します。ガイドラインに従って、Extractで使用できるメモリーを32 GB以上にします。より正確な見積りを行うには、データベース・サーバーの実行履歴から統計を収集し、最大のトランザクションのサイズを確認します。Oracle GoldenGateでは、トランザクションの統計を表示するsend <extract> cachemgr, cachestatsコマンドが用意されています。これは、見積りのベースラインを特定するのに役立ちます。

通常は、Oracle GoldenGate Extractプロセスのためのサイズ設定、ストレージおよびメモリーは、主にトランザクション量とトランザクション・パターンによって決まります。標準値がないため、すべての単一データベース・サーバーからこれらの統計を収集して見積ります。単一のGoldenGateインスタンスまたはExtractプロセスでサポートできるデータベースの数は、システム・リソース(複数のExtractをサポートしている)に応じて異なります。データベースごとに1つのExtractを構成します。

F.3 Oracle GoldenGateの制限付き使用ライセンス

Oracle GoldenGateの制限付きライセンスは、Oracle AVDFリリース20に付属しています。

このライセンスでは、Oracle GoldenGateをインストールしExtractプロセスを使用して、Oracle AVDFによって監視されるデータベース・システムでのトランザクションの変更点を取得できます。Oracle GoldenGateから抽出されたデータはOracle AVDFによってのみ消費されます。Oracle GoldenGate Microservices Architectureは、Oracle AVDFアプライアンスがデプロイされているサーバー以外の個別のサーバーにデプロイします。次に、Oracle GoldenGate Extract機能を構成します。Oracle AVDF 20.11以降では、MySQLバージョン8.0用のOracle GoldenGate Microservices Architectureバージョン21.3.0.0.0がサポートされています。

F.4 MySQLデータベース用のOracle GoldenGateのインストール

MySQL Server上でOracle GoldenGateをインストールするには、次の手順に従います。

Linuxプラットフォーム上のMySQL互換データベースの場合

  1. Oracle GoldenGate MicroServicesドキュメントに記載されているOracle GoldenGateのインストールの手順に従います。
  2. Oracle GoldenGate MicroServicesドキュメントで、MySQL用のOracle GoldenGateをインストールするための要件を確認します。
  3. Oracle Software Delivery CloudからLinux x86-64上のMySQL互換データベース用のOracle GoldenGate 21.3 Microservicesをダウンロードし、インストールします。

F.5 MySQL Serverからのトランザクション・ログ・データの取得

MySQLデータベース用のOracle GoldenGateでデータベースおよびCDC Extractプロセスを構成するには、次のステップを実行します。

  1. ユーザーおよび権限の作成
  2. データベース接続、システム、パラメータおよびトランザクション・ログ設定の準備
  3. Oracle GoldenGateのためのデータベースの構成
  4. GoldenGate CDC Extractの作成

F.5.1 ユーザーおよび権限の作成

Oracle GoldenGateでは、そのための別個のユーザーを使用することをお薦めします。これは、データベースに接続する必要があるすべてのOracle GoldenGateプロセスに対して同じユーザーでもかまいません。詳細は、Oracle GoldenGate Microservicesドキュメントデータベース・ユーザーおよび権限の準備を参照してください。

F.5.2 データベース接続、システム、パラメータおよびトランザクション・ログ設定の準備

データベースとその接続を構成するには、Oracle GoldenGate Microservicesドキュメントデータベース接続、システムおよびパラメータ設定の準備を参照してください。

トランザクション・ログ設定を構成するには、Oracle GoldenGate Microservicesドキュメントトランザクション・ログの設定および要件を参照してください。

F.5.3 Oracle GoldenGateのためのデータベースの構成

Oracle GoldenGateのインストールの後は、MySQLデータベースを構成する必要があります。

  1. 管理サービスのコンソール・ページを開きます。
  2. 「アプリケーション・ナビゲーション」メニューをクリックします。
  3. 構成」タブをクリックします。
  4. 「データベース」オプションを選択します。
  5. 「資格証明」の前にある「+」をクリックしてデータベース資格証明を追加します。
  6. 資格証明ドメインを入力します。
  7. 資格証明の別名を入力します。
  8. データベース・サーバーのアドレスを入力します。
  9. データベースのポート番号を入力します。
  10. データベース名を入力します。
  11. ユーザーIDを入力します。
  12. パスワードを入力します。
  13. 「発行」をクリックします。
  14. 資格証明を作成したら、「データベースにログイン」アイコンをクリックします。これにより、新しく作成された資格証明で、ターゲット・データベースに接続できるようになります。

F.5.4 GoldenGate CDC Extractの作成

MySQL用のCDCキャプチャを作成し実行します。

  1. 管理サービスのコンソール・ページを開きます。
  2. 「管理サービス」タブをクリックします。
  3. 「Extract」タブの「+」をクリックします。
  4. 抽出タイプとして「データ・キャプチャExtractの変更」を選択します
  5. 「次」をクリックします。
  6. 「プロセス名」フィールドにプロセス名を入力します。
  7. 「目的」フィールドで、「一方向」を選択します。
  8. Extractでリモート取得を実行する予定の場合は、「リモート」をクリックします。
  9. ドロップダウン・リストから、適切な資格証明ドメインを選択します。
  10. ドロップダウン・リストから、「Oracle GoldenGateのためのデータベースの構成」で作成した適切な資格証明別名を選択します。
  11. 「開始」フィールドでドロップダウン・リストから「今すぐ」を選択します。
  12. 「トレイル名」に入力します。これには、任意の2つのアルファベット文字の組合せを使用できます。
  13. トレイルのサブディレクトリのカスタマイズが必要な場合は、「トレイルのサブディレクトリ」に入力します。

    トレイルのサブディレクトリは、任意のディレクトリのフルパスにできます。このディレクトリがファイル・システム上に存在している必要があります。

  14. 「トレイル・サイズ」(MB)を設定します。

    ノート:

    GoldenGateのレコード生成率が低い場合(1秒当たり50レコード未満)、「トレイル・サイズ」を小さい値に設定することをお薦めします。たとえば、100MBです。
  15. 「次」をクリックします。
  16. 「パラメータ・ファイル」サブセクションで、次のパラメータを入力します。
    EXTRACT <extract name>
    SOURCEDB <Database Name@Database Server:port> USERIDALIAS <useralias>, DOMAIN <Domain name>
    OUTFORMAT XML _AUDIT_VAULT
    TRANLOGOPTIONS ALTLOGDEST REMOTE
    EXTTRAIL <subdirectory>/<trail name>
    TABLE <schema>.<table name>,GETBEFORECOLS (ON UPDATE ALL, ON DELETE ALL);
    たとえば:
    EXTRACT exta
    SOURCEDB HR@10.245.102.35:3306 USERIDALIAS  mysql, DOMAIN OracleGoldenGate
    OUTPUTFORMAT XML _AUDIT_VAULT
    TRANLOGOPTIONS ALTLOGDEST REMOTE
    EXTTRAIL xy
    TABLE HR.*,KEYCOLS(id,gid),GETBEFORECOLS (ON UPDATE ALL, ON DELETE ALL);
    パラメータのガイドラインは次のとおりです:
    • OUTPUTFORMATパラメータのXML_AUDIT_VAULTの間には空白があります
    • OUTPUTFORMATパラメータは、パラメータ・ファイル内でexttrailパラメータよりも前に記述する必要があります。それ以外の場合は、XMLファイルが生成されなくなります。
    • TABLEコマンドが常にセミコロン(;)で終わるようにします。
    • すべてのパラメータの順序が前述の順序と完全に一致するようにします。
    • TABLEコマンドは、DMLの変更の取得対象となる表を指定するために使用します。
    • REMOTEキーワードは、Oracle GoldenGateとMySQLが別々のマシンにインストールされている、リモート取得の場合のみ使用する必要があります。
    • Oracle GoldenGateのパラメータの詳細は、『Oracle GoldenGateリファレンス』ガイドでOracle GoldenGateのパラメータを参照してください。
  17. 「作成および実行」をクリックしてCDC Extractプロセスを開始します。

    新しく作成したCDC Extractが、「管理サービス」ページの「Extract」セクションに表示されます。

  18. CDC Extractのステータスを表示するには:
    1. 抽出の「アクション」ボタンをクリックします。
    2. 「詳細」を選択します。
    3. 「レポート」タブをクリックして、診断メッセージを表示します。

      抽出プロセスが失敗した場合、このレポートに関連するエラーが表示されます。

F.5.5 サンプルのOracle GoldenGate CDC Extractパラメータ・ファイル

これらのOracle GoldenGate CDC Extractパラメータ・ファイルをサンプルとして使用します。

表のDMLを監査して、キー列として使用する列を設定します

次のパラメータ・ファイルは、CDC Extractが次の操作を実行するように構成します:

  • dboスキーマ内のemp表に対するDML操作の取得
  • empnoenameのキー列としての設定
EXTRACT <extract name>
SOURCEDB <Database Name@Database Server:port> USERIDALIAS <useralias>, DOMAIN <Domain name>
OUTFORMAT XML _AUDIT_VAULT
EXTTRAIL <subdirectory>/<trail name>
TABLE dbo.emp, KEYCOLS (empno, ename);

表内のDMLの監査

次のパラメータ・ファイルは、必要な表に対するDML操作を監査します:
  • 示されているパラメータ・ファイルは、1つの表に関する内容になっています。
  • 追加の表名は、ユーザーが追加できます。
EXTRACT <extract_name> 
SOURCEDB <Database Name@Database Server:port> USERIDALIAS <useralias>, DOMAIN <Domain name>
OUTPUTFORMAT XML _AUDIT_VAULT 
EXTTRAIL <subdirectory> {Any combination of two alphabets indicating prefix of trail file e.g. ab, bc, ea, sn.....etc} 
TABLE owner.table_name;
例: 次のパラメータ・ファイルは、dbo.employee表に対するDML操作を監査します。監査データは、\dirdat\eaの場所に格納されます:
EXTRACT exta 
SOURCEDB HR@10.245.102.35:3306 USERIDALIAS mysql, DOMAIN OracleGoldenGate
OUTPUTFORMAT XML _AUDIT_VAULT 
EXTTRAIL \dirdat\ea 
TABLE dbo.employee;
  • extaは、CDC Extractの名前です。
  • dbo.employeedboは、employee表を所有するスキーマ名です。
  • HRは、データベースの名前です。
  • 10.245.102.35は、データベースがインストールされているホストのIPです。
  • 3306は、MySQLデータベースのポート番号です。
  • mysqlは、USERIDALIASです
  • OracleGoldenGateは、DOMAINです。

GETBEFORECOLSオプションを使用したDMLの監査

次のパラメータ・ファイルでは、GETBEFORECOLSオプションを有効にして、特定の表に対するDML操作を取得するようにExtractプロセスを構成します。このオプションにより、Oracle GoldenGateによって生成された監査ファイルのビフォア・イメージにキー列が表示されるようになります。これは、更新および削除操作のレポートにキー列を表示するために不可欠です。

EXTRACT exta 
SOURCEDB HR@10.245.102.35:3306 USERIDALIAS mysql, DOMAIN OracleGoldenGate 
OUTPUTFORMAT XML _AUDIT_VAULT
EXTTRAIL ea 
TABLE dbo.employee, GETBEFORECOLS(ON UPDATE ALL, ON DELETE ALL);

GETBEFORECOLSを使用して、取得して証跡のビフォア・イメージに書き込む列を指定します。前述の例では、ALLキーワードは、更新および削除操作のビフォア・イメージにすべての列を含める必要があることを示しています。

KEYCOLSオプションを使用したDMLの監査

次のパラメータ・ファイルでは、KEYCOLSオプションを使用して、特定の表に対するDML操作を取得するようにExtractプロセスを構成します。このオプションは、表で主キーまたは適切な一意の索引が使用できないときに、代替主キーを定義するために使用します。

EXTRACT exta 
SOURCEDB HR@10.245.102.35:3306 USERIDALIAS mysql, DOMAIN OracleGoldenGate 
OUTPUTFORMAT XML _AUDIT_VAULT
EXTTRAIL ea 
TABLE dbo.emp3, KEYCOLS(id.name), GETBEFORECOLS(ON DELETE ALL);

前述のパラメータ・ファイルは、dbo.employee表に対するDML操作を監査します。KEYCOLSオプションは、id列とname列をまとめて一意の主キーまたは代替索引(KEYCOLS(id, name))として扱う場合に使用します。監査データは、ea証跡に格納されます。KEYCOLSの形式は、KEYCOLS(column1, column1, ...)です。

F.6 Audit Vault Serverコンソールでの監査証跡作成のガイドライン

Audit Vault ServerコンソールでMySQLデータベース・ターゲットについてのトランザクション・ログ監査証跡を作成するには、次のガイドラインに従います。

推奨事項

  1. 監査証跡を作成する前に、Audit Vault ServerコンソールでMySQLデータベース・ターゲットについてAV.COLLECTOR.TIMEZONEOFFSET属性を設定してください。これは、トランザクション・ログ監査証跡でそのターゲットから監査レコードのタイムゾーンが取得されるためです。AV.COLLECTOR.TIMEZONEOFFSETをMySQLデータベースのタイムゾーン・オフセットに設定します。たとえば、正のオフセットが+03:00、負のオフセットが-03:00です。

    詳細は、「ターゲットの登録」を参照してください。

  2. また、Audit Vault ServerコンソールでMySQLデータベース・ターゲットのAV.COLLECTOR.securedTargetVersion属性を設定してください。この属性により、MySQLデータベースのバージョンを指定します。この属性が設定されていない場合、デフォルトでは、MySQLはバージョン8.0として扱われます。

ガイドライン

「エージェントベース収集を使用する監査証跡の追加」で示した手順で監査証跡を作成する場合は、次のガイドラインに従ってください:

  • 「証跡のタイプ」で、「トランザクション・ログ」を選択します。
  • 「証跡の場所」で、CDC Extract XMLファイルを含むディレクトリのフルパスを入力します。
  • 証跡の場所にアクセスできるホスト・マシンでAudit Vault Agentが実行されていることを確認します。
  • Audit Vault Agentユーザーに証跡の場所に対する読取り権限があることを確認します。

F.7 監査証跡のクリーン・アップ

監査証跡のクリーンアップでは、Audit Vault Agentによる読取リ対象のファイルが削除されます。

Oracle GoldenGate Extractのクリーン・アップ」を参照してください。