すべてのプロダクト
Search
ドキュメントセンター

PolarDB:️ SQLエクスプローラーと監査

最終更新日:Aug 15, 2024

PolarDB for MySQLSQL Explorer機能がSQL Explorerおよび監査機能にアップグレードされました。 SQL Explorerおよび監査機能は、Database Autonomy Service (DAS) によって提供されます。 この機能は、完全なリクエスト機能とSQL監査機能に基づいて開発されています。 さらに、この機能は、検索、SQLエクスプローラー、セキュリティ監査、トラフィック再生とストレステストの機能と統合されています。 この機能は、実行されるSQL文の情報を取得するのに役立ちます。 この情報を使用して、さまざまなパフォーマンスの問題をトラブルシューティングし、高リスクの原因を特定し、PolarDBクラスターをアップグレードする必要があるかどうかを確認できます。

背景情報

SQLエクスプローラーおよび監査機能は、実行されるすべてのデータクエリ言語 (DQL) 、DML、およびDDLステートメントの情報を記録します。 DASは、少量のCPUリソースしか消費しないデータベースカーネルから情報を取得します。 このトピックでは、PolarDBクラスターでSQLエクスプローラーと監査機能を使用する方法について説明します。

前提条件

RAM (Resource Access Management) ユーザーとして検索機能を使用する場合は、RAMユーザーにAliyunPolardbReadOnlyWithSQLLogArchiveAccess権限が付与されていることを確認してください。 詳細については、「RAMユーザーの作成と権限付与」をご参照ください。

説明

カスタムポリシーを作成して、ログのエクスポート機能を含む検索機能を使用する権限をRAMユーザーに付与することもできます。 詳細については、「カスタムポリシーを使用してRAMユーザーにSQL Explorerおよび監査モジュールの検索およびエクスポート機能を使用する権限を付与する」をご参照ください。

サポートされるリージョン

SQL Explorerおよび監査機能を使用する前に、データベースインスタンスのDAS Enterprise Editionを有効にする必要があります。 DASは、DAS Enterprise Editionの異なるバージョンを提供します。 利用可能なバージョンはリージョンによって異なります。 詳細については、「サポートされているデータベースとリージョン」をご参照ください。

特徴

  • 検索 (監査): この機能は、データベースのステータスや実行時間など、SQL文の実行履歴レコードのクエリとエクスポートに使用されます。 詳細については、「検索 (監査) 」をご参照ください。

  • SQL Explorer: この機能は、特定の期間内に実行されたSQL文のヘルスチェックの実行、パフォーマンスの問題のトラブルシューティング、およびビジネストラフィックの分析に使用されます。

  • セキュリティ監査: この機能は、リスクの高いSQL文、SQLインジェクション攻撃、新しいアクセスソースなどのリスクを特定するために使用されます。 詳細については、「セキュリティ監査」をご参照ください。

  • トラフィックの再生とストレステスト: この機能は、トラフィックスパイクを処理するためにクラスターをスケーリングする必要があるかどうかを確認するために使用されます。 詳細については、「トラフィックの再生とストレステスト」をご参照ください。

課金ルール

SQL Explorerおよび監査機能を使用する前に、データベースインスタンスのDAS Enterprise Editionを有効にする必要があります。 異なるバージョンのDAS Enterprise Editionの課金ルールの詳細については、「課金の概要」をご参照ください。

説明
  • SQL Explorer機能がSQL Explorerおよび監査機能にアップグレードされる前に、PolarDBクラスターでSQL Explorer機能が有効になっている場合、SQL Explorer機能の料金はPolarDB for MySQLによって請求されます。 詳細については、「SQL Explorerの課金ルール (オプション) 」をご参照ください。

  • DAS Enterprise Edition V3を使用する場合、DASによって課金されます。

