データファイルが ApsaraDB RDS for MySQL インスタンスのストレージ容量を使い果たすと、データの損失を防ぐために RDS はインスタンスを自動的にロックします。ロックされている間は、RDS インスタンスにデータを書き込むことはできません。
インスタンスのロックを解除するには、ストレージ容量を拡張するか、履歴データや不要なデータを削除してください。問題の解決後、再発を防ぐためにストレージの自動拡張を設定してください。
前提条件
データファイルを削除する前に、インスタンスのマイナーエンジンバージョンを確認してください。インスタンスで MySQL 5.6、5.7、または 8.0 が実行されており、マイナーエンジンバージョンが 20190815 より前の場合は、まずマイナーエンジンバージョンを更新してください。
手順については、「マイナーエンジンバージョンの更新」をご参照ください。
注意事項
データの損失を防ぐため、テーブルデータを削除する前にバックアップしてください。
DELETEは、ApsaraDB RDS for MySQL のストレージ領域を解放しません。代わりにDROP TABLEまたはTRUNCATE TABLEを使用してください。OPTIMIZE TABLEは、実行中にテーブルをロックします。オフピーク時間に実行してください。データファイルを削除した後、ストレージ領域が解放されるまでしばらく時間がかかります。
ストレージ領域が解放されるか、インスタンス仕様が変更されると、RDS はインスタンスのロックを約 5 分で解除します。
インスタンスのロック解除
次のいずれかの方法を選択してください。
方法 1:ストレージ容量の拡張
インスタンスのストレージ容量を拡張します。手順については、「インスタンス仕様の変更」をご参照ください。
仕様変更が有効になると、RDS はインスタンスのロックを約 5 分で解除します。
方法 2:履歴データまたは不要なデータの削除
Data Management (DMS) を使用してインスタンスに接続します。手順については、「DMS を使用した ApsaraDB RDS for MySQL インスタンスへのログオン」をご参照ください。
[SQL Console] タブで、次のクエリを実行して、サイズの大きいデータファイルを特定します:
SELECT file_name, ROUND((TOTAL_EXTENTS * EXTENT_SIZE) / 1024 / 1024, 2) AS 'File_size_MB' FROM INFORMATION_SCHEMA.FILES ORDER BY TOTAL_EXTENTS DESC;次のいずれかのステートメントを使用して、履歴データまたは不要なデータを削除します:
テーブルの削除:テーブルとそのすべてのデータを完全に削除します。
DROP TABLE <Database name>.<Table name>;テーブルの切り捨て:テーブル構造を維持したまま、テーブルからすべてのレコードを削除します。
TRUNCATE TABLE <Database name>.<Table name>;
削除が完了すると、RDS はインスタンスのロックを約 5 分で解除します。
次のステップ
インスタンスのロックが解除された後、再度ロックされるのを防ぐために、次の手順を実行してください。
ストレージの自動拡張:ストレージ使用量が設定されたしきい値に達すると、RDS は自動的にストレージ容量を拡張します。手順については、「ストレージの自動拡張の設定」をご参照ください。
断片化されたテーブルスペースの回収:テーブルに対して
DELETEが頻繁に実行されると、テーブルが断片化され、解放された領域が OS に返されません。オフピーク時間にOPTIMIZE TABLEを実行して、その領域を回収してください。OPTIMIZE TABLE <Database name>.<Table name>;詳細については、「OPTIMIZE TABLE ステートメントを使用して ApsaraDB RDS for MySQL インスタンスのテーブルスペースを解放する方法」をご参照ください。