低速SQLクエリや大量の挿入データなどの問題によりApsaraDB RDS for MySQLインスタンスのストレージ容量が使い果たされた場合、システムは自動的にRDSインスタンスをロックしてデータの損失を防ぎます。 RDSインスタンスがロックされると、RDSインスタンスにデータを書き込むことができなくなります。 このトピックでは、データファイル、一時ファイル、バイナリログファイル、アンドゥファイル、およびgeneral_logファイルを削除してストレージの問題を解決する方法について説明します。
問題の説明
SQLクエリの低速化や大量のデータ挿入などの問題によりRDSインスタンスのストレージ容量が使い果たされた場合、システムは自動的にRDSインスタンスをロックしてデータの損失を防ぎます。 RDSインスタンスがロックされると、RDSインスタンスにデータを書き込むことができなくなり、RDSインスタンスは [ロック済み] 状態になります。
原因
次の問題により、RDSインスタンスのストレージ容量が使い果たされる可能性があります。
多数のデータファイルが格納される。
多数のログファイルが保存されます。
ログバックアップポリシーが不適切な場合は、大量のトランザクションが実行されるため、大量のログファイルが生成される可能性があります。
多数の一時ファイルが格納される。
SQLクエリのソート、グループ化、および結合操作から生成される多数の一時ファイル、または大きなトランザクションがコミットされる前にキャッシュされる多数のログファイル。
多数のシステムファイルが格納される。
ほとんどの場合、大きなシステムファイルは主に大きなアンドゥファイルによって引き起こされます。 InnoDBテーブル上のクエリが長期間実行されており、クエリ中に大量のデータがテーブル内で更新されると、大量のアンドゥファイルが生成され、大量のストレージを占有します。
説明MySQL 8.0を実行するRDSインスタンスでは、システムが自動的に取り消しファイルを削除するため、この問題は発生しません。
general_logファイルのサイズが大きい。
general_logパラメーターがONに設定されている場合、RDSインスタンスで実行されたすべての操作と操作の詳細を記録するgeneral_logファイルが生成されます。 操作には、クエリ、挿入、更新、および削除操作が含まれます。 クエリが長時間実行されている場合や、general_logファイルが長時間クリアされていない場合は、大量のデータが生成されます。 データはストレージを占有し、ストレージ容量を使い果たします。 次の操作を実行して、general_logファイルのサイズを照会できます。
RDSインスタンスのストレージ使用状況を確認します。 sys_data_sizeファイルが大きすぎるかどうかを確認できます。 詳細については、「モニタリング情報の表示」をご参照ください。
general_logパラメーターがONに設定されているかどうかを確認します。 詳細については、「ApsaraDB RDS For MySQLインスタンスのパラメーターの表示」をご参照ください。
RDSインスタンスに接続し、次のステートメントを実行して、general_logファイルが大きすぎるかどうかを確認します。 詳細については、「ApsaraDB RDS for MySQL インスタンスへの接続」をご参照ください。
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'
説明SQL文は、
information_schema
データベースのTABLES
テーブルからmysql.general_log
テーブルのデータを照会するために使用されます。 データサイズはMB単位で表示されます。このSQL文によって返されるデータはサンプルデータです。 返される実際のデータは異なります。
解決策
次の手順を実行して、問題を見つけて解決します。
ApsaraDB RDSコンソールにログインし、[インスタンス] ページに移動します。 上部のナビゲーションバーで、RDS インスタンスが存在するリージョンを選択します。 RDSインスタンスを見つけ、インスタンスIDをクリックします。
左側のナビゲーションウィンドウで [モニタリングとアラート] をクリックします。 表示されるページで、大量のストレージを占有するファイルの種類を表示します。 詳細については、「モニタリング情報の表示」をご参照ください。
実際の状態に基づいてソリューションを選択します。
説明ディスク容量がクリアされた後、システムがRDSインスタンスのロックを解除するまで約5〜15分待ちます。