SQLエクスプローラーと監査機能の有効化

  1. PolarDBコンソールにログインします。

  2. 左側のナビゲーションウィンドウで、クラスターをクリックします。

  3. 左上隅で、クラスターがデプロイされているリージョンを選択します。

  4. クラスターを見つけて、そのIDをクリックします。

  5. 左側のナビゲーションウィンドウで、ログと監査 > SQLエクスプローラーと監査を選択します。

  6. 表示されるページで、[SQL Explorer] タブをクリックします。 次に、[SQLエクスプローラーの有効化] をクリックします。

    Alibaba CloudアカウントでDAS Enterprise Editionを有効にしない場合は、表示されるページの指示に従ってDAS Enterprise Editionを有効にします。

  7. 表示されるページで、ビジネス要件に基づいて機能に対応するタブをクリックします。 次に、フィーチャの情報を表示できます。

    • 時間範囲の表示: SQL Explorerの結果を照会する実行済みSQL文の時間範囲を選択します。 時間範囲内のすべてのSQL文の 実行期間の文布実行時間 、および 実行回数 の値を表示できます。 期間内のすべてのSQL文の詳細を表示し、完全なリクエスト統計 セクションで詳細をエクスポートできます。

      説明

      最大1,000のSQLログをエクスポートできます。 より広い時間範囲内でより多くのSQLログを取得する場合は、検索 (監査) 機能を使用できます。

    • 比較リストの表示: SQL Explorerの結果を比較する実行済みSQL文の日付と時刻の範囲を選択します。 実行期間の文布実行時間 、および 実行回数 の比較結果を表示できます。 比較結果の詳細は、比較リストのリクエスト セクションで確認できます。

    • ソース統計: アクセスソースを収集するSQL文の実行時間範囲を選択します。 その後、時間範囲のすべてのリクエストソースを表示できます。

    • SQL レビュー: SQLレビュー機能は、指定された時間範囲およびベースライン時間範囲内のデータベースクラスターでワークロード分析を実行し、データベースクラスターでSQLクエリを実行する際に詳細な分析を実行します。 この機能は、インデックス最適化の提案、SQL書き換えの提案、リソースを消費する上位のSQLステートメント、新しいSQLステートメント、失敗したSQLステートメント、SQL機能分析、実行変動の高いSQLステートメント、パフォーマンスの低下したSQLステートメント、およびデータベースクラスタのトラフィックが最も多いトップテーブルを表示します。 詳細については、「SQLレビュー」をご参照ください。

    • 関連する SQL の特定: 表示するメトリックを選択し、分析 をクリックします。 指定されたメトリックのパフォーマンスに最適なSQL文を特定するには、1〜5分かかります。

    • トラフィック再生とストレステスト: 詳細については、「トラフィック再生とストレステスト」をご参照ください。

    • セキュリティ監査: 詳細については、「セキュリティ監査」をご参照ください。

コンポーネント

  • 実行期間の文布: [実行時間の分布] タブで、指定した時間範囲に基づいてSQLクエリの実行時間の分布を表示できます。 統計データは毎分収集されます。 実行時間の範囲は 7 つに分けられます。

    • [0,1] ms: 実行期間が0 ms〜1 msであることを示します。 このグラフは、実行期間がこの範囲内にあるSQLクエリの割合を示しています。

    • (1,2) ms: 実行時間が1 msより大きく2 ms以下であることを示す。 このグラフは、実行期間がこの範囲内にあるSQLクエリの割合を示しています。

    • (2,3) ms: 実行時間が2 msより大きく3 ms以下であることを示す。 このグラフは、実行期間がこの範囲内にあるSQLクエリの割合を示しています。

    • (3,10) ms: 実行時間が3 msより大きく、10 ms以下であることを示す。 このグラフは、実行期間がこの範囲内にあるSQLクエリの割合を示しています。

    • (10,100) ms: 実行時間が10 msより長く100 ms以下であることを示す。 このグラフは、実行期間がこの範囲内にあるSQLクエリの割合を示しています。

    • (0.1,1]s: 実行時間が0.1秒より長く1秒以下であることを示します。 このグラフは、実行期間がこの範囲内にあるSQLクエリの割合を示しています。

    • > 1s: 実行期間が1sより大きいことを示します。 このグラフは、実行期間がこの範囲内にあるSQLクエリの割合を示しています。

    説明

    実行期間の文布 タブのセクションには、クラスターでのSQLステートメントの実行時間が表示されます。 グラフの青い部分が大きいほど、SQL文がクラスターで実行されたときのクラスターはより健全になります。 チャートのオレンジと赤の領域が大きいほど、SQL文がクラスターで実行されたときのクラスターの健全性が低下します。

  • 実行時間: [実行時間] タブで、SQLクエリの実行時間を表示する時間範囲を指定できます。

  • 完全なリクエスト統計: 指定した時間範囲に基づいて、SQL文の詳細を表示できます。 詳細には、各SQL文のSQLテキスト、実行期間の割合、平均実行期間、および実行傾向が含まれます。

    説明

    特定のSQLテンプレートを使用するSQL文の実行時間の割合は、次の式に基づいて計算できます。実行時間の割合=(SQLテンプレートを使用するSQL文の実行時間 × SQL文の実行回数)/(すべてのSQL文の合計実行時間 × 実行回数) × 100% 。 実行期間の割合が高いほど、データベースクラスターが対応するSQL文の実行に使用するMySQLリソースの数が多いことを示します。

  • SQL ID: SQL IDをクリックすると、対応するSQLテンプレートを使用するSQL文のパフォーマンスの傾向とサンプルデータを表示できます。

  • SQLサンプル: [SQLサンプル] タブで、各サンプルSQLリクエストを開始するクライアントを表示できます。

    説明

    UTF-8文字セットは、SQLサンプルのエンコードに使用されます。

