問題の説明
RDS インスタンスの 基本情報 ページで、RDS インスタンスのステータスの値が [ロック中] になっています。
インスタンスが [ロック済み] の場合、データの [INSERT] または [UPDATE] はできません。
説明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というエラーメッセージが表示されます。RDS インスタンスが MySQL 5.1 または MySQL 5.5 を実行し、任意のマイナーエンジンバージョンを使用している場合、ロックの原因に関係なく RDS インスタンスで操作を実行することはできません。これは、MySQL 5.6、MySQL 5.7、または MySQL 8.0 を実行し、20190815 より前のマイナーエンジンバージョンを使用する RDS インスタンスにも適用されます。
一般的な原因
原因 1: RDS インスタンスのストレージ容量が使い果たされました。
原因 2: Alibaba Cloud アカウントに支払い遅延があるか、RDS インスタンスの有効期限が切れています。
インスタンスのストレージ領域が一杯になった場合の対処
RDS インスタンスの 基本情報 ページに移動して、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 = '<Database name>' ORDER BY DATA + 0 DESC;データベースで
DROP TABLE <Table name>;文を実行してデータを削除します。システムが 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 <Table name>;文を実行してデータを削除します。システムが RDS インスタンスのロックを解除するまで約 5 分間待ちます。
SQL Server
ApsaraDB RDS for SQL Server インスタンスのストレージ不足の問題をトラブルシューティングするで提供されている操作を実行します。
undolog_size 標準メトリックで示されるシステムファイル
原因: InnoDB テーブルをクエリするために長時間実行される文が実行され、クエリ中に大量のテーブルデータが変更されると、システムは過剰な undo ログを生成し、多くのストレージリソースを占有します。その結果、ストレージ容量が使い果たされます。
解決策: システムファイルの蓄積によるストレージ不足のトラブルシューティングで提供されている手順に基づいて問題を解決します。
RDS インスタンスのストレージ容量を拡張する
[インスタンス] ページに移動します。上部のナビゲーションバーで、RDS インスタンスが存在するリージョンを選択します。次に、RDS インスタンスを見つけて、インスタンスの ID をクリックします。
基本情報 ページの 設定情報 セクションで、設定を変更する をクリックしてストレージ容量を拡張します。
支払いが完了したら、[タスクセンター] に移動して、構成変更の進行状況を表示できます。
ストレージ容量の拡張に必要な時間は、RDS インスタンスのストレージタイプによって異なります。次の表に、ストレージ容量の拡張に必要な時間を示します。ApsaraDB RDS コンソールにログインし、左側のナビゲーションウィンドウで [タスクセンター] をクリックして、ストレージ容量拡張の進行状況を表示できます。
ストレージタイプ
期間
説明
プレミアムローカル SSD
シナリオによって異なります
RDS インスタンスのストレージリソースがビジネス要件を満たせない場合、インスタンス間のデータ移行がトリガーされる可能性があり、ストレージ容量の拡張に必要な時間は複数の要因によって異なります。オフピーク時にストレージ容量を拡張することをお勧めします。
仕様の変更により、約 30 秒間続く一時的な切断が発生します。RDS インスタンスの仕様はオフピーク時に変更することをお勧めします。さらに、アプリケーションが RDS インスタンスに自動的に再接続するように構成されていることを確認してください。一時的な切断中は、データベース、アカウント、ネットワーク設定に関連するほとんどの操作を実行できません。
クラウドディスク
約 5 分
RDS インスタンスが MySQL または PostgreSQL を実行し、クラウドディスクを使用している場合、RDS インスタンスのストレージ容量を拡張しても一時的な切断は発生しません。
RDS インスタンスが SQL Server を実行し、クラウドディスクを使用している場合、RDS インスタンスのストレージ容量を拡張すると、約 30 秒間続く一時的な切断が発生する可能性があります。一時的な切断中は、RDS インスタンスでデータベース、アカウント、ネットワーク設定に関連するほとんどの操作を実行できません。RDS インスタンスのストレージ容量はオフピーク時に拡張することをお勧めします。または、アプリケーションが RDS インスタンスに自動的に再接続するように構成されていることを確認してください。特定の RDS インスタンスは、データ損失なしでストレージ容量の拡張をサポートしています。これにより、ワークロードが中断されることはありません。
支払い遅延またはインスタンスの有効期限切れへの対処
O&M の提案
RDS インスタンスがロックされるのを防ぐために、次の構成を実行することをお勧めします:
支払い遅延とインスタンスの有効期限切れの通知ポリシーを構成します。
ApsaraDB RDS コンソールにログインします。
右上隅の
アイコンをクリックして、[メッセージセンター] ページに移動します。左側のナビゲーションウィンドウで、[共通設定] をクリックします。
[共通設定] ページの [通知タイプ] 列で、[製品の支払い遅延、停止、および間近のリリース通知] を選択し、[変更] をクリックします。
[連絡先の変更] ダイアログボックスで、通知する連絡先を [選択] し、[保存] をクリックして構成を完了します。
ストレージ使用率のアラートルールを構成します。ストレージ使用率が 90% を超えたときにアラートがトリガーされるアラートルールを構成することをお勧めします。
SQL Explorer と監査機能を有効にする。ストレージ使用率が大幅に増加した場合、[モニタリングとアラート] ページの情報に基づいて増加中に実行された 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 コマンドを使用して MySQL インスタンスの表領域を解放するで提供されている操作を実行してください。
インスタンスに十分なストレージリソースがあるか、更新されているにもかかわらず、RDS インスタンスがまだロックされているのはなぜですか?
RDS インスタンスで構成変更タスクなどのタスクが進行中です。タスクが完了すると、RDS インスタンスは自動的にロック解除されます。基本情報ページの右上隅にある
アイコンをクリックしてタスクリスト ページに移動し、タスクの進行状況を表示できます。
インスタンスがロック状態のときに、RDS インスタンスの構成をスペックアップまたはスペックダウンできますか?
インスタンスのストレージ容量が使い果たされたために RDS インスタンスがロックされている場合は、RDS インスタンスの構成をスペックアップまたはスペックダウンできます。支払い遅延などの他の理由で RDS インスタンスがロックされている場合は、支払い遅延を完了してから、RDS インスタンスの構成をスペックアップまたはスペックダウンする必要があります。
ロック状態の RDS インスタンスが廃止されたインスタンスタイプを使用しています。ストレージ容量を拡張してインスタンスのロックを解除するにはどうすればよいですか?
RDS インスタンスのインスタンスタイプを利用可能なインスタンスタイプに変更してから、RDS インスタンスのストレージ容量を拡張する必要があります。利用可能なインスタンスタイプの詳細については、「プライマリ ApsaraDB RDS インスタンスタイプ」をご参照ください。
ロック状態のインスタンスのストレージ使用量が増え続けるのはなぜですか?
ロック状態のインスタンスに [INSERT] または [UPDATE] 操作を実行してデータを書き込むことはできません。ただし、インスタンスでクエリ操作が実行されると、ログファイルまたは一時データが生成され、インスタンスのストレージ使用量が増加する可能性があります。