次の手順は、バージョン 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 page
    このプロセスでは、十分なディスク領域があるかどうか、および他のデータベース最適化プロセスが実行されているかどうかを判断するために、いくつかの事前チェックを実行します。必要なディスク領域の量は、最適化するテーブルのサイズによって決まります。コントローラデータの量によっては、データベースの最適化ジョブが完了するまでに数時間から数日間かかることがあります。
  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; 
    CODE

    クエリによって結果が返される場合、それらのテーブルは最適化されていません。
    クエリがゼロレコードを返すと、すべてのテーブルが正常に最適化されます。 

データベース最適化ジョブは Linux OS でのみサポートされています。

高可用性(HA)コントローラペアでデータベース最適化を実行する方法

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

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

    1. プライマリ コントローラのホストにログインし、次のように入力します。

      cd <controller_home>/bin directory
      CODE
    2. セカンダリ コントローラ データベースにログインし、次のように入力します。

      ./controller.sh login-db
      CODE
    3. 入力:

      SHOW SLAVE STATUS\G;
      CODE

      これにより、次の出力が得られます。

      Seconds_Behind_Master: $Number_Of_Seconds_Behind_Master
      CODE

      ゼロ以外の数値がこのテストの出力に表示される場合は、番号がゼロに変わるまで待ちます。

    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; 
      CODE

      クエリによって結果が返される場合、それらのテーブルは最適化されていません。
      クエリがゼロレコードを返すと、すべてのテーブルが正常に最適化されます。

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

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

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

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

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

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