スキップしてコンテンツを表示

ストレージの自動スケーリングを有効化した後に、Amazon RDS DB インスタンスが storage-full 状態になったり、空きストレージ容量が少なくなったりする理由を知りたいです。

所要時間2分
0

Amazon Relational Database Service (Amazon RDS) DB インスタンスでストレージの自動スケーリングを有効にしましたが、空きストレージ容量が 10% 未満になったり、インスタンスが storage-full 状態になったりします。

簡単な説明

DB インスタンスのストレージを変更すると、その DB インスタンスは storage-optimization 状態に移行します。ストレージの最適化は通常、完了するまでに数分かかりますが、24 時間以上かかる可能性もあります。プロセスの監視には、Amazon Elastic Compute Cloud (Amazon EC2) コンソールを使用します。

注: 最後のストレージ変更から 6 時間、またはストレージ最適化の完了のうち、長い方の時間が経過するまでは、追加のストレージ変更はできません。

ストレージ最適化中は、空きストレージ容量が 10% 未満であっても、自動スケーリングでは DB インスタンスのストレージを増やすことはできません。

自動スケーリングを使用して DB インスタンスのストレージを増やすと、追加のストレージは、次のうち最も大きい値で増加します。

  • 10 GiB
  • 現在割り当てられているスペースの 10%
  • 過去 1 時間のFreeStorageSpace メトリクスに基づく。予測される 7 時間分のストレージ増加

1 時間以内に 50 GB のデータをロードする場合、ストレージを 10% 増やすだけでは不十分です。前回の自動スケーリング操作は storage-optimization 状態になっているため、プロセスが完了するまでは DB インスタンスでストレージを変更できません。その結果、DB インスタンスが最長で数時間 storage-full ステータスになる可能性があります。

解決策

RDS DB インスタンスのストレージを変更できない場合は、インスタンスのステータスを確認します。DB インスタンスの状態が storage-full または available である場合は、直近 6 時間にストレージの変更が発生したかどうかを確認します。ストレージ増加操作が最近実行されたかどうかを確認するには、DB インスタンスのイベントに次のメッセージがないか確認します。

「Finished applying modification to allocated storage」 (割り当てたストレージに変更を適用しました)

または、

「Finished applying autoscaling-initiated modification to allocated storage」 (割り当てたストレージに、自動スケーリングが起動した変更を適用しました)

DB インスタンスの状態が storage-optimization である場合は、大容量の Amazon Elastic Block Store (Amazon EBS) ストレージを持つ DB インスタンスにデータベースを復元します。

注: DB インスタンスが storage-full 状態の場合、最初に DB インスタンスへのデータロードをすべて停止する必要があります。このプロセスでは、インスタンスが storage-full 以外の状態になるまでに数分から数時間かかる可能性があります。

DB インスタンスが storage-full 状態ではない場合は、次のいずれかの方法で DB インスタンスのストレージサイズを変更します。

  • オプション 1 DB インスタンスのリードレプリカを作成してプロモートします。
  • オプション 2 手動で DB スナップショットを取り、指定した時点に DB インスタンスを復元します。
  • オプション 3 FreeStorageSpace が少なくなっているため、自動スケーリングを無効化します。

注: オプション 1 と 2 では、データベースでダウンタイムが発生します。ただし、オプション 1 の方がオプション 2 よりもダウンタイムが短くなります。リードレプリカは、MariaDB、Microsoft SQL Server、MySQL、Oracle、PostgreSQL DB エンジンでサポートされています。

RDS DB インスタンスのリードレプリカを作成してプロモートする

次の手順を実行します。

  1. DB インスタンスのリードレプリカを作成します。
  2. リードレプリカのストレージ容量を増やします。デフォルトでは、Amazon RDS ストレージの自動スケーリングはリードレプリカでは無効になっています。
  3. アクティブな DB インスタンスの名前を別の名前に変更します。変更すると、受信トラフィックが停止します。
  4. リードレプリカの名前を、アクティブな DB インスタンスに使用していた名前に変更します。変更すると、リードレプリカのエンドポイントがアクティブな DB インスタンスと同じになり、アプリケーションを再設定する必要がなくなります。
  5. リードレプリカをプロモートします

注: アプリケーションまたはクライアントでは、ステップ 3 ~ 5 の間にデータベースのダウンタイムが発生します。

手動 DB スナップショットを取り、RDS DB インスタンスを指定した時点に復元する

次の手順を実行します。

  1. アクティブな DB インスタンスの名前を変更して受信トラフィックを停止させ、storage-full 状態にならないようにします。DB インスタンスが storage-full 状態の場合は、次のステップに進むことはできません。
  2. DB インスタンスの DB スナップショットを作成します
    注: スナップショットは、復元された DB インスタンスが storage-optimization のストレージ変更イベントにより影響を受けることを防ぎます。
  3. DB インスタンスをある時点に復元するには、復元可能な最新の時刻を選択します。インスタンス識別子には、アクティブな DB インスタンスが使用していた名前を入力します。
    注: 自動スケーリングによる storage-optimization の発生を防ぐために、自動スケーリングは有効にしないでください。
  4. (オプション) 復元した DB インスタンスを変更し、カスタムセキュリティグループを含めます。デフォルトのデータベースセキュリティグループが新しい DB インスタンスに適用されます。
  5. 新しい DB インスタンスのストレージ容量を増やします

注: アプリケーションまたはクライアントでは、ステップ 1 ~ 4 の間にデータベースのダウンタイムが発生します。

FreeStorageSpace が少なくなっているため、自動スケーリングを無効化する

自動スケーリングを無効にすると、追加のストレージは自動的に割り当てられません。ストレージ割り当てを手動で制御できます。たとえば、自動スケーリングではストレージが 10% 増加するものの、自動スケーリングイベントが開始される前に 10% 以上追加する必要があると仮定します。このシナリオでは、自動スケーリングを無効にします。

自動スケーリングを無効にするには、次の手順を実行します。

  1. Amazon RDS コンソールを開きます。
  2. ナビゲーションペインで [データベース] を選択し、該当するデータベースを選択します。
  3. [変更] を選択します。
  4. [ストレージ][追加のストレージ設定][ストレージの自動スケーリングを有効にする] を選択解除します。
  5. [続行] を選択します。
  6. [すぐに適用] または [次回の定期メンテナンス時間中に適用] を選択します。
  7. [DB インスタンスの変更] を選択します。

注: FreeStorageSpace メトリクスが 5 分以上にわたって 10% 未満になると、自動スケーリングが開始されます。Auto Scaling は、最後のストレージ変更 (storage-modification) から 6 時間以上経過したときか、インスタンスでストレージの最適化 (storage-optimization) が完了したときのうち、長い方の時間が経過したときにも開始されます。

関連情報

Amazon RDS for PostgreSQL で「No space left on device」や「DiskFull」というエラーが発生する理由を知りたいです

Amazon RDS for Oracle DB インスタンスが想定よりも多くのストレージを使用している理由を教えてください

Amazon RDS for MySQL インスタンスが想定よりも多くのストレージを使用している理由を教えてください

Amazon RDS for SQL Server DB インスタンスのストレージ消費を最適化する方法を教えてください

AWS公式更新しました 9ヶ月前
コメントはありません

関連するコンテンツ