ストレージ容量が枯渇すると、ApsaraDB RDS for MySQL はデータ損失を防ぐためにインスタンスを自動的にロックします。ロック状態では、書き込みは受け付けられません。このトピックでは、一般的な原因とそれぞれの解決策について説明します。
ディスク領域を解放した後、システムがインスタンスを自動的にロック解除するまで 5~15 分お待ちください。
原因の診断
ApsaraDB RDS コンソールにログインします。 上部のナビゲーションバーで、インスタンスがあるリージョンを選択し、インスタンス ID をクリックします。
左側のナビゲーションペインで、[モニタリングとアラート] をクリックすると、どのファイルタイプが最も多くのストレージを消費しているかを確認できます。 詳細については、「モニタリング情報を表示」をご参照ください。
以下の表を使用して原因を特定し、対応する解決策に進んでください。
原因と解決策
| 原因 | 説明 | 解決策 |
|---|---|---|
| データファイル | インスタンスに大量のデータファイルが保存されています。 | データファイルによるストレージ枯渇の解決 |
| バイナリログファイル | 不適切なログバックアップポリシーまたは大規模なトランザクションにより、過剰なバイナリログファイルが生成されます。 | バイナリログファイルによるストレージ枯渇の解決 |
| 一時ファイル | SQL クエリのソート、グループ化、結合操作により、大規模な一時ファイルが生成されます。 大規模なトランザクションでは、コミット前にキャッシュされるログファイルも生成されます。 | 一時ファイルによるストレージ枯渇の解決 |
| システムファイル (undo ファイル) | InnoDB テーブルでの長時間実行クエリと大規模なデータ更新が組み合わさることで、多数の undo ファイルが生成されます。 説明 これは MySQL 8.0 では発生しません。MySQL 8.0 では、システムが undo ファイルを自動的に削除します。 | システムファイルによるストレージ枯渇の解決 |
| 一般クエリログ | general_log パラメーターが ON に設定されている場合、すべてのクエリ、挿入、更新、削除操作がログに記録されます。 クエリが長時間実行される、またはログが定期的にクリアされない場合、ファイルサイズが大きくなります。 | 一般クエリログによるストレージ枯渇の解決 |
一般クエリログサイズの確認
一般クエリログがストレージ枯渇の原因であることを確認するには、次の手順を実行してください。
モニタリング情報で
sys_data_sizeが異常に大きいかどうかを確認してください。 詳細については、「モニタリング情報の表示」をご参照ください。general_logパラメーターがONに設定されていることを確認してください。 詳細については、「ApsaraDB RDS for MySQL インスタンスのパラメーターの表示」をご参照ください。インスタンスに接続し、次のクエリを実行してログテーブルのサイズを確認してください。 詳細については、「ApsaraDB RDS for MySQL インスタンスへの接続」をご参照ください。
説明このクエリは、
mysql.general_logテーブルのサイズをinformation_schema.TABLESから MB 単位で返します。 返される値はサンプルデータであり、異なる場合があります。SELECT table_schema AS 'Database', table_name, SUM(DATA_LENGTH + INDEX_LENGTH + DATA_FREE)/1024/1024 AS "Table size in MB", SUM(DATA_FREE)/1024/1024 AS "Fragment size in MB" FROM information_schema.TABLES WHERE table_name='general_log'