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

ApsaraDB RDS:ApsaraDB RDS for MySQLインスタンスが一時ファイルによってストレージ容量が使い果たされたためにロック状態になっている場合はどうすればよいですか。

最終更新日:Jan 23, 2024

問題の説明

ApsaraDB RDS for MySQLインスタンスのストレージ容量が一時ファイルによって使い果たされています。 その結果、RDSインスタンスはロック状態になります。

原因

大量の一時ファイルがRDSインスタンスに書き込まれるか、大規模トランザクションの大量のバイナリログファイルがRDSインスタンスにキャッシュされてから、大規模トランザクションがコミットされます。 その結果、RDSインスタンスのストレージ容量が使い果たされます。 データの並べ替え、データのグループ化、テーブルの関連付けを必要とするSQL文が実行されると、一時ファイルが生成されます。 この場合、システムは自動的にRDSインスタンスをロックしてデータの損失を防ぎ、RDSインスタンスにデータを書き込むことはできません。

解決策

緊急時には、RDSインスタンスのストレージ容量を拡張することを推奨します。 RDSインスタンスのストレージ容量を拡張する場合は、システムがインスタンスのロックを解除するまで約5分間待ちます。 RDSインスタンスの仕様をアップグレードする方法の詳細については、「ApsaraDB RDS For MySQLインスタンスの仕様の変更」をご参照ください。

RDSインスタンスのストレージ容量を拡張できない場合は、RDSインスタンスを再起動して一時ファイルをリリースできます。 詳細については、「ApsaraDB RDS For MySQLインスタンスの再起動」をご参照ください。

RDSインスタンスがまだロックされている場合は、次の操作を実行します。

  1. データ管理 (DMS) を使用してRDSインスタンスに接続します。

  2. 次のステートメントを実行して、RDSインスタンスのセッションを表示します。

    processlistショー
  3. 出力で、一時ファイルをStateでソートし、セッションの [State] 列に「tmpテーブルにコピー」や「送信データ」などのメッセージが大量に存在するかどうかを確認します。 はいの場合、セッションによって多数の一時ファイルが生成されます。 次に、セッションのIDを記録します。state

  4. 次のSQL文を実行してセッションを終了します。

    kill [$ID];
    説明

    [$ID] は、前のステップで取得したIDを示します。 セッションを終了する前に、サービスに影響がないことを確認してください。

次のステップ

RDSインスタンスがロック解除されている場合は、次の操作を実行して、RDSインスタンスが再度ロックされないようにします。

  • RDSインスタンスの自動ストレージ拡張を設定します。 RDSインスタンスのストレージ使用量がしきい値に達すると、システムは自動的にRDSインスタンスのストレージ容量を拡張します。 詳細については、「ApsaraDB RDS For MySQLインスタンスの自動ストレージ拡張の設定」をご参照ください。

  • 一時ファイルが大量のストレージを占有しないようにするには、SQL文を最適化して、ORDER BY句とGROUP BY句が頻繁に使用されないようにします。 ビジネス要件に基づいて、tmp_table_sizeとmax_heap_table_sizeの値を増やすこともできます。 ただし、メモリリソースはディスクリソースよりも重要であるため、この方法は推奨されません。 EXPLAINをSQL文と一緒に使用して、内部の一時テーブルが使用されているかどうかを確認できます。 たとえば、Extra列に "Using temporary" メッセージが表示されている場合は、内部の一時テーブルが使用されます。

    説明select * fromアラームグループby created_on注文デフォルトで;

    次の図は、サンプル出力を示しています。系统显示类

  • キャッシュされたバイナリログファイルが大量のストレージを占有するのを防ぐために、大規模なトランザクション、特に複数の接続で並列に実行される大規模なトランザクションの数を減らすことができます。 大量の大規模トランザクションを実行する場合は、ビジネス要件に基づいてbinlog_cache_sizeの値を増やすことができます。 ただし、この方法は使用しないことをお勧めします。 一時ファイルによって占有されるストレージを減らすために、短期間の接続を使用して大規模なトランザクションを実行することを推奨します。

  • ディスクの使用状況を監視するか、不要なデータをできるだけ早く削除するか、データ分割を実行することを推奨します。 これにより、ディスク使用量が80% を超えないようにします。

参考資料

RDSインスタンスのロックを解除するために一時ファイルを削除できない場合は、他の種類のファイルを削除してディスク使用量を減らすことができます。 詳細については、以下のトピックを参照してください。

よくある質問

RDSインスタンスの [基本情報] ページで [インスタンスの再起動] ボタンが暗くなっている場合はどうすればよいですか。

RDSインスタンスを再起動するには、次の手順を実行します。

  1. [インスタンス] ページへ移動します。 上部のナビゲーションバーで、RDSインスタンスが存在するリージョンを選択します。 次に、RDSインスタンスを見つけ、インスタンスのIDをクリックします。
  2. 左側のナビゲーションウィンドウで、[パラメーター] をクリックします。

  3. [編集可能なパラメーター] タブで、[強制再起動] 列に [はい] が表示されているパラメーターを見つけ、パラメーターの値を変更します。