コントローラデータベースのパフォーマンスを向上および最適化する方法

注: 次の手順は、バージョン 4.2.8 以前からそれ以降のバージョンにアップグレードされたコントローラにのみ適用されます。このような場合、以降のバージョンにアップグレードすると、コントローラデータベースでパフォーマンスの問題が発生する可能性があります。ただし、バージョン 4.2.9 以降を使用したすべての新しいコントローラのインストールでは、メトリックデータテーブルが最適化されます。

メトリック照会時のデータベースのパフォーマンスを向上させるために、メトリックデータテーブルで使用されるプライマリキーは読み取られ、最適化されます。その結果、プライマリキーは次のように変更されます。

送信元宛先
ts_min、node/tier/app、metric_idmetric_id、node/tier/app、ts_min

データベース最適化の実行方法

Enterprise Console を使用してデータベースの最適化ジョブを実行し、データベースのパフォーマンスを最適化することができます。この機能を使用するには、次の手順に従います。

  1. Enterprise Console を最新バージョンにアップグレードします。
  2. コントローラを最新バージョンにアップグレードします。
  3. アップグレードが完了した後、最適化可能なデータベーステーブルについては、Enterprise Console からデータベース最適化ジョブを実行できます。
    注: ダウンタイムは不要で、データベース最適化ジョブは自動的に実行されます。
    [Controller] ページから [Start Database Optimization] を選択し、プライマリ コントローラ ホストのバックグラウンドで実行されるプロセスを開始します。Controller ページこのプロセスでは、十分なディスク領域があるかどうか、および他のデータベース最適化プロセスが実行されているかどうかを判断するために、いくつかの事前チェックを実行します。必要なディスク領域の量は、最適化するテーブルのサイズによって決まります。コントローラデータの量によっては、データベースの最適化ジョブが完了するまでに数時間から数日間かかることがあります。
  4. すべてのテーブルが正常に最適化されると、データベースの最適化プロセスは完了し、ページに表示されなくなります。すべてのテーブルが最適化されていることを確認するには、次のクエリを入力して実行します。クエリが結果を返す場合、それらのテーブルは最適化されていません。クエリがゼロレコードを返す場合、すべてのテーブルが正常に最適化されています。
    cd <controller_home>/bin directory
    ./controller.sh login-db
    mysql>SELECT table_name
    FROM   information_schema.key_column_usage
    WHERE  table_name LIKE 'metricdata%'
    AND table_name != 'metricdata_min'
    AND table_name != 'metricdata_min_agg'
    AND column_name = 'ts_min'
    AND ordinal_position = 1;
注: データベース最適化ジョブは Linux OS でのみサポートされています。

ハイ アベイラビリティ(HA)コントローラペアでデータベース最適化を実行する方法

HA コントローラペアでデータベースの最適化を実行する前に、コントローラのデータベース レプリケーションが正常な状態であることを確認する必要があります。

  • 両方のコントローラが Enterprise Console にオンボードされている場合は、[Controller] ページを確認し、次のフィールドに注意してください。Controller ページ
  • コントローラのいずれかが HA ツールキット(HATK)によって管理されている場合は、次のようになります。


  1. プライマリ コントローラのホストにログインし、次のように入力します。
    cd <controller_home>/bin directory
  2. セカンダリ コントローラ データベースにログインし、次のように入力します。
    ./controller.sh login-db
  3. 以下を入力します。
    SHOW SLAVE STATUS\G;
    これにより、次の出力が得られます。
    Seconds_Behind_Master: $Number_Of_Seconds_Behind_Master
    ゼロ以外の数値がこのテストの出力に表示される場合は、番号がゼロに変わるまで待ちます。
  4. レプリケーションが期待どおりに動作していることを確認した後、Enterprise Console からデータベース最適化ジョブを実行できます。[Controller] ページから [Start Database Optimization] を選択し、プライマリ コントローラ ホストのバックグラウンドで実行されるプロセスを開始します。このプロセスでは、十分なディスク領域があるかどうか、および他のデータベース最適化プロセスが実行されているかどうかを判断するために、いくつかの事前チェックを実行します。必要なディスク領域の量は、最適化するテーブルのサイズによって決まります。コントローラデータの量によっては、データベースの最適化ジョブが完了するまでに数時間から数日間かかることがあります。
  5. すべてのテーブルが正常に最適化されると、データベースの最適化プロセスは完了し、ページに表示されなくなります。すべてのテーブルが最適化されていることを確認するには、次のクエリを入力して実行します。クエリが結果を返す場合、それらのテーブルは最適化されていません。クエリがゼロレコードを返す場合、すべてのテーブルが正常に最適化されています。
    cd <controller_home>/bin directory
    ./controller.sh login-db
    mysql>SELECT table_name
    FROM   information_schema.key_column_usage
    WHERE  table_name LIKE 'metricdata%'
    AND table_name != 'metricdata_min'
    AND table_name != 'metricdata_min_agg'
    AND column_name = 'ts_min'
    AND ordinal_position = 1;
    クエリによって結果が返される場合、それらのテーブルは最適化されていません。クエリがゼロレコードを返すと、すべてのテーブルが正常に最適化されます。

データベースの最適化を停止する方法

データベースの最適化ジョブが正常に完了すると、プロセスを停止できます。Enterprise Console から、[Stop Database Optimization]を [Controller] ページから選択します。Controller ページ

注: 多くのリソースを使用し、コントローラにパフォーマンスへの影響があると認識した場合、または後で実行するようにプロセスを再びスケジュール設定する場合は、データベース最適化プロセスを停止する必要があります。

データベース最適化のトラブルシューティング

次の表に、エラーが発生する可能性のある状況と、それらを軽減するために実行するアクションを示します。

エラーまたは条件 ユーザアクション
ジョブが失敗し、「データベースのレプリケーションが壊れています」というメッセージが表示されます。 データベース レプリケーションを段階的に再確立してから、レプリケーションを確定します。
データベース最適化ジョブの実行中にディスク領域が不足し、ジョブが処理を停止しました。 ディスク領域を解放し、データベース最適化ジョブを再起動します。