Amazon Aurora MySQL 互換はローカルストレージに何を保存しますか? また、ストレージ容量の問題をトラブルシューティングするにはどうすればよいですか?
簡単な説明
Aurora クラスターのインスタンスには、次の 2 種類のストレージがあります。
- 永続データ用のストレージ (クラスターボリュームと呼ばれます)。このストレージタイプは、より多くのスペースが必要になると自動的に増加します。詳細については、クラスターボリュームの内容を参照してください。
- インスタンスクラスに基づく、クラスター内の各 Aurora インスタンスのローカルストレージ。このストレージタイプとサイズはインスタンスクラスにバインドされており、より大きな DB インスタンスクラスに移動することによってのみ変更できます。Aurora for MySQL は、エラーログ、一般ログ、スロークエリログ、監査ログ、および InnoDB 以外の一時テーブルの保存にローカルストレージを使用します。
ローカルストレージサイズの詳細と、各インスタンスサイズで使用可能なストレージの最大量を確認するには、「Aurora MySQL の一時ストレージの制限」を参照してください。
解決方法
空きストレージ容量が少ないというエラー
空きストレージ容量が制限に近づくと、次のエラーが表示される場合があります。
"The free storage capacity for DB Instance: instance-name is low at x% of the provisioned storage [Provisioned Storage: xx GB, Free Storage: xx GB].You may want to increase the provisioned storage to address this issue." (DB インスタンスの空きストレージ容量: instance-name は、プロビジョニングされたストレージの x% と低下しています [プロビジョニングされたストレージ: xx GB、空きストレージ: xx GB]。この問題に対処するには、プロビジョニングされたストレージを増やすことをお勧めします。)
一時テーブルやログファイルなどの非永続データをローカルストレージに保存すると、ローカルストレージ容量が満杯になることがあります。ALTER TABLE コマンドが実行されているか、または一時テーブルを過剰に保存していないかを確認してください。ALTER コマンドと一時テーブルを最適化することにより、ローカルストレージの使用量を削減できます。次のようなコマンドを複数回実行して、インスタンス上の一時テーブルの数を確認します。
SHOW GLOBAL STATUS LIKE 'created_tmp%tables';
GoSH を有効にして、特定の時間範囲内に作成された一時テーブルの数をモニタリングできます。これにより、さらなる分析のために後で確認できるテーブルにサーバーステータス変数を保存できます。
FreeableMemory の Amazon CloudWatch メトリクスを確認して、使用可能な空きメモリの量を判断します。その後、監査ログ、一般ログ、スロークエリログが容量を消費していないかどうかを確認します。FreeLocalStorage の CloudWatch メトリクスを使用して、Aurora インスタンスに関連付けられたローカルストレージスペースをモニタリングできます。詳細については、「Amazon Aurora クラスターでのメトリクスのモニタリング」を参照してください。
より多くのストレージスペースが必要な場合は、ローカルストレージの量を増やすことができます。ローカルストレージを増やすには、DB インスタンスクラスを増やす必要があります。詳細については、Aurora DB インスタンスのクラスを参照してください。
パラメータ max_heap_table_size と tmp_table_size の値を増やすこともできます。これらのパラメータを変更すると、ディスクに流出するデータの量を減らすことができ、使用するローカルストレージの量を減らすことができます。インスタンスにアタッチされているパラメータグループでこれらのパラメータを変更できます。詳細については、パラメータグループを使用するを参照してください。
注意 max_heap_table_size と tmp_table_size の値を増やすと、テーブルはインスタンスでより多くのメモリを消費します。これらの値を増やす場合は、インスタンスに十分なメモリがあることを確認してください。FreeableMemory の CloudWatch メトリクスを使用して、使用可能なメモリをモニタリングできます。
ERROR 1114 table full (エラー 1114 テーブルがいっぱいです)
MySQL は、ALTER TABLE などのオペレーションを実行すると、新しいスキーマを持つ中間一時テーブルを作成します。MySQL は、古いテーブルを削除する前に中間テーブルにデータをロードします。中間テーブルはローカルストレージを使用する場合があります。中間テーブルに使用できるストレージよりも多くのストレージが必要な場合、次のエラーが発生する可能性があります。
「ERROR 1114 (HY000): The table 'table-name' is full」(「エラー 1114 (HY000): テーブル「table-name」がいっぱいです」)
インスタンスを一時的にスケールアップしてローカルストレージを増やすことで、このエラーを解決できます。ALTER TABLE オペレーションが完了したら、インスタンスクラスをスケールダウンできます。ローカルストレージを増やすには、Aurora インスタンスクラスを増やす必要があります。詳細については、Aurora DB インスタンスのクラスを参照してください。
関連情報
Amazon Aurora My SQL DB クラスターのストレージ使用量を表示するにはどうすればよいですか?
Aurora MySQL の一時ストレージ制限