問題の説明
RDS インスタンスの 基本情報 ページで、RDS インスタンスのステータスの値が ロック になっています。
RDS インスタンスが ロック 状態のため、INSERT 文と UPDATE 文を RDS インスタンスで実行できません。
説明RDS インスタンスで MySQL 5.6、MySQL 5.7、または MySQL 8.0 を実行し、マイナーエンジンバージョン 20190815 以降を使用している場合、RDS インスタンスで次の種類のロックが発生する可能性があります。
LOCK_WRITE_GROWTH: ディスク使用量の増加を禁止します。プライマリ RDS インスタンスのストレージ容量が不足している場合、このタイプのロックがトリガーされ、ディスク使用量が増加する可能性のある操作が無効になります。 DELETE 文を実行してデータを削除すると、多数のバイナリログファイルが生成され、ディスク使用量が増加します。 DROP 文または TRUNCATE 文を実行してデータを削除することをお勧めします。
LOCK_READ: 読み取り操作を禁止します。読み取り専用 RDS インスタンスのストレージ容量が不足している場合、このタイプのロックがトリガーされ、データクエリと書き込み操作が無効になります。
LOCK_WRITE: 書き込み操作を禁止します。このタイプのロックは、インスタンスの有効期限切れ、ApsaraDB MyBase クラスタのホストの有効期限切れ、またはインスタンスの移行によってトリガーされる可能性があります。 LOCK_WRITE_GROWTH の制限に加えて、このタイプのロックは、DROP 操作や TRUNCATE 操作など、追加データの書き込み操作も無効にします。
RDS インスタンスがロックされていて、RDS インスタンスで SQL 文を実行すると、
ERROR 1290 (HY000): The MySQL server is running with the LOCK_WRITE_GROWTH option so it cannot execute this statementというエラーメッセージが表示されます。MySQL 5.1 または MySQL 5.5 を実行し、任意のマイナーエンジンバージョンを使用する RDS インスタンスがロックされている場合、ロックの原因に関係なく、RDS インスタンスで操作を実行できません。これは、MySQL 5.6、MySQL 5.7、または MySQL 8.0 を実行し、20190815 より前のマイナーエンジンバージョンを使用する RDS インスタンスにも当てはまります。
原因
原因 1: RDS インスタンスのストレージ容量が不足しています。
原因 2: Alibaba Cloud アカウントの支払いが遅延しているか、RDS インスタンスの有効期限が切れています。
原因 1 に対応する対処方法
基本情報 ページの「使用状況統計」セクションに移動して、RDS インスタンスのストレージが不足しているかどうかを確認できます。
方法:
RDS インスタンスのストレージを解放する
[インスタンス] ページに移動します。上部のナビゲーションバーで、RDS インスタンスが存在するリージョンを選択します。次に、RDS インスタンスを見つけて、インスタンスの ID をクリックします。
左側のナビゲーションウィンドウで、モニターとアラーム をクリックして、各タイプのデータによって占有されているストレージを表示します。

