ApsaraDB RDS for MySQLインスタンスのデータファイルを長期間削除しないと、RDSインスタンスのストレージ容量が使い果たされる可能性があります。 その結果、RDSインスタンスはデータの損失を防ぐために自動的にロックされ、RDSインスタンスにデータを書き込むことはできません。
問題の説明
大量のデータがRDSインスタンスに書き込まれます。 その結果、RDSインスタンスのストレージ容量がデータファイルによって使い果たされ、RDSインスタンスは [ロック済み] 状態になります。
原因
RDSインスタンスのストレージ容量は、長期間保持されるデータファイルによって使い果たされます。 この場合、RDSインスタンスはデータの損失を防ぐために自動的にロックされ、RDSインスタンスにデータを書き込むことはできません。
解決策
前提条件
RDSインスタンスがMySQL 5.6、MySQL 5.7、またはMySQL 8.0を実行している場合、RDSインスタンスのマイナーエンジンバージョンは20190815以降である必要があります。 RDSインスタンスのマイナーエンジンバージョンが20190815より前の場合、データファイルを削除する前にマイナーエンジンバージョンを更新する必要があります。 詳細については、「マイナーエンジンバージョンの更新」をご参照ください。
使用上の注意
- テーブルを削除する前に、損失を防ぐためにテーブルデータがバックアップされていることを確認してください。
- ApsaraDB RDS for MySQLインスタンスを使用している場合、
DELETE
ステートメントを実行してRDSインスタンスのストレージをリリースすることはできません。 RDSインスタンスのストレージをリリースするには、DROP
またはTRUNCATE
ステートメントを実行することを推奨します。 - テーブルに対して
OPTIMIZE
ステートメントを実行すると、テーブルはロックされます。 オフピーク時にOPTIMIZEステートメントを実行することを推奨します。 - データファイルが削除された後、RDSインスタンスのストレージをリリースするには期間が必要です。
- データファイルが削除されると、ApsaraDB RDSは約5分でRDSインスタンスのロックを解除します。
手順
次のいずれかの方法を使用して、問題を解決できます。
- RDSインスタンスのストレージ容量を拡張します。RDSインスタンスのストレージ容量を拡張できます。 詳細は、「インスタンス仕様の変更」をご参照ください。説明 RDSインスタンスの仕様が変更されると、ApsaraDB RDSは約5分でRDSインスタンスのロックを解除します。
- 履歴データまたは不要なデータを削除します。
- データ管理 (DMS) を使用してRDSインスタンスに接続します。 詳細については、「DMSを使用したApsaraDB RDS For MySQLインスタンスへのログイン」をご参照ください。
- [SQLコンソール] タブで、次のステートメントを実行してデータファイルのサイズを表示し、履歴データまたは不要なデータが含まれているデータファイルを識別します。
SELECT file_name, concat(TOTAL_EXTENTS,'M') as 'FIle_size 'FROM INFORMATION_SCHEMA.FILES order by TOTAL_EXTETS DESC
DROP
またはTRUNCATE
ステートメントを実行して、履歴データまたは不要なデータを削除します。説明 削除が完了すると、ApsaraDB RDSは約5分でRDSインスタンスのロックを解除します。- DROP:
DROP TABLE <データベース名>.<テーブル名>
ステートメントを実行して、テーブルを削除します。 - TRUNCATE:
TRUNCATE TABLE <Database name>.<Table name>
ステートメントを実行して、テーブルからデータレコードを削除します。
- DROP:
次のステップ
RDSインスタンスがロック解除されている場合は、次の操作を実行して、RDSインスタンスが再度ロックされないようにします。
- RDSインスタンスの自動ストレージ拡張を設定します。 RDSインスタンスのストレージ使用量がしきい値に達すると、ApsaraDB RDSはRDSインスタンスのストレージ容量を自動的に拡張します。 詳細については、「自動ストレージ拡張の設定」をご参照ください。
- 一部のテーブルで
DELETE
ステートメントが頻繁に実行されると、テーブルは断片化されます。 この場合、OPTIMIZE TABLE <データベース名>.<テーブル名>
ステートメントを実行して、オフピーク時にストレージを再利用します。 詳細については、「OPTIMIZE TABLEステートメントを使用してApsaraDB RDS For MySQLインスタンスのテーブルスペースをリリースする方法」をご参照ください。