SQLログの保持期間の変更

警告

SQLエクスプローラーと監査機能によって生成されたデータの保存期間を短縮すると、DASは、指定された保存期間よりも長い期間保存されたSQL監査ログを直ちに消去します。 ストレージ期間を短縮する前に、SQL監査ログをコンピューターにエクスポートして保存することをお勧めします。

  1. PolarDBコンソールにログインします。

  2. 左側のナビゲーションウィンドウで、クラスターをクリックします。

  3. 左上隅で、クラスターがデプロイされているリージョンを選択します。

  4. クラスターを見つけて、そのIDをクリックします。

  5. 左側のナビゲーションウィンドウで、ログと監査 > SQLエクスプローラーと監査を選択します。

  6. 監査ページの右上隅で、サービス設定をクリックします。

  7. 保存期間を変更し、OKをクリックします。

    DAS Enterprise V3を有効にすると、さまざまなサブ機能によって生成されるデータの保存期間を変更できます。

    説明

    SQL Explorerおよび監査機能によって生成されたデータによって占有されるストレージはDASによって提供され、データベースクラスターのストレージを消費しません。

SQLエクスプローラーと監査機能を無効にする

警告

SQLエクスプローラーと監査機能を無効にすると、すべてのSQL監査ログが削除されます。 SQLエクスプローラーと監査機能を無効にする前に、SQL監査ログをファイルとしてエクスポートし、そのファイルをコンピューターにダウンロードすることをお勧めします。 SQL Explorerおよび監査機能を再度有効にすると、SQL監査ログは、SQL Explorerおよび監査機能が有効になっている時点から記録されます。

  1. PolarDBコンソールにログインします。

  2. 左側のナビゲーションウィンドウで、クラスターをクリックします。

  3. 左上隅で、クラスターがデプロイされているリージョンを選択します。

  4. クラスターを見つけて、そのIDをクリックします。

  5. 左側のナビゲーションウィンドウで、ログと監査 > SQLエクスプローラーと監査を選択します。

  6. サービス設定をクリックして、SQLエクスプローラーと監査機能を無効にします。

    DAS Enterprise V3を有効にする場合は、SQL Explorerおよび監査機能のすべてのサブ機能を選択します。

    説明
    • log ServiceのCloudLens for PolarDBアプリケーションでPolarDB for MySQLクラスターの監査ログ収集機能を有効にすると、PolarDB for MySQLクラスターのSQL Explorerおよび監査機能が自動的に有効になります。 したがって、PolarDB for MySQLクラスターの監査ログ収集機能も無効にする必要があります。 詳細については、「データ収集の有効化」をご参照ください。

    • SQLエクスプローラーと監査機能を無効にすると、すべてのSQLログエントリが削除されます。 この機能を無効にする前に、SQLログエントリをエクスポートすることを推奨します。 SQLレコードをエクスポートする方法の詳細については、「手順」をご参照ください。

  7. 表示されるメッセージで、OK.

監査ログのサイズと使用状況の詳細を表示

  1. Alibaba Cloud 管理コンソールにログインします。

  2. ページの右上隅で、[費用] を選択します。

  3. の左側のナビゲーションウィンドウで、費用と費用ページ、選択請求書 > 請求書の詳細.

  4. [請求書の詳細] ページで、[請求書の詳細] タブをクリックします。 検索バーで、ドロップダウンリストから [インスタンスID] を選択し、詳細を照会するクラスターのIDを入力します。

    image

  5. データエントリの課金の詳細を表示します。課金アイテム列はsql_explorer.

新しいSQL Explorerと監査へのアップグレード

説明

PolarDB for MySQLクラスターが中国 (杭州) 、中国 (上海) 、中国 (北京) 、または中国 (深セン) リージョンにデプロイされている場合は、元のSQLエクスプローラーと監査を新しいSQLエクスプローラーと監査にアップグレードできます。

  1. PolarDBコンソールにログインします。

  2. 左側のナビゲーションウィンドウで、クラスターをクリックします。

  3. 左上隅で、クラスターがデプロイされているリージョンを選択します。

  4. クラスターを見つけて、そのIDをクリックします。

  5. 表示されるページの左側のナビゲーションウィンドウで、[ログと監査] > [SQLエクスプローラーと監査] を選択します。

  6. SQL ExplorerからSQL Explorerおよび監査へのアップグレードメッセージで、[アップグレード] をクリックします。