データベースタイプに基づいてデータを削除し、ストレージを解放します。
警告必要な場合を除き、データを削除しないことをお勧めします。ストレージを解放するためにデータを削除する場合は、データ損失を防ぐために、削除する前にデータをバックアップする必要があります。また、RDS インスタンスのストレージ容量を拡張して、RDS インスタンスのロックを解除することもできます。
一時ファイル (temp_file_size 標準メトリックで示されます)
ApsaraDB RDS for MySQL インスタンスは、一時テーブルを生成して、クエリで指定されたソート、グループ化、または結合操作を実行するか、大きなトランザクションをコミットする前にバイナリログキャッシュファイルを生成します。これらの 一時ファイル によってインスタンスのディスク容量が不足する可能性があります。
詳細については、「ApsaraDB RDS for MySQL インスタンスが一時ファイルによってストレージ容量が不足しているためにロック状態になっている場合の対処方法」をご参照ください。
ログファイル (binlog_size および general_log_size 標準メトリックで示されます)
データベースのパフォーマンスとステータスを監視するために、データベースの管理システムは、クエリログ、スロークエリログ、エラーログなど、さまざまなログを生成します。
データベースエンジン
解決策
MySQL
モニターとアラーム ページで、ストレージの使用状況を表示します。次に、ストレージの使用状況に基づいてログファイルを削除します。
PostgreSQL
ApsaraDB RDS for PostgreSQL インスタンスのログファイルは手動で削除できません。
非アクティブなレプリケーションスロットを手動で削除して、AliPG が WAL ログを自動的に削除できるようにすることができます。詳細については、「ApsaraDB RDS for PostgreSQL インスタンスの WAL ログ管理機能を使用する」をご参照ください。
SQL Server
ApsaraDB RDS for SQL Server インスタンスのログファイルは手動で削除できません。ただし、ApsaraDB RDS コンソールで トランザクションログを縮小する ことができます。
データファイル (user_data_size 標準メトリックで示されます)
データベースエンジン
解決策
MySQL
次の文を実行して、RDS インスタンスのデータベースにある指定されたテーブルのサイズを表示し、削除できる 既存データ または不要なデータを確認します。
SELECT TABLE_NAME, concat(round((DATA_LENGTH + INDEX_LENGTH) / 1024 / 1024,2),'MB') AS DATA FROM information_schema. TABLES WHERE TABLE_SCHEMA = '<データベース名>' ORDER BY DATA + 0 DESC;データベースで
DROP TABLE <テーブル名>;文を実行して、データを削除します。システムが RDS インスタンスのロックを解除するまで約 5 分待ちます。
PostgreSQL
DMS を使用して RDS インスタンスに接続します。詳細については、「DMS を使用して ApsaraDB RDS インスタンスにログインする」をご参照ください。
説明RDS インスタンスに接続できない場合は、まずインスタンスのストレージ容量を拡張してから、ディスク容量をクリアします。ディスク容量がクリアされた後、必要に応じてストレージ容量を縮小します。インスタンスのストレージ容量を拡張および縮小する方法の詳細については、「RDS インスタンスのストレージ容量を拡張する」および「インスタンスの仕様を変更する」をご参照ください。
次の文を実行して、RDS インスタンスのデータベースにある指定されたテーブルのサイズを表示し、削除できる 既存データ または不要なデータを確認します。
SELECT table_schema || '.' || table_name AS table_full_name, pg_total_relation_size('"' || table_schema || '"."' || table_name || '"') AS size FROM information_schema.tables ORDER BY pg_total_relation_size('"' || table_schema || '"."' || table_name || '"') DESC;データベースで
DROP TABLE <テーブル名>;文を実行して、データを削除します。システムが RDS インスタンスのロックを解除するまで約 5 分待ちます。
SQL Server
ApsaraDB RDS for SQL Server インスタンスのストレージ不足の問題のトラブルシューティング に記載されている操作を実行します。
システムファイル (undolog_size 標準メトリックで示されます)
原因: 長時間実行される文が InnoDB テーブルのクエリに実行され、クエリ中に大量のテーブルデータが変更されると、システムは過剰な UNDO ログを生成し、これが大量のストレージリソースを占有します。その結果、ストレージ容量が不足します。
解決策: システムファイルの蓄積によるストレージ不足のトラブルシューティング に記載されている手順に基づいて問題を解決します。
RDS インスタンスのストレージ容量を拡張する
[インスタンス] ページに移動します。上部のナビゲーションバーで、RDS インスタンスが存在するリージョンを選択します。次に、RDS インスタンスを見つけて、インスタンスの ID をクリックします。
基本情報 ページの 設定情報 セクションで、設定を変更する をクリックして、ストレージ容量を拡張 します。
表示されるページで、RDS インスタンスのストレージ容量を拡張します。詳細については、「ApsaraDB RDS for MySQL インスタンスの仕様を変更する」をご参照ください。
支払いが完了したら、
基本情報 ページの右上隅にある 注: アイコンをクリックして、[タスク] ページで構成変更の進捗状況を表示します。ストレージ容量の拡張に必要な時間は、RDS インスタンスのストレージタイプによって異なります。次の表に、ストレージ容量の拡張に必要な時間を示します。 ApsaraDB RDS コンソール にログインし、左側のナビゲーションウィンドウで [タスクセンター] をクリックすると、ストレージ容量拡張の進捗状況を表示できます。
ストレージタイプ
期間
説明
プレミアムローカル SSD
シナリオによって異なります
RDS インスタンスのストレージリソースがビジネス要件を満たせない場合、インスタンス間のデータ移行がトリガーされる可能性があり、ストレージ容量の拡張に必要な時間は複数の要因によって異なります。オフピーク時にストレージ容量を拡張することをお勧めします。
仕様変更を行うと、約 30 秒間続く 一時的な切断 が発生します。オフピーク時に RDS インスタンスの仕様を変更することをお勧めします。また、アプリケーションが RDS インスタンスに自動的に再接続するように構成されていることを確認してください。一時的な切断 中は、データベース、アカウント、ネットワーク設定に関連するほとんどの操作を実行できません。
クラウドディスク
約 5 分
RDS インスタンスで MySQL または PostgreSQL を実行し、クラウドディスクを使用している場合、RDS インスタンスのストレージ容量を拡張しても 一時的な切断 は発生しません。
RDS インスタンスで SQL Server を実行し、クラウドディスクを使用している場合、RDS インスタンスのストレージ容量を拡張する と、約 30 秒間続く 一時的な切断 が発生する可能性があります。一時的な切断 中は、RDS インスタンスでデータベース、アカウント、ネットワーク設定に関連するほとんどの操作を実行できません。オフピーク時に RDS インスタンスのストレージ容量を拡張することをお勧めします。または、アプリケーションが RDS インスタンスに自動的に再接続するように構成されていることを確認してください。特定の RDS インスタンスは、データ損失なしでストレージ容量の拡張をサポートしています。これは ワークロード を中断しません。
原因 2 に対応する対処方法
O&M の推奨事項
RDS インスタンスがロックされないように、次の構成を実行することをお勧めします。
支払い遅延とインスタンスの有効期限切れに関する通知ポリシーを構成します。
ApsaraDB RDS コンソール にログインします。
右上隅にある
アイコンをクリックして、[メッセージセンター] ページに移動します。左側のナビゲーションウィンドウで、[共通設定] をクリックします。
[共通設定] ページの [通知タイプ] 列で、[製品の支払い遅延、停止、および差し迫ったリリースの通知] を選択し、[変更] をクリックします。
[連絡先の変更] ダイアログボックスで、アラート連絡先を選択し、[保存] をクリックします。
ストレージ使用量のアラートルール を構成します。ストレージ使用率が 90% を超えたときにアラートがトリガーされるアラートルールを構成することをお勧めします。
SQL エクスプローラーと監査機能を有効にする。ストレージ使用量が大幅に増加した場合、[監視とアラート] ページの情報に基づいて、増加中に実行された SQL 文をクエリし、SQL 文を最適化できます。
自動ストレージ拡張を構成します。RDS インスタンスのストレージリソースが不足している場合、システムは RDS インスタンスのストレージ容量を自動的に拡張します。詳細については、「ApsaraDB RDS for MySQL インスタンスの自動ストレージ拡張を構成する」、「ApsaraDB RDS for PostgreSQL インスタンスの自動ストレージ拡張を構成する」、および「ApsaraDB RDS for SQL Server インスタンスの自動ストレージ拡張を構成する」をご参照ください。
大きな一時ファイルが使用されるシナリオでは、ORDER BY 句と GROUP BY 句が頻繁に使用されないように SQL 文を最適化します。
RDS インスタンスから大量のデータを削除した後も LOCK_WRITE_GROWTH が有効になっているのはなぜですか?
DELETE 文を実行してデータを削除すると、システムは削除されたレコードまたはデータページを再利用可能としてマークします。この場合、システムはディスクファイルのサイズを直接縮小して表領域を再利用することはありません。表領域を解放する場合は、「OPTIMIZE TABLE 文を使用して ApsaraDB RDS for MySQL インスタンスの表領域を解放する方法」に記載されている操作を実行します。
インスタンスに十分なストレージリソースがあり、更新されているにもかかわらず、RDS インスタンスがまだロックされているのはなぜですか?
RDS インスタンスのタスク (構成変更タスクなど) が進行中です。タスクが完了すると、RDS インスタンスのロックは自動的に解除されます。
[基本情報] ページの右上隅にある 前提条件 アイコンをクリックして [タスク] ページに移動 し、タスクの進捗状況を表示できます。
RDS インスタンスがロック状態のときに、インスタンスの構成を スペックアップ または スペックダウン できますか?
RDS インスタンスのストレージ容量が不足しているためにインスタンスがロックされている場合は、RDS インスタンスの構成を スペックアップ または スペックダウン できます。支払い遅延などの他の理由で RDS インスタンスがロックされている場合は、支払い遅延を解消してから、RDS インスタンスの構成を スペックアップ または スペックダウン する必要があります。
ロック状態の RDS インスタンスは、廃止されたインスタンスタイプを使用しています。ストレージ容量を拡張してインスタンスのロックを解除するにはどうすればよいですか?
RDS インスタンスのインスタンスタイプを使用可能なインスタンスタイプに変更し、ストレージ容量を拡張してインスタンスのロックを解除する必要があります。使用可能なインスタンスタイプの詳細については、「プライマリインスタンスタイプのリスト」をご参照ください。
ロック状態のインスタンスのストレージ使用量が引き続き増加するのはなぜですか?
INSERT 操作または UPDATE 操作を実行しても、ロック状態のインスタンスにデータを書き込むことはできません。ただし、インスタンスでクエリ操作を実行すると、ログファイルまたは一時データが生成され、インスタンスのストレージ使用量が増加する可能性があります。