ApsaraDB RDS for MySQL インスタンスの一時ファイルによりストレージ容量が不足すると、データ損失を防止するため、自動的にロック済み状態に移行します。この状態では、書き込み操作がブロックされます。本トピックでは、インスタンスのロック解除方法および再発防止策について説明します。
一時ファイルによるストレージ不足の原因
MySQL は、ソート(ORDER BY)、グループ化(GROUP BY)、またはテーブル結合を含むクエリを実行する際に、一時ファイルを生成します。また、大規模トランザクションのバイナリログ(binlog)キャッシュファイルも、トランザクションのコミット待ち中にストレージを消費します。
ストレージ容量が満杯になると、ApsaraDB RDS for MySQL は自動的にインスタンスをロックします。
インスタンスのロック解除
オプション 1:ストレージ容量の拡張(推奨)
インスタンスのストレージ容量を拡張します。容量拡張が有効になると、約 5 分後にインスタンスは自動的にロック解除されます。
手順については、「ApsaraDB RDS for MySQL インスタンスの仕様変更」をご参照ください。
オプション 2: バージョン別の一時ファイルのクリア
ストレージ容量の拡張ができない場合、ご利用の MySQL バージョンに応じた対応を行ってください。
MySQL 5.7 以前:インスタンスを再起動します。[インスタンスの再起動] ボタンが選択不可(グレーアウト)の場合の対応については、「よくある質問」をご参照ください。
MySQL 8.0:インスタンスがロック状態になると、すべてのセッションが自動的に終了し、関連するトランザクションはロールバックされます。ロールバック完了後にストレージが解放されます。ロールバックの持続時間は、トランザクション内で実行されたクエリの内容に依存します。
オプション 3:セッションの特定と終了(依然としてロック中の場合)
上記の対応を試行してもインスタンスがロック状態のままである場合は、Data Management (DMS) を使用して、ストレージを消費しているセッションを特定・終了してください。
Data Management (DMS) を使用して、インスタンスに接続します。
次の文を実行して、アクティブセッションの一覧を表示します:
show processlist結果を [State] 列で並べ替えます。[State] 列に「Copy to tmp table」または「Sending data」と表示されているセッションを特定し、その ID を記録します。

各セッションを終了するには、以下の文を実行し、
[$ID]をセッション ID に置き換えます:kill [$ID];
セッションを終了する前に、サービスへの影響がないことを確認してください。
インスタンスが再度ロックされるのを防ぐ
インスタンスのロックが解除された後は、以下の手順を実施して再発を防止してください。
ストレージの自動拡張を有効化
ストレージの自動拡張を設定して、使用量がしきい値に達したときにシステムがストレージを拡張するようにします。詳細については、「ApsaraDB RDS for MySQL インスタンスのストレージの自動拡張を設定する」をご参照ください。
一時ファイルの生成量削減
大規模データセットに対して
ORDER BYやGROUP BYを頻繁に使用しないよう、クエリを最適化します。EXPLAINを使用して、クエリが内部一時テーブルを使用しているかどうかを確認します。Extraフィールドに「Using temporary」が表示されているかを確認してください:explain select * from alarm group by created_on order by default;
tmp_table_sizeおよびmax_heap_table_sizeを業務要件に応じて増加させることも可能ですが、推奨しません。ディスク領域の節約よりも、メモリの可用性を優先してください。
binlog キャッシュの使用量削減
大規模トランザクションを小規模な単位に分割し、複数の接続で同時に大規模トランザクションを実行しないようにします。
大規模トランザクションの実行には短時間接続を使用します。これにより、binlog キャッシュファイルに確保されるストレージ量を削減できます。
binlog_cache_sizeを業務要件に応じて増加させることも可能ですが、ディスク領域の節約を目的としたbinlog_cache_sizeの増加は推奨しません。
ディスク使用率の監視
ディスク使用率を 80 % 未満に保ちます。不要なデータは定期的に削除するか、大規模なデータセットを複数のインスタンスに分割して保存してください。インスタンスのロック発生前に高ディスク使用率を検知できるよう、アラートを設定します。
次のステップ
一時ファイルを削除した後もインスタンスがロック状態のままである場合、他の種類のファイルがストレージを消費している可能性があります。以下をご参照ください。
よくある質問
基本情報ページで [インスタンスの再起動] ボタンが選択不可(グレーアウト)になっています。インスタンスを再起動するにはどうすればよいですか?
再起動を必要とするパラメーターを変更することで、再起動をトリガーできます。
[インスタンス] ページに移動し、インスタンスが存在するリージョンを選択して、該当インスタンスを見つけ、その ID をクリックします。
左側のナビゲーションウィンドウで、[パラメーター] をクリックします。
[編集可能パラメーター] タブで、[強制再起動] 列に [はい] があるパラメーターを見つけ、その値を変更して再起動をトリガーします。