DAS Enterprise Editionの異なるバージョン間でデータを移行する

Enterprise Edition V1と比較して、Enterprise Edition V2は、ホットおよびコールドハイブリッドストレージを実装する新しい基盤ストレージアーキテクチャを採用して、ストレージコストを削減し、ストレージ効率を向上させます。 Enterprise Edition V3は、ホットおよびコールドハイブリッドストレージアーキテクチャに基づいて開発され、柔軟な請求方法とストレージコストの削減のために、きめ細かい請求可能アイテムをさらに設計します。

データベースクラスターがEnterprise Edition V3をサポートしている場合、DAS Enterprise Edition V1またはV2からEnterprise Edition V3にデータを移行して、さらに割引を受けることができます。 詳細は、「よくある質問」をご参照ください。

よくある質問

Q: ログアウトは何ですか! [SQLエクスプローラー] タブの [完全なリクエスト統計] セクションのステートメントは、

A: ログアウト! 文は切断を示します。 ログアウト! の実行期間 ステートメントは、最後のインタラクション時間と切断が発生した時間の差です。 時間差の間、接続はアイドルのままである。 [ステータス] 列に表示される1158コードは, 次の原因によるネットワークの切断を示しています。

  • クライアント接続がタイムアウトします。

  • サーバーが切断されました。

  • 接続期間がinteractive_timeoutまたはwait_timeoutパラメーターで指定された値を超えると、サーバーへの接続がリセットされます。

Q: SQL Explorerタブの [ソース統計] タブの [アクセスソース] 列にパーセント記号 (%) が表示されるのはなぜですか。

A: ストアドプロシージャを使用すると、SQL Explorerタブの [ソース統計] タブの [アクセスソース] 列にパーセント記号 (%) が表示される場合があります。 この状況を再現するには、次の操作を実行します。

説明

この例では、データベースインスタンスはApsaraDB RDS for MySQLインスタンス、テストアカウントはtest_user、テストデータベースはtestdbです。

  1. ApsaraDB RDSコンソールで、データベースと標準アカウントを作成し、データベースに対する権限を標準アカウントに付与します。 詳細については、「アカウントとデータベースの作成」をご参照ください。

  2. CLIを使用してデータベースインスタンスに接続するには、test_userアカウントを使用します。 詳細については、「データベースクライアントまたはCLIを使用したApsaraDB RDS For MySQLインスタンスへの接続」をご参照ください。

  3. testdbデータベースに切り替え、次のステートメントを実行してストアドプロシージャを作成します。

    -- Switch to the testdb database.
    USE testdb;
    
    -- Create a stored procedure.
    DELIMITER $$
    DROP PROCEDURE IF EXISTS `das` $$
    CREATE DEFINER=`test_user`@`%` PROCEDURE `das`()
    BEGIN
    SELECT * FROM information_schema.processlist WHERE Id = CONNECTION_ID();
    END $$
    DELIMITER;
  4. 特権アカウントを使用してデータベースインスタンスに接続します。 詳細については、「データベースクライアントまたはCLIを使用したApsaraDB RDS For MySQLインスタンスへの接続」をご参照ください。

  5. 作成したストアドプロシージャを呼び出します。

    -- Switch to the testdb database.
    USE testdb;
    
    -- Call the stored procedure.
    CALL das();
    
    +--------+-----------+--------+--------+---------+------+-----------+-------------------------------------------------------------------------+
    | ID     | USER      | HOST   | DB     | COMMAND | TIME | STATE     | INFO                                                                    |
    +--------+-----------+--------+--------+---------+------+-----------+-------------------------------------------------------------------------+
    | 487818 | test_user | %:2065 | testdb | Query   |    0 | executing | SELECT * FROM information_schema.processlist WHERE Id = CONNECTION_ID() |
    +--------+-----------+--------+--------+---------+------+-----------+-------------------------------------------------------------------------+

Q: ログセクションに表示されるデータベース名がSQL文のデータベース名と一致しないのはなぜですか。

A: [ログ] セクションに表示されるデータベース名はセッションから取得されますが、SQL文のデータベース名はユーザーによって指定され、ユーザーの入力またはクエリ設計 (データベース間クエリや動的SQLなど) によって異なります。 これにより、SQL文と [ログ] セクションに表示されるデータベース名に矛盾が生じます。