システムファイル、特にアンドゥファイルによってストレージ容量が使い果たされたときにApsaraDB RDS for MySQLインスタンスが自動的にロックされた場合、このトピックの手順に従ってRDSインスタンスのロックを解除し、システムファイルをクリーンアップできます。
問題の説明
ApsaraDB RDS for MySQLインスタンスのストレージ容量が使い果たされました。 RDSインスタンスの [インスタンスステータス] の値は [ロック] です。 [監視とアラート] ページで、ストレージ使用量の詳細は、ストレージが大きな元に戻すファイルによって占有されていることを示します。
発生原因
ほとんどの場合、大きなシステムファイルは主に大きなアンドゥファイルによって引き起こされます。 InnoDBテーブル上のクエリが長時間実行されており、クエリ中にテーブル内で大量のデータが更新されると、大量のアンドゥデータが生成され、ストレージを占有してストレージ容量が使い果たされます。 データの損失を防ぐため、システムは自動的にRDSインスタンスをロックします。 RDSインスタンスが [ロック] 状態になります。
MySQL 8.0を実行するRDSインスタンスでは、システムが自動的に取り消しファイルを削除するため、この問題は発生しません。
解決策
手順1: RDSインスタンスのロックを解除
ストレージ容量を拡張した後、RDSインスタンスのロックを解除できます。 詳細は、「インスタンス仕様の変更」をご参照ください。
ステップ2: 元に戻すファイルを削除する
MySQL 5.7を実行するRDSインスタンス:
RDSインスタンスに接続し、次のステートメントを実行して、
innodb_undo_tablespaces
パラメーターの値を照会します。 詳細については、「ApsaraDB RDS For MySQLインスタンスへの接続」をご参照ください。SHOW VARIABLES LIKE 'innodb_undo_tablespaces';
innodb_undo_tablespaces
パラメーターの値が2の場合、RDSインスタンスの取り消しデータは独立した取り消しテーブルスペースに格納され、削除できます。アンドゥファイルのサイズが
innodb_max_undo_log_size
パラメーターの値を超え、アンドゥファイルのログがアクティブなトランザクションで不要になると、システムはアンドゥファイルを切り捨て
てストレージを解放します。 RDSインスタンスのパラメーターを変更する方法の詳細については、「インスタンスパラメーターの変更」をご参照ください。説明innodb_undo_tablespaces
パラメーターは、RDSインスタンスの作成時にのみ指定でき、RDSインスタンスの作成後に変更することはできません。 MySQL 5.7を実行するRDSインスタンスの作成時にinnodb_undo_tablespaces
パラメーターの値が指定されていない場合、パラメーターはデフォルトで0に設定されます。 この場合、RDSインスタンスのマイナーエンジンバージョンを更新して、独立した元に戻すテーブルスペースを使用することはできません。innodb_undo_tablespaces
パラメーターの値が0の場合、独立したundoテーブルスペースは使用されません。 undoファイルはibdata1システムテーブルスペースに格納され、削除できません。ibdata1システムテーブルスペースの元に戻すデータをクリーンアップする場合は、RDSインスタンスを作成し、元のRDSインスタンスのデータを新しいRDSインスタンスに移行できます。 または、RDSインスタンスのメジャーエンジンバージョンをMySQL 8.0にアップグレードできます。 詳細については、「メジャーエンジンのバージョンのアップグレード」をご参照ください。
重要RDSインスタンスのメジャーエンジンバージョンをアップグレードすると、互換性の問題が発生する可能性があります。 詳細については、「メジャーエンジンバージョンのアップグレード」をご参照ください。
RDSインスタンスの移行またはアップグレード中に、インスタンスの切り替えが発生します。 オフピーク時に移行またはアップグレードを実行し、アプリケーションがRDSインスタンスに自動的に再接続するように設定されていることを確認することを推奨します。 インスタンスの切り替えの影響については、「インスタンスの切り替えの影響」をご参照ください。
MySQL 5.5またはMySQL 5.6を実行するRDSインスタンス: RDSインスタンスの元に戻すファイルは削除できません。 RDSインスタンスのメジャーエンジンバージョンをMySQL 5.7またはMySQL 8.0にアップグレードすることを推奨します。 詳細については、「メジャーエンジンのバージョンのアップグレード」をご参照ください。
RDSインスタンスのメジャーエンジンバージョンをMySQL 5.7にアップグレードする場合は、EditionパラメーターをHigh-availability Editionに設定します。 RDS High-availability Editionの
innodb_undo_tablespaces
パラメーターの値は2です。 独立した元に戻すテーブルスペースに元に戻すデータを保存および削除できます。重要RDSインスタンスのメジャーエンジンバージョンをアップグレードすると、互換性の問題が発生する可能性があります。 詳細については、「メジャーエンジンバージョンのアップグレード」をご参照ください。
アップグレード中に、インスタンスの切り替えが発生します。 オフピーク時にアップグレードを実行し、アプリケーションがRDSインスタンスに自動的に再接続するように設定されていることを確認することを推奨します。 インスタンスの切り替えの影響については、「インスタンスの切り替えの影響」をご参照ください。
次のステップ
SQL文を最適化して、低速なSQLクエリを防ぎます。
インデックスの作成と削除、テーブルスキーマの変更、テーブルのメンテナンス、テーブルの削除などの操作をオフピーク時に実行します。
長期間実行されるセッションまたはトランザクションを監視し、クリーンアップします。 詳細については、「モニタリング情報の表示」をご参照ください。
関連ドキュメント
また、データファイル、一時ファイル、およびバイナリログファイルを確認および削除して、RDSインスタンスのストレージを解放することもできます。
自律サービス関連の機能を有効にして、過度の取り消しファイルの増加によりRDSインスタンスがロックされるのを防ぐことができます。