Storage SSD 1000GBのRDS(Postgres)インスタンスがありますが、データのサイズは100GBのみです。
RDSのストレージリソースを簡単に縮小するにはどうすればよいですか?
RDSでは、データベースインスタンスに割り当てられるストレージの量を減らすことはできません。増やすだけです。
データベースを少ないストレージに移動するには、目的のストレージスペースで新しいRDSインスタンスを作成し、pg_dump/pg_restoreなどを使用して、古いデータベースから新しいデータベースにデータを移動する必要があります。
1,000 GBのSSDストレージを備えたRDSインスタンスの基本IOPSは3,000であることにも注意してください。 100 GBのSSDストレージを備えたRDSインスタンスのベースIOPSは300で、バーストは時々最大3,000です。
AWSのヘルプ here に基づいて、これは私のために働いた完全なプロセスです:
1)データベースをファイルにダンプします:データベースにネットワークアクセスできるマシンでこれを実行します:pg_dump -Fc -v -h your-rds-endpoint.us-west-2.rds.amazonaws.com -U your-username your-databasename > your-databasename.dump
2)AWSコンソールで、ストレージが小さい新しいRDSインスタンスを作成します。 (おそらく、同じユーザー名、パスワード、およびデータベース名でセットアップする必要があります。)
3)新しいRDSインスタンスでデータベースを復元します:次のコマンドを実行します(明らかに前のコマンドと同じマシンで):pg_restore -v -h the-new-rds-endpoint.us-west-2.rds.amazonaws.com -U your-username -d your-databasename your-databasename.dump
(ステップ3では、新しいRDSインスタンスのエンドポイントを使用していることに注意してください。また、エンドポイントアドレスの末尾に:5432
がないことに注意してください。)
AmazonはRDSインスタンスのHDDのサイズを減らすことを許可していません。ストレージのサイズを減らすために2つのオプションがあるかもしれません。
1:-ダウンタイムに余裕がある場合は、古いインスタンスのmysqldumpバックアップを、ストレージサイズの小さい新しいインスタンスに復元できます。
2:-データベース移行サービスを使用して、ダウンタイムなしでインスタンス間でデータを移動できます。
RDSを使用する場合、一般的なハードウェアの「容量計画」を行う代わりに、短期または中期(依存)に十分なディスク領域をプロビジョニングし、必要に応じて拡張します。
@Mark Bが述べたように、IOPSにも注意する必要があります。高性能のDBが必要な場合は、「プロビジョニングされたIOPS」を使用できます。
ディスクスペースのストレージ部分にジャンプする前に、コストとパフォーマンスの調整を行う必要があります。例えば。 1000GBを120GBに削減すると、米国西部では0.125x 880GB = 110 /月の節約になります。ただし、最大IOPSは120x 3 = 360IOPSになります
追加のIOPSをプロビジョニングしてパフォーマンスを向上させるには、0.10ドルかかります。より高いオンラインユーザーレスポンスのために実際に800IOPSが必要な場合は、
(800-360)x 0.10 = $ 44。したがって、実際の節約は最終的に「少なくなる」可能性があります。 RDSで一定の1100 IOPSが必要な場合は、費用を節約できません。また、他の割引係数が関係する場合もあります。
これを行うには、DBをAuroraに移行します。
Auroraが不要な場合は、データ移行サービスが最適だと思います。本番環境をAuroraに移行するので、これは問題ではなく、pg_dump
またはDMSを使用していつでもAuroraから戻すことができます。 (これはMySQLにも当てはまると思いますが、テストしていません。)
私の具体的な目標は、最初はそれぞれ1TB以上のストレージで作成されたいくつかのインスタンスを廃止した後、RDS Postgresの最終スナップショットのサイズを減らすことでした。
必要に応じて3で停止し、Aurora DBをそのまま使用